SHOW STATUS 查看各种类型SQL执行的频率
通过 SHOW STATUS 可以提供服务器状态信息,也可以使用 mysqladmin extendedstatus 命令获得。SHOW STATUS 可以根据需要显示 session 级别的统计结果和 global级别的统计结果。
以下几个参数对 Myisam 和 Innodb 存储引擎都计数:
1. Com_select 执行 select 操作的次数,一次查询只累加 1;
2. Com_insert 执行 insert 操作的次数,对于批量插入的 insert 操作,只累加一次;
3. Com_update 执行 update 操作的次数;
4. Com_delete 执行 delete 操作的次数;
以下几个参数是针对 Innodb 存储引擎计数的,累加的算法也略有不同:
1. Innodb_rows_read select 查询返回的行数;
2. Innodb_rows_inserted 执行 Insert 操作插入的行数;
3. Innodb_rows_updated 执行 update 操作更新的行数;
4. Innodb_rows_deleted 执行 delete 操作删除的行数;
通过以上几个参数,可以很容易的了解当前数据库的应用是以插入更新为主还是
以查询操作为主,以及各种类型的 SQL 大致的执行比例是多少。对于更新操作的计数 ,是对执行次数的计数,不论提交还是回滚都会累加。
对于事务型的应用,通过 Com_commit 和 Com_rollback 可以了解事务提交和回滚的情况,对于回滚操作非常频繁的数据库,可能意味着应用编写存在问题。
此外,以下几个参数便于我们了解数据库的基本情况:
1. Connections 试图连接 Mysql 服务器的次数
2. Uptime 服务器工作时间
3. Slow_queries 慢查询的次数
以下几个参数对 Myisam 和 Innodb 存储引擎都计数:
1. Com_select 执行 select 操作的次数,一次查询只累加 1;
2. Com_insert 执行 insert 操作的次数,对于批量插入的 insert 操作,只累加一次;
3. Com_update 执行 update 操作的次数;
4. Com_delete 执行 delete 操作的次数;
以下几个参数是针对 Innodb 存储引擎计数的,累加的算法也略有不同:
1. Innodb_rows_read select 查询返回的行数;
2. Innodb_rows_inserted 执行 Insert 操作插入的行数;
3. Innodb_rows_updated 执行 update 操作更新的行数;
4. Innodb_rows_deleted 执行 delete 操作删除的行数;
通过以上几个参数,可以很容易的了解当前数据库的应用是以插入更新为主还是
以查询操作为主,以及各种类型的 SQL 大致的执行比例是多少。对于更新操作的计数 ,是对执行次数的计数,不论提交还是回滚都会累加。
对于事务型的应用,通过 Com_commit 和 Com_rollback 可以了解事务提交和回滚的情况,对于回滚操作非常频繁的数据库,可能意味着应用编写存在问题。
此外,以下几个参数便于我们了解数据库的基本情况:
1. Connections 试图连接 Mysql 服务器的次数
2. Uptime 服务器工作时间
3. Slow_queries 慢查询的次数
下面是将操作命令脚本化了,而且实时动态输出:
mysqladmin -h127.0.0.1 -r -i 2 extended-status |awk -F "|" 'BEGIN { count=0; } { if($2 ~ /Variable_name/ && ++count%15 == 1){print "----------|---------|--- MySQL Command Status --|----- Innodb row operation -----|-- Buffer Pool Read --"; print "---Time---|---QPS---|select insert update delete| read inserted updated deleted| logical physical";} else if ($2 ~ /Queries/){queries=$3;} else if ($2 ~ /Com_select /){com_select=$3;} else if ($2 ~ /Com_insert /){com_insert=$3;} else if ($2 ~ /Com_update /){com_update=$3;} else if ($2 ~ /Com_delete /){com_delete=$3;} else if ($2 ~ /Innodb_rows_read/){innodb_rows_read=$3;} else if ($2 ~ /Innodb_rows_deleted/){innodb_rows_deleted=$3;} else if ($2 ~ /Innodb_rows_inserted/){innodb_rows_inserted=$3;} else if ($2 ~ /Innodb_rows_updated/){innodb_rows_updated=$3;} else if ($2 ~ /Innodb_buffer_pool_read_requests/){innodb_lor=$3;} else if ($2 ~ /Innodb_buffer_pool_reads/){innodb_phr=$3;} else if ($2 ~ /Uptime / && count >= 2){ printf(" %s |%9d",strftime("%H:%M:%S"),queries);printf("|%6d %6d %6d %6d",com_select,com_insert,com_update,com_delete);printf("|%8d %7d %7d %7d",innodb_rows_read,innodb_rows_inserted,innodb_rows_updated,innodb_rows_deleted); printf("|%10d %11d\n",innodb_lor,innodb_phr);}}'
输出结果如下:
----------|---------|--- MySQL Command Status --|----- Innodb row operation -----|-- Buffer Pool Read -- ---Time---|---QPS---|select insert update delete| read inserted updated deleted| logical physical 09:32:20 | 92| 8 8 15 0| 15 8 15 0| 2465 0 09:32:22 | 3| 1 0 0 0| 0 0 0 0| 56 0 09:32:24 | 11| 3 0 2 0| 10 0 2 0| 70 0 09:32:26 | 51| 25 0 0 0| 38 0 0 0| 110 0 09:32:28 | 7| 3 0 0 0| 0 0 0 0| 30 0 09:32:30 | 5| 2 0 0 0| 0 0 0 0| 20 0 09:32:32 | 6| 1 0 0 0| 28 0 0 0| 100 0 09:32:34 | 33| 0 0 16 0| 24 0 16 0| 205 0 09:32:36 | 7| 3 0 0 0| 2 0 0 0| 11 0 09:32:38 | 9| 4 0 0 0| 2 0 0 0| 55 0 09:32:40 | 117| 10 10 18 0| 18 10 18 0| 1907 0 09:32:42 | 516| 506 0 0 0| 41 0 0 0| 1280 0 09:32:44 | 21| 2 0 8 0| 18 0 8 0| 158 0 09:32:46 | 17| 0 0 8 0| 8 0 8 0| 84 0 ----------|---------|--- MySQL Command Status --|----- Innodb row operation -----|-- Buffer Pool Read -- ---Time---|---QPS---|select insert update delete| read inserted updated deleted| logical physical 09:32:48 | 24| 3 9 4 0| 6 0 4 0| 50 0 09:32:50 | 81| 1 71 2 0| 50 0 2 0| 85 0 09:32:52 | 107| 103 0 0 0| 2 0 0 0| 10 0 09:32:54 | 91| 8 6 20 0| 28 6 20 0| 1393 0 09:32:56 | 20| 5 0 3 0| 176 0 3 0| 764 0 09:32:58 | 14| 2 0 4 1| 6 0 4 2| 85 0 09:33:00 | 11| 2 0 3 0| 3 0 3 0| 51 0 09:33:02 | 1| 0 0 0 0| 0 0 0 0| 0 0 09:33:04 | 1| 0 0 0 0| 0 0 0 0| 786 0 09:33:06 | 7| 1 0 2 0| 16 0 2 0| 59 0
可以清楚的看见QPS,以及各种SQL的执行频率,通过上面的执行结果来看,我现在主要是读比较频繁。好了,就说到这里了。^_^