源码家族
当前位置:首页 > 资讯中心

资讯中心

【 MySQL 调优 SQL 优化步骤 】

发布时间:2021-06-29 14:57:01 阅读次数:174

当面对一个需要优化的 SQL 时,我们有哪些方式可以入手呢?接下来帮大家梳理一下。

通过 show status 命令了解 SQL 执行次数

首先,我们可以使用 show status 命令查看服务器状态信息。show status 命令会显示每个服务器变量 variable_name 和 value,状态变量是只读的。如果使用 SQL 命令,可以使用 like 或者 where 条件来限制结果。like 可以对变量名做标准模式匹配。

图片

图我没有截全,下面还有很多变量,读者可以自己尝试一下。也可以在操作系统上使用 mysqladmin extended-status 命令来获取这些消息。

但是我执行 mysqladmin extended-status 后,出现这个错误。

图片

应该是我没有输入密码的原因,使用 mysqladmin -P3306 -uroot -p -h127.0.0.1 -r -i 1 extended-status 后,问题解决。

这里需要注意一下 show status 命令中可以添加统计结果的级别,这个级别有两个

  • session 级:默认当前链接的统计结果

  • global 级:自数据库上次启动到现在的统计结果

如果不指定统计结果级别的话,默认使用 session 级别。

对于 show status 查询出来的统计结果,有两类参数需要注意下,一类是以 Com_ 为开头的参数,一类是以 Innodb_ 为开头的参数。

下面是 Com_ 为开头的参数,参数很多,我同样没有截全。

图片

Com_xxx 表示的是每个 xxx 语句执行的次数,我们通常关心的是 select 、insert 、update、delete 语句的执行次数,即

  • Com_select:执行 select 操作的次数,一次查询会使结果 + 1。

  • Com_insert:执行 INSERT 操作的次数,对于批量插入的 INSERT 操作,只累加一次。

  • Com_update:执行 UPDATE 操作的次数。

  • Com_delete:执行 DELETE 操作的次数。

以 Innodb_ 为开头的参数主要有

  • Innodb_rows_read:执行 select 查询返回的行数。

  • Innodb_rows_inserted:执行 INSERT 操作插入的行数。

  • Innodb_rows_updated:执行 UPDATE 操作更新的行数。

  • Innodb_rows_deleted:执行 DELETE 操作删除的行数。

通过上面这些参数执行结果的统计,我们能够大致了解到当前数据库是以更新(包括插入、删除)为主还是查询为主。

除此之外,还有一些其他参数用于了解数据库的基本情况。

  • Connections:查询 MySQL 数据库的连接次数,这个次数是不管连接是否成功都算上。

  • Uptime:服务器的工作时间。

  • Slow_queries:满查询次数。

  • Threads_connected:查看当前打开的连接的数量。


下一篇:查找执行效率较低的 SQL