本文共 2101 字,大约阅读时间需要 7 分钟。
在本次学习中,使用的案例表是MySQL的的案例库的Sakila,sakila的的下载地址是:http://downloads.mysql.com/docs/sakila-db.zip。
-------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------
mysql> show status like 'Com_%';+---------------------------+-------+| Variable_name | Value |+---------------------------+-------+| Com_admin_commands | 0 || Com_assign_to_keycache | 0 || Com_alter_db | 0 || Com_alter_db_upgrade | 0 || Com_alter_event | 0 || Com_alter_function | 0 || Com_alter_procedure | 0 || Com_alter_server | 0 || Com_alter_table | 2 || Com_alter_tablespace | 0 || Com_analyze | 0 || Com_begin | 0 || Com_binlog | 0 || Com_call_procedure | 0 || Com_change_db | 3 || Com_change_master | 0 || Com_check | 0 || Com_checksum | 0 || Com_commit | 15 |.....
解释:Com_xxx表示每个XXX语句执行的次数,我们通常比较关心的是以下几个统计参数。
上面这些参数对所有的存储引擎表操作都会进行累计以下这几个参数只针对在InnoDB的存储引擎,累加的算法也略有不同:
通过以上几个参数,大家很容易了解当前数据库是以插入更新为主还是查询操作为主,以及各种类型的SQL大致执行的比例是多少。对于更新操作的计数,是对执行次数的计数,不论是提交还是回滚都会进行累加。
对于事务的型的应用,通过Com_commit和Com_callback可以了解事务提交和回滚的情况,对于回滚操作频繁的数据库,可能意味着应用编写存在问题。
以下几个参数便于用户了解数据库的基本情况,
1)通过慢查询日志定位那些执行效率较低的SQL语句。
用--log-slow-queries [= file_name]选项启动时,mysqld写一个包含所有执行时间超过long_query_time秒的sql语句文件。
2)慢查询在查询结束后才记录,所以在反应映射执行效率出现问题的时候慢查询日志并不能定位问题,可以使用show processlist命令查看当前MySQL在进行的线程,包括线程的状态,是否锁表等,可以实时地查看SQL的执行情况,同时对一些锁表操作进行优化。
以上是对数据库的SQL优化中,对数据库表中各种SQL的操作频率和低效率的SQL的定位。
转载地址:http://tdfoi.baihongyu.com/