Archive

Archive for October, 2011

mysql中的Waiting for tables

October 21st, 2011 No comments

接着上篇中遇到的mysql子查询,在问题的诊断中,丹臣注意到一个较为严重的问题,就是我们生产库中全部的数据库访问请求都处于Waiting for tables的状态,在将大查询kill掉后,所有的请求恢复正常;简单的理解为大查询阻塞了其他访问请求,但是这个理论是不可信,如果阻塞该表的DML还可以理解[……]

Read more

Categories: mysql Tags:

生产库中遇到mysql的子查询

October 21st, 2011 No comments

使用过oracle或者其他关系数据库的DBA或者开发人员都有这样的经验,在子查询上都认为数据库已经做过优化,能够很好的选择驱动表执行,然后在把该经验移植到mysql数据库上,但是不幸的是,mysql在子查询的处理上有可能会让你大失所望,在我们的生产系统上就由于碰到了这个问题:

select  i_[……]

Read more

Categories: database, sql优化 Tags:

mysql explain 中key_len的计算

October 21st, 2011 No comments

今天丁原问我mysql执行计划中的key_len是怎么计算得到的,当时还没有注意,在高性能的那本书讲到过这个值的计算,但是自己看执行计划的时候一直都没有太在意这个值,更不用说深讨这个值的计算了:

ken_len表示索引使用的字节数,根据这个值,就可以判断索引使用情况,特别是在组合索引的时候,判[……]

Read more

Categories: database Tags:

innodb 的预读

October 11th, 2011 No comments

innodb在io的优化上有个比较重要的特性为预读,innodb以64个page为一个extent,那么innodb的预读是以page为单位还是以extent?

这样就进入了下面的话题:linear read-ahead和randomread-ahead;

为了区分这两种预读的方式,我们[……]

Read more

Categories: database Tags:

loose index scan 优化distinct

October 11th, 2011 No comments

上篇中我们提到用伪loose index scan来优化max/min,这一篇我们将用伪loose index scan来优化distinct:

有这样的一个需求:select count(distinct nick) from user_access_xx_xx;

这条sql用于统计用[……]

Read more

Categories: database, sql优化 Tags: