MySQL性能优化工作小结

1. 首先将数据库的慢查询日志功能打开,修改 my.conf

long_query_time=1

log-slow-queries=/var/log/mysqld_slow.log

log-queries-not-using-indexes

2. 运行tuning-primer.sh脚本查看数据库状态。

在数据库运行一段时间后(两天以上)首先使用tuning-primer.sh脚本, 查看一下my.conf中的配置参数设置,按照运行结果的建议做一下my.conf的参数调整。(http://www.day32.com/MySQL/)

3. 使用 mysqlreport 脚本做定期分析,持续观察DB的运行状况

检验每次参数变化后是否起作用(一些数据要在参数变化后运行两天以上捕捉到的结果和变化之前做比较才有价值),具体的分析结果所代表的含义网上有介绍( http://hackmysql.com/)

4. 查看 http://www.mysqlperformanceblog.com/tools/ 的一些资源,做数据库服务器的性能辅助分析,并可以看 http://www.mysqlperformanceblog.com上一些性能调优方面的讨论,针对自己的情况做具体取舍。

5. 根据慢查询日志分析存在问题的SQL,针对性的做SQL和业务逻辑的优化处理

  1. 通过 mysqlslowdump

-s 排序,c,t,l,r分别按照query次数,时间,lock的时间和返回的记录数来排序,前面添加a便是倒序

-t top n 的意思,即是返回前面多少条数据

-g 后面可以写一个正则表达式,大小写不敏感

典型查询

mysqldumpslow –s c –t 20 host-slow.log

mysqldumpslow –s r –t 20 host-slow.log

mysqldumpslow –s t –t 10 –g “left join” host-slow.log

  1. 在mysql环境中通过explain sql 查看 查询语句的索引命中情况等,一些慢速的查询是由于没有使用到恰当的索引,通过添加调整索引可以得到很明显的速度提升
  2. explain extent sql explain更多一些关于sql查询的信息

6. 其他,sql查询的一些语句书写准则(参考mysql手册第七章关于优化的章节)

mySQL的优化不是一步到位的,要持续观察改善,一部分优化可以通过服务器端的配置来得到(添加硬件,对系统的参数做优化) ,还有一部分要根据实际业务中使用的数据量和SQL来做分析,考虑换种SQL写法,换一个实现方法等,添加业务层的cache减少对数据库的访问等方式来得到增强。

Popularity: 3% [?]

Related

Comments

One Response to “MySQL性能优化工作小结”

  1. MySQL从库配置维护回顾 : sunnyu on October 17th, 2008 4:41 pm

    [...] 为了安全考虑,定期做数据库的全量复制备份。 可以使用 http://www.innodb.com 公司的 ibbackup 程序和 innobackup 脚本做自动话的备份处理. ————– 对MySQL的备份还可以参见: 常见MySQL数据库备份工具和备份方式比较 还可以参见 MySQL性能优化工作小结 [...]