mysql数据库优化
2011-06-24 18:11
239 查看
用到啥学啥,mysql数据库优化成了这几天的老大难问题。疯狂的寻找mysql优化的资料,觉得有用的不少,记录下跟大家分享,对了,这里仅仅是mysql数据库本身的优化,没有写磁盘之类的:
开始之前,介绍俩mysql的命令:
show global status; 查看运行状态的,显示运行各种状态值
show variables; 查询MySQL服务器配置信息的
ps:在命令里面设置配置信息的话,下次重启不起作用,所以要写到my.cnf里面。
1.慢查询
就是语句执行需要的时间,如果超过设定的值,则进行记录。
show variables like '%slow%';这个可以查看是否开启及设置的时间,单位为秒。
show global status like '%slow%';这个是查看统计情况
2.连接数
遇见”MySQL: ERROR 1040: Too many connections”的情况,一种是访问量确实很高,MySQL服务器抗不住,这个时候就要考虑增加从服务器分散读压力,另外一种情况是MySQL配置文件中max_connections值过小:
show variables like 'max_connections';查看最大连接数
mysql> show global status like 'Max_used_connections'查看目前出现的最大连接数
推荐的两个者的比例:Max_used_connections / max_connections * 100% ≈ 85%
3.Key_buffer_size
show variables like 'key_buffer_size';显示目前Key_buffer_size的设置值,单位是字节。
那么这个参数设置多少合适呢,一般是内存的1/4大小。如何确定一个合适的值呢?
show global status like 'key_read%';这个是看索引请求(Key_read_requests)的,还可以查看内存中没有找到直接从硬盘读取索引(Key_reads)。两者的比值Key_reads / Key_read_requests越小越好,至少是1:100,1:10000算是很不错。不过比例再大的话,也没有很大的意义了。
MySQL服务器还提供了key_blocks_*参数:show global status like 'key_blocks_u%';
Key_blocks_unused表示未使用的缓存簇(blocks)数,Key_blocks_used表示曾经用到的最大的blocks数,比如这台服务器,所有的缓存都用到了,要么增加key_buffer_size,要么就是过渡索引了,把缓存占满了。比较理想的设置:
Key_blocks_used / (Key_blocks_unused + Key_blocks_used) * 100% ≈ 80%
4.Open_tables
show global status like 'open%tables%';查看打开表的情况
Open_tables表示打开表的数量,Opened_tables表示打开过的表数量,如果Opened_tables数量过大,说明配置中table_cache(5.1.3之后这个值叫做table_open_cache)值可能太小。
比较适合的值:
Open_tables / Opened_tables * 100% >= 85%
Open_tables / table_cache * 100% <= 95%
5.查询缓存(query cache)
详细出处:mysql数据库优化 - 23生活
http://www.23live.cn/article.asp?id=436
开始之前,介绍俩mysql的命令:
show global status; 查看运行状态的,显示运行各种状态值
show variables; 查询MySQL服务器配置信息的
ps:在命令里面设置配置信息的话,下次重启不起作用,所以要写到my.cnf里面。
1.慢查询
就是语句执行需要的时间,如果超过设定的值,则进行记录。
show variables like '%slow%';这个可以查看是否开启及设置的时间,单位为秒。
show global status like '%slow%';这个是查看统计情况
2.连接数
遇见”MySQL: ERROR 1040: Too many connections”的情况,一种是访问量确实很高,MySQL服务器抗不住,这个时候就要考虑增加从服务器分散读压力,另外一种情况是MySQL配置文件中max_connections值过小:
show variables like 'max_connections';查看最大连接数
mysql> show global status like 'Max_used_connections'查看目前出现的最大连接数
推荐的两个者的比例:Max_used_connections / max_connections * 100% ≈ 85%
3.Key_buffer_size
show variables like 'key_buffer_size';显示目前Key_buffer_size的设置值,单位是字节。
那么这个参数设置多少合适呢,一般是内存的1/4大小。如何确定一个合适的值呢?
show global status like 'key_read%';这个是看索引请求(Key_read_requests)的,还可以查看内存中没有找到直接从硬盘读取索引(Key_reads)。两者的比值Key_reads / Key_read_requests越小越好,至少是1:100,1:10000算是很不错。不过比例再大的话,也没有很大的意义了。
MySQL服务器还提供了key_blocks_*参数:show global status like 'key_blocks_u%';
Key_blocks_unused表示未使用的缓存簇(blocks)数,Key_blocks_used表示曾经用到的最大的blocks数,比如这台服务器,所有的缓存都用到了,要么增加key_buffer_size,要么就是过渡索引了,把缓存占满了。比较理想的设置:
Key_blocks_used / (Key_blocks_unused + Key_blocks_used) * 100% ≈ 80%
4.Open_tables
show global status like 'open%tables%';查看打开表的情况
Open_tables表示打开表的数量,Opened_tables表示打开过的表数量,如果Opened_tables数量过大,说明配置中table_cache(5.1.3之后这个值叫做table_open_cache)值可能太小。
比较适合的值:
Open_tables / Opened_tables * 100% >= 85%
Open_tables / table_cache * 100% <= 95%
5.查询缓存(query cache)
详细出处:mysql数据库优化 - 23生活
http://www.23live.cn/article.asp?id=436
相关文章推荐
- MySQL数据库优化技术之SQL语句慢查询定位
- 使用MySQLTuner脚本检测、优化MySQL数据库
- mysql数据库锁优化和注意
- MySQL数据库开发常见问题及几点优化!
- 完全优化MySQL数据库性能的八大巧方法
- 百万记录级MySQL数据库及Discuz!论坛优化
- MySQL数据库优化的八种方式(经典必看)
- mysql数据库优化 pt-query-digest使用
- 年终大学习之MySQL数据库优化学习笔记(五)
- MYSQL数据库性能优化
- mysql数据库的安装以及常见优化设置
- Mysql数据库优化可以从哪几个方面优化
- 常见的Mysql数据库优化总结
- Mysql数据库性能优化之子查询
- 浅谈mysql数据库优化技术
- MySQL数据库服务器优化详细
- MySQL数据库优化的八种方式(经典必看)
- MySQL数据库安全优化的常用方法
- MySQL数据库性能优化之存储引擎选择
- 解析MySQL数据库性能优化的六大技巧