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

Nignx配合Memcached提升400%性能(阅读笔记)

原始文章: http://www.igvita.com/2008/02/11/nginx-and-memcached-a-400-boost/

原文引用了 http://nubyonrails.com/articles/about-this-blog-memcached

http://blog.leetsoft.com/2007/5/22/the-secret-to-memcached

都是讲述怎样在Rails中使用memcached的(主要是key的设定方式和怎样对memcached的使用做类的包装)

文章在两篇引用文章的基础上直接将memcached的使用提升到url层,通过nginx对memcached的原生支持,讲述了一种利用url rewrite机制来直接将url请求地址作为key给memcached做处理,用以提升访问速度。

首先在编译 nginx 时要添加 memcached 模块编译,nginx 的 memcached 模块配置参数说明见 http://wiki.codemongers.com/NginxHttpMemcachedModule

文章讲述利用 url rewrite 机制来做key validate 的自动化处理,主要讲了一下url rewrite和mime type的配合问题。
本文启发
1.网站url地址要好规划,这样可以将不同类别的资源做分组,方便以后的统一处理,添加缓冲之类的。
2.怎样确定内容的修改频度,自动话的处理?如果是动态的对数据敏感新强的页面。
3.有没有方法可以在url层做validate time 的规范话处理(资源的更新频度,每小时,每天等等)。

Popularity: 3% [?]

Related