MYSQL Turning

1. 检查查询速度:
a. 登录:mysql -uroot
b. 查询:show profiles;
如果没有结果:
开启:set profiling=1;
c. 输入一些查询命令:
show databases;
use mysql;
select * from users;
之类
d. 查询结果:show profiles;
存储引擎都使用innodb的时候需要考虑如下参数设置:
Innodb_buffer_pool_size
1. 查看当前值:
show variable like 'Innodb_buffer_pool%';
2. 使用情况查看:
show status like 'Innodb_buffer_pool_%';
判断buffer是否过小:查看Innodb_buffer_pool_pages_free

buffer命中率:
(Innodb_buffer_pool_read_requests - Innodb_buffer_pool_read) / Innodb_buffer_pool_read_request * 100%

如果命中率过低,可能是buffer设置过大
3. 调整:
修改mysql配置文件/etc/my.cnf

innodb_buffer_pool_size = 4096M
存储引擎使用MYISAM时候需要考虑如下参数设置:
1. key_buffer_size: 一般使用物理服务器内存的30%-40%;
2. sort_buffer_size: 设置key_buffer_size的25%;
3. read_buffer_size: 设置key_buffer_size的25%;
4. 检查查询问题
在/etc/my.cnf中添加:
指定日志文件:
log_slow_queries=<文件>
查询时间超过时间:
long_query_time=<数字>
没有索引的查询语句
log-queries-not-using-indexes
例如:
log_slow_queries=/usr/local/mysql/var/slowquery.log
long_query_time=10
log-queries-not-using-indexes
注意:如果开启后发觉文件增加很快,需要及时调整关闭相关参数。
分析slow log:
-- 得出运行总数前100个的sql统计
/usr/local/mysql/bin/mysqldumpslow -s c -t 100 xxx.log > xxx_count.log

-- 得出执行时间前100个的sql统计
/usr/local/mysql/bin/mysqldumpslow -s at -t 100 xxx.log > xxx_quest_time.log

Comments

Popular posts from this blog

Nginx Proxy & Load Balance & LNMP

Snort+barnyard2+Snorby CentOS 6.5_64 Installation

ORACLE Error