1. 通过 show status 命令了解各种 SQL 的执行频率

MySQL 客户端连接成功后,通过 SHOW [SESSION | GLOBAL] STATUS 命令可以提供服务器状态信息,也可以在操作系统上使用 mysqladmin extended-status 命令获得这些消息。

SHOW STATUS 可以根据需要加上参数 “SESSION” 或者 “GLOBAL” 来显示 session 级(当前连接)和 global 级(自数据库上次启动至今)的统计结果。

如果不写,默认使用的参数是 “SESSION

SHOW STATUS WHERE Variable_name IN ("Com_select", "Com_insert", "Com_update", "Com_delete");

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

  • Com_select:执行 SELECT 操作的次数,一次查询只累加 1。

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

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

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

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

SHOW STATUS WHERE Variable_name LIKE "Innodb_rows_%";

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

  • Innodb_rows_read:SELECT 查询返回的行数。

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

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

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

通过以上几个参数,可以很容易地了解当前数据库的应用是以插入更新为主还是以查询操作为主,以及各种类型的 SQL 大致的执行比例是多少。对于更新操作的计数,是对执行次数的计数,不论提交还是回滚都会进行累加。

对于事务型的应用,通过 Com_commit Com_rollback 可以了解事务提交和回滚的情况,对于回滚操作非常频繁的数据库,可能意味着应用编写存在问题。

此外,以下几个参数便于用户了解数据库的基本情况。

  • Connections:试图连接 MySQL 服务器的次数。

  • Uptime:服务器工作时间。

  • Slow_queries:慢查询的次数。

SHOW STATUS WHERE Variable_name IN ("Com_commit", "Com_rollback", "Connections", "Uptime", "Slow_queries");

最后更新于