- 功能:
SHOW PROCESSLIST 语句会显示当前 MySQL 服务器中所有活动连接的相关信息,包括正在执行的 SQL 语句。
- 示例:在 MySQL 客户端(如 MySQL 命令行工具、Navicat 等)中执行以下语句:
- 结果解读:
Id:连接的唯一标识符。
User:执行查询的用户。
Host:连接的客户端主机。
db:当前连接使用的数据库。
Command:当前执行的命令类型,如 Query 表示正在执行查询,Sleep 表示连接处于空闲状态。
Time:查询已经执行的时间(以秒为单位)。
State:查询的当前状态,如 Sorting result、Sending data 等。
Info:正在执行的 SQL 语句内容。
- 筛选特定查询:可以结合
WHERE 子句来筛选特定的连接或查询。例如,只查看执行时间超过 10 秒的查询:
SHOW PROCESSLIST WHERE Time > 10;
- 功能:
INFORMATION_SCHEMA.PROCESSLIST 表存储了与 SHOW PROCESSLIST 语句类似的信息,你可以使用 SQL 查询语句对其进行更灵活的操作。
- 示例:
SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST;
- 优势:可以使用更复杂的 SQL 操作,如排序、筛选、分组等。例如,按照执行时间降序排列,查看前 5 个执行时间最长的查询:
SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST
ORDER BY Time DESC
LIMIT 5;
- 功能:通用查询日志会记录 MySQL 服务器接收到的所有 SQL 语句,包括查询、插入、更新、删除等操作。
- 临时开启:在 MySQL 客户端中执行以下语句可以临时开启通用查询日志:
SET GLOBAL general_log = 'ON';
你可以通过以下语句查看日志文件的位置:
SHOW VARIABLES LIKE 'general_log_file';
临时开启的设置在 MySQL 服务器重启后会失效。
- 永久开启:需要修改 MySQL 的配置文件(如
my.cnf 或 my.ini)。在 [mysqld] 部分添加或修改以下配置项:
general_log = 1
general_log_file = /var/log/mysql/mysql.log
然后重启 MySQL 服务使配置生效。
- 注意事项:开启通用查询日志会对服务器性能产生一定影响,因为需要将每个 SQL 语句记录到日志文件中,不建议在生产环境长期开启。
- 功能:慢查询日志会记录执行时间超过指定阈值的 SQL 语句,通过分析慢查询日志可以找出执行效率低下的查询。
- 配置慢查询日志:
SET GLOBAL slow_query_log = 'ON';
SET GLOBAL long_query_time = 2;
- 永久开启:修改 MySQL 配置文件,在
[mysqld] 部分添加或修改以下配置项:
slow_query_log = 1
long_query_time = 2
slow_query_log_file = /var/log/mysql/mysql-slow.log
然后重启 MySQL 服务。
- 查看慢查询日志:可以使用文本编辑器打开慢查询日志文件查看其中记录的 SQL 语句。也可以使用工具(如
pt-query-digest)对慢查询日志进行分析。