mysql数据库优化
时间:2015-01-07 18:35 来源:linux.it.net.cn 作者:IT
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)
(责任编辑:IT)
mysql数据库优化成了这几天的老大难问题。疯狂的寻找mysql优化的资料,觉得有用的不少,记录下跟大家分享,对了,这里仅仅是mysql数据库本身的优化,没有写磁盘之类的:
开始之前,介绍俩mysql的命令:
1.慢查询
show variables like '%slow%';这个可以查看是否开启及设置的时间,单位为秒。
2.连接数
show variables like 'max_connections';查看最大连接数 推荐的两个者的比例:Max_used_connections / max_connections * 100% ≈ 85% 3.Key_buffer_size show variables like 'key_buffer_size';显示目前Key_buffer_size的设置值,单位是字节。
那么这个参数设置多少合适呢,一般是内存的1/4大小。如何确定一个合适的值呢?
MySQL服务器还提供了key_blocks_*参数:show global status like 'key_blocks_u%'; 4.Open_tables
show global status like 'open%tables%';查看打开表的情况 5.查询缓存(query cache) (责任编辑:IT) |