mysql query & index tuning
今天重温了下,其实mysql优化掌握基本的几个原则就可以.假如还有性能问题,那就不是优化能解决的,需要其他的解决方案
1:mysql server overview
2:slow query logging
3:the explain statement
4:things to avoid in queries
a:不要使用关联比较多的子查询
b:mysql版本的影响:mysql5以前一般使用一个索引/mysql5一般避免or操作(带来全表扫描)
5:indexing strategies
a:增加索引的可选择性:the ratio of the number of distinct values in the indexed column to the number of records
应该避免全表扫描(使用explain)
b:覆盖索引
索引匹配的结果更小,索引能够有效的放入内存中(等于是cache数据),另外myisam对索引能够进行压缩(索引更小)
索引是根据索引值来进行排序的,因此IO限制范围的访问相对比从随机硬盘位置所需的IO是较少的.
注意otimize对myisam索引的优点
对于myisam这样的索引,由操作系统托管缓存数据,所以对系统有很大影响.
覆盖索引对与InnoDB表有些特殊的效用.因为InnoDB是聚簇索引.InnoDB的次要索引在它们叶子节点保存了行的主键
c:重复索引
重复的索引是那些具有相同类型,在同顺序下的相同一组索引.你应该避免这样来创建它们并且如果发现它们要尽早的删除
d:冗余索引
一般情况下冗余索引是没有任何帮助的,但是假如扩展索引的时候发现索引很大,冗余索引能够解决性能问题.
6:mysql optimizer
cost-based:一般使用索引可选择性来选择使用哪种方式optimizer
rule-based
7:schema guidelines
尽量使用小的数据类型,这样更能放入内存.开始设计的时候使用范式,后期要使用反范式
8:query cache
9:benchmarking
a:压力测试条件:
配置my.cnf
修改索引
修改表结构
改变sql查询
压力测试需要注意网络问题,禁用qcache
b:压力测试框架
延伸阅读:
http://www.slideshare.net/manikandakumar/mysql-query-and-index-tuning
http://xiayuanfeng.javaeye.com/blog/436904
http://xiayuanfeng.javaeye.com/blog/430852
建议继续学习:
- WEB系统需要关注的一些点 (阅读:16899)
- 30分钟3300%性能提升――python+memcached网页优化小记 (阅读:13112)
- 基于SSD的数据库性能优化 (阅读:8232)
- jQuery性能优化指南 (阅读:8247)
- 一次简单C程序的性能优化 (阅读:6341)
- mysql sql 百万级数据库优化方案 (阅读:5725)
- PHP最佳实践 (阅读:5614)
- 一次神奇的MySQL优化 (阅读:5596)
- PHP 性能优化技巧-google (阅读:5488)
- Linux 64位, MySQL, Swap & Memory 优化 (阅读:5232)
扫一扫订阅我的微信号:IT技术博客大学习
- 作者:ywdblog 来源: 技术 总结 记录 生活 工作
- 标签: 优化
- 发布时间:2010-04-19 12:44:33
-
[921] WordPress插件开发 -- 在插件使用 -
[134] 解决 nginx 反向代理网页首尾出现神秘字 -
[54] 整理了一份招PHP高级工程师的面试题 -
[53] 如何保证一个程序在单台服务器上只有唯一实例( -
[52] 全站换域名时利用nginx和javascri -
[52] 海量小文件存储 -
[51] Innodb分表太多或者表分区太多,会导致内 -
[50] 用 Jquery 模拟 select -
[50] CloudSMS:免费匿名的云短信 -
[48] jQuery性能优化指南
