注意:此问题已更新以反映我们目前正在使用 MySQL,这样做后,我想看看如果我们切换到支持 CTE 的数据库会更容易。
我有一个带有主键id
和外键的自引用表parent_id
。
+------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+------------+--------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| parent_id | int(11) | YES | | NULL | |
| name | varchar(255) | YES | | NULL | |
| notes | text | YES | | NULL | |
+------------+--------------+------+-----+---------+----------------+
Run Code Online (Sandbox Code Playgroud)
给定 a name
,如何查询顶级父级?
给定 a name
,如何查询id …
问题
我正在开发一个使用 Apache Tomcat 中的连接池与 MySQL 进行通信的应用程序。我想知道为什么要使用比默认值 28,800 秒更小的wait_timeout ?我发现减少等待超时有很多缺点,但是有什么优点呢?
背景
参数wait_timeout定义为
服务器在关闭非交互式连接之前等待该连接上的活动的秒数。
问题
如果我将 wait_timeout 设置得太小,那么 MySQL 将终止我的 Web 应用程序正在使用的连接池中仍然有效的连接。在我的情况下,我是当前在任何时候使用该应用程序的唯一人,因此当我不测试它时,数据库连接自然会处于空闲状态。我可以通过简单地将 MySQL 上的 wait_timeout 延长到非常大的值来解决这个问题,这样即使我离开办公桌 2 周,池也永远不会返回死连接。