WEB开发网
开发学院数据库MySQL 根据status信息对MySQL服务器进行优化 阅读

根据status信息对MySQL服务器进行优化

 2009-04-16 11:17:35 来源:WEB开发网   
核心提示: 比较合适的设置:Open_files / open_files_limit * 100% <= 75%十、表锁情况mysql> show global status like 'table_locks%';+---+---+| Variable_name | V

比较合适的设置:Open_files / open_files_limit * 100% <= 75%

十、表锁情况

mysql> show global status like 'table_locks%';
+-----------------------+-----------+
| Variable_name          | Value      |
+-----------------------+-----------+
| Table_locks_immediate | 490206328 |
| Table_locks_waited     | 2084912    |
+-----------------------+-----------+

Table_locks_immediate表示立即释放表锁数,Table_locks_waited表示需要等待的表锁数,如果Table_locks_immediate / Table_locks_waited > 5000,最好采用InnoDB引擎,因为InnoDB是行锁而MyISAM是表锁,对于高并发写入的应用InnoDB效果会好些。示例中的服务器Table_locks_immediate / Table_locks_waited = 235,MyISAM就足够了。

十一、表扫描情况

mysql> show global status like 'handler_read%';
+-----------------------+-------------+
| Variable_name          | Value        |
+-----------------------+-------------+
| Handler_read_first     | 5803750      |
| Handler_read_key       | 6049319850  |
| Handler_read_next      | 94440908210 |
| Handler_read_prev      | 34822001724 |
| Handler_read_rnd       | 405482605    |
| Handler_read_rnd_next | 18912877839 |
+-----------------------+-------------+

各字段解释参见http://hi.baidu.com/thinkinginlamp/blog/item/31690cd7c4bc5cdaa144df9c.html,调出服务器完成的查询请求次数:

mysql> show global status like 'com_select';
+---------------+-----------+
| Variable_name | Value      |
+---------------+-----------+
| Com_select     | 222693559 |
+---------------+-----------+

计算表扫描率:

表扫描率 = Handler_read_rnd_next / Com_select

如果表扫描率超过4000,说明进行了太多表扫描,很有可能索引没有建好,增加read_buffer_size值会有一些好处,但最好不要超过8MB。

后记:

文中提到一些数字都是参考值,了解基本原理就可以,除了MySQL提供的各种status值外,操作系统的一些性能指标也很重要,比如常用的top,iostat等,尤其是iostat,现在的系统瓶颈一般都在磁盘IO上,关于iostat的使用,可以参考:http://www.php-oa.com/2009/02/03/iostat.html

上一页  5 6 7 8 9 10 

Tags:根据 status 信息

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接