MySQL负载过高的优化总结
SQL #mysql #负载 #优化2012-09-20 09:51
公司网站刚改完版,优化了数据库结构,使用的memcache分布式缓存加MySQL,刚开始几天还好,数据库服务几天没down过了.但这几天频繁down机.是个大问题,需要解决.
数据库服务器硬件配置为4颗双核CPU,8G内存.
查看服务器负载(top命令),见MySQL竟然经常百分之九十几的cpu,恐怖.早之前就知道,数据表有些字段没有做索引的,引起MySQLL负载这么高的原因主要应该是索引问题和某些变态SQL语句.
如何知道是MySQL哪些索引和SQL引起的问题呢?老大教有绝招
编辑MySQL配置文件my.cnf,加上以下几行:
log_slow_queries=/usr/local/mysql/data/log_slow_queries.log //慢语句日志保存目录 long_query_time=10 //记录SQL查询超过10S的语句 log-queries-not-using-indexes=1 //记录没有使用索引的sql
这样,慢语句就被记录在日志文件中了.
tail -f /usr/local/mysql/data/log_slow_queries.log 查看日志.四个参数
Query_time: 0 Lock_time: 0 Rows_sent: 1 Rows_examined: 54
分别意思为:查询时间 锁定时间 查询结果行数 扫描行数
主要看那些扫描行数超多的语句.然后去数据库加上对应的索引
再优化下变态的sql
完成后MySQL负载降到了二十几.还行.应该不会down机了.
相关文章
- oracle 查看用户权限的SQL语句 2012/09/01
- Oracle merge into 命令用法 2012/09/01
- MySQL查询重复记录的方法 2012/08/31
- in和exists的区别与SQL执行效率分析 2012/08/30
- Sql server常见性能问题的总结 2012/08/30
- Oracle查询表结构的一些相关sql语句 2012/07/12
- mysql的配置文件my.ini详解 2012/07/01
- mysql分页存储过程 2012/06/17
- Mysql导出表结构及表数据(mysqldump用法) 2012/06/17
- Mysql之Explain详解 2012/06/16