一些实例方面的讲解,所用到的一些地方
http://www.jb51.net/article/18164.htm
提供一些建议性的优化方法
http://blog.sina.com.cn/s/blog_7be8a2150100tni3.html
比较详细的介绍性能方面的一些基础知识,可以作为常考文档
http://www.360doc.com/content/10/0821/22/2159920_47802856.shtml
ps:以下摘抄一些段落
1.善用explain(desc 也可):
设计SQL后,应使用explain命令检查SQL,看是否使用到索引,是否存在filesort,重点检查检索的行数(rows)是否太大。 一般来说. rows<1000,是在可接受的范围内的 . rows在1000~1w之间,在密集访问时可能导致性能问题,但如果不是太频繁的访问(频率低于1分钟一次),又难再优化的话,可以接受,但需要注意观察 ows大于1万时,应慎重考虑SQL的设计,优化SQL,优化db,一般来说不允许频繁运行(频率低于1小时一次)。 ows达到10w级别时,坚决不能做为实时运行的SQL。但导数据场合除外,但导数据必须控制好时间,频度。
explain SQL语句应该是日常开发中的习惯动作,有时explain出来的结果,可能会出于偏离设计的意料之外,所以强烈建议在设计SQL,尤其是稍微复杂的SQL时,一定要在测试环境甚至是实际环境上预先进行explain
2.MySQL慢查询日志
一般应打开MySQL的慢查询日志(在my.cnf中加入log_slow_queries和long_query_time两个参数),会记录所有查询持续时间超过long_query_time的SQL语句,把这些语句log下来之后,再一一分析(explain)优化。
3.监视当前进程
登陆MySQL,使用show processlist查看正在运行的SQL语句,如果正在运行的语句太多,运行时间太长,表示MySQL效率有问题。必要的时候可以将对应的进程kill掉。
4.系统命令
使用top/vmstat等系统命令来检查MySQL进程占用的cpu,内存,以及磁盘IO量。
5.其他
建表时,显式指定使用innodb数据库引擎
导出数据等可能引起批量数据读取的操作,应建立定时任务,在数据库不繁 忙的时段(凌晨1~7时)运行一般的统计操作