查看数据库状态
show [session|global] status 可以根据需要加上参数“session”或者“global”来显示 session 级(当
前连接)的统计结果和 global 级(自数据库上次启动至今)的统计结果。如果不写,默认使
用参数是“session”
mysql> show status like ‘Com_%’;
Com_xxx 表示每个 xxx 语句执行的次数,我们通常比较关心的是以下几个统计参数。
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 操作删除的行数。
通过以上参数可以很容易的知道数据库是以插入更新为主还是查询为主,以及各个类型sql的大致执行比例,更新操作计数是执行计数,不管是提交还是回滚都会累加。
对于事务型的应用,通过 Com_commit 和 Com_rollback 可以了解事务提交和回滚的情况,
对于回滚操作非常频繁的数据库,可能意味着应用编写存在问题。
此外,以下几个参数便于用户了解数据库的基本情况。 Connections:试图连接 MySQL 服务器的次数。
Uptime:服务器工作时间。
Slow_queries:慢查询的次数。
定位执行效率低的sql语句
1.通过查询慢查询日志,来查看执行慢的sql,慢查询日志可以使用–log-slow-queries[=file_name]选项启动时,进行设置
2.慢查询日志要在查询之后才能记录,所以当应用反应执行效率低的时候,慢查询日志中可能还没有记录到,此时可以使用show processlist命令查看当前MySQL在进行的线程,包括线程的状态、是否锁表等,可以实时地查看 SQL 的执行情况,同时对一些锁表操
作进行优化。