查看SQL执行频率
MySQL 客户端连接成功后,通过 show [session|global] status 命令可以查看服务器状态信息。通
过查看状态信息可以查看对当前数据库的主要操作类型。
1. --下面的命令显示了当前 session 中所有统计参数的值 2. show session status like 'Com_______'; -- 查看当前会话统计结果 3. show global status like 'Com_______'; -- 查看自数据库上次启动至今统计结果 4. 5. show status like 'Innodb_rows_%’; -- 查看针对Innodb引擎的统计结果 6.
定位低效率执行SQL
可以通过以下两种方式定位执行效率较低的 SQL 语句。
慢查询日志 : 通过慢查询日志定位那些执行效率较低的 SQL 语句。
show processlist:该命令查看当前MySQL在进行的线程,包括线程的状态、是否锁表等,可以
实时地查看 SQL 的执行情况,同时对一些锁表操作进行优化。
定位低效率执行SQL-慢查询日志
1. -- 查看慢日志配置信息 2. show variables like '%slow_query_log%’; 3. 4. -- 开启慢日志查询 5. set global slow_query_log=1; 6. 7. -- 查看慢日志记录SQL的最低阈值时间 8. show variables like 'long_query_time%’; 9. 10. -- 修改慢日志记录SQL的最低阈值时间 11. set global long_query_time=4; 12.
定位低效率执行SQL-show processlist
show processlist;
1. 1) id列,用户登录mysql时,系统分配的"connection_id",可以使用函数connection_id()查看 2. 3. 2) user列,显示当前用户。如果不是root,这个命令就只显示用户权限范围的sql语句 4. 5. 3) host列,显示这个语句是从哪个ip的哪个端口上发的,可以用来跟踪出现问题语句的用户 6. 7. 4) db列,显示这个进程目前连接的是哪个数据库 8. 9. 5) command列,显示当前连接的执行的命令,一般取值为休眠(sleep),查询(query),连接(connect)等 10. 11. 6) time列,显示这个状态持续的时间,单位是秒 12. 13. 7) state列,显示使用当前连接的sql语句的状态,很重要的列。state描述的是语句执行中的某一个状态。一个sql语句,以查询为例,可能需要经过copying to tmp table、sorting result、sending data等状态才可以完成 14. 15. 8) info列,显示这个sql语句,是判断问题语句的一个重要依据