如何查看 SQL 执行频率

本文介绍了如何在MySQL中查看SQL执行频率,通过`show status`命令观察Com_XXX参数,以及如何定位低效率SQL,如使用慢查询日志和`show processlist`。此外,还详细讲解了使用`explain`分析执行计划,包括id、select_type、table和type等关键字段的含义,帮助优化查询性能。
摘要由CSDN通过智能技术生成

引言
在应用的开发过程中,由于初期数据量小,开发人员写 SQL 语句时更重视功能上的实现,但是当应用系统正式上线后,随着生产数据量的急剧增长,很多SQL语句开始逐渐显露出性能问题,对生产的影响也越来越大,此时这些有问题的SQL语句就成为整个系统性能的瓶颈,因此我们必须要对它们进行优化,本章将详细介绍在MySQL中优化SQL语句的方法。

当面对一个有SQL性能问题的数据库时,我们应该从何处入手来进行系统的分析,使得能够尽快定位问题SQL并尽快解决问题。

4.1 如何查看 SQL 执行频率

MySQL 客户端连接成功后,通过

-- 服务器状态信息
show [session|global] status;

命令可以提供服务器状态信息。show [session|global] status 可以根据需要加上参数 “session” 或者 “global” 来显示 session 级(当前连接)的统计结果和 global 级(自数据库上次启动至今)的统计结果。

如果不写,默认使用参数是 “session”。

下面的命令显示了当前 session 中所有统计参数的值:

show status like 'Com_______';

show status like 'Innodb_rows_%';

 Com_xxx 表示每个 xxx 语句执行的次数,我们通常比较关心的是以下几个统计参数。

参数 含义
Com_select 执行 select 操作的次数,一次查询只累加 1。
Com_insert 执行 INSERT 操作的次数,对于批量插入的 INSERT 操作,只累加一次。
Com_update 执行 UPDATE 操作的次数。
Com_delete 执行 DELETE 操作的次数。
Innodb_rows_read select 查询返回的行数。
Innodb_rows_inserted 执行 INSERT 操作插入的行数。
Innodb_rows_updated 执行 UPDATE 操作更新的行数。
Innodb_rows_deleted 执行 DELETE 操作删除的行数。
Connections 试图连接 MySQL 服务器的次数。
Uptime 服务器工作时间。
Slow_queries 慢查询的次数。

Com_*** : 这些参数对于所有存储引擎的表操作都会进行累计。

Innodb_*** : 这几个参数只是针对 InnoDB 存储引擎的,累加的算法也略有不同。

4.2 如何定位低效率 SQL

以下两种方式:

  • 慢查询日志(重要) : 通过慢查询日志定位那些执行效率较低的 SQL 语句,用 --log-slow-queries [=file_name] 选项启动时,mysqld 写一个包含所有执行时间超过 long_query_time 秒的 SQL 语句的日志文件。

    tips:

    关于慢查询 SQL 如何获取

    参看上个章节

  • show processlist (重要) :

    慢查询日志在查询结束以后才记录,所以在应用反映执行效率出现问题的时候查询慢查询日志并不能定位问题。

    可以使用 show processlist 命令查看当前 MySQL

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值