`
hy2012_campus
  • 浏览: 29086 次
  • 性别: Icon_minigender_1
  • 来自: 河南
社区版块
存档分类
最新评论

msyql统计crud次数以及开启慢日志记录

 
阅读更多

通过show status可以提供服务器状态信息,也可以使用 msyqladmin-extende status命令获得show status可以根据需要显示session级别的统计结果和global 级别的统计结果

 

以下几个参数对Myisam和innodb存储引擎都计数:

1.Com_select 执行select操作次数,一次查询只累加1;

2.Com_insert 执行了insert操作次数,对于批量插入insert,只累加1次

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 慢查询的次数

 

可以通过以下两种方式定位执行效率较低的 SQL 语句:

 1.  可以通过慢查询日志定位那些执行效率较低的 sql 语句,用--log-slow-queries[=file_name]选项启动时,mysqld 写一个包含所有执行时间超过  long_query_time 秒的 SQL 语句的日志文件。可以链接到管理维护中的相关章节。

 2.  慢查询日志在查询结束以后才纪录,所以在应用反映执行效率出现问题的时候查询慢查询日志并不能定位问题,可以使用 show processlist 命令查看当前 MySQL 在进行的线程,包括线程的状态,是否锁表等等,可以实时的查看 SQL 执行情况,同时对一些锁表操作进行优化。

 

通过以上步骤查询到效率低的 SQL 后,我们可以通过 explain 或者 desc 获取 MySQL 如何执行 SELECT 语句的信息,包括select 语句执行过程表如何连接和连接的次序。

explain 可以知道什么时候必须为表加入索引以得到一个使用索引来寻找记录的更快的 SELECT。

mysql> explain select sum(moneys) from sales a,companys b where a.company_id = b.id and a.year = 2006;

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics