MySQL 的 `wait_timeout` 参数有什么作用?

推荐答案

wait_timeout 是 MySQL 中的一个系统变量,用于控制服务器在关闭非交互式连接之前等待活动的秒数。如果在该时间内没有活动,MySQL 将自动关闭该连接。

本题详细解读

1. wait_timeout 的作用

wait_timeout 参数主要用于管理 MySQL 服务器与客户端之间的非交互式连接的超时时间。非交互式连接通常是指通过脚本或应用程序建立的连接,而不是通过 MySQL 命令行客户端手动建立的连接。

2. 默认值

在 MySQL 中,wait_timeout 的默认值通常是 28800 秒(即 8 小时)。这意味着如果某个非交互式连接在 8 小时内没有任何活动,MySQL 将自动关闭该连接。

3. 设置 wait_timeout

可以通过以下方式设置 wait_timeout 的值:

  • 全局设置:可以通过修改 MySQL 配置文件(如 my.cnfmy.ini)来设置全局的 wait_timeout 值。例如:

    这将把 wait_timeout 设置为 600 秒(10 分钟)。

  • 会话级别设置:可以在会话级别动态修改 wait_timeout 的值。例如:

    这将只对当前会话生效。

4. 与 interactive_timeout 的区别

wait_timeoutinteractive_timeout 是两个类似的参数,但它们的作用对象不同:

  • wait_timeout:用于非交互式连接。
  • interactive_timeout:用于交互式连接(如通过 MySQL 命令行客户端建立的连接)。

5. 注意事项

  • 如果 wait_timeout 设置得过短,可能会导致频繁的连接断开,影响应用程序的性能。
  • 如果 wait_timeout 设置得过长,可能会导致服务器上积累大量空闲连接,占用系统资源。

6. 查看当前值

可以通过以下 SQL 语句查看当前的 wait_timeout 值:

纠错
反馈