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系统需要关注的一些点 (阅读:14108)
- 30分钟3300%性能提升――python+memcached网页优化小记 (阅读:12128)
- 基于SSD的数据库性能优化 (阅读:7412)
- jQuery性能优化指南 (阅读:7325)
- 一次简单C程序的性能优化 (阅读:5598)
- mysql sql 百万级数据库优化方案 (阅读:5057)
- PHP最佳实践 (阅读:4952)
- 一次神奇的MySQL优化 (阅读:4895)
- Linux 64位, MySQL, Swap & Memory 优化 (阅读:4482)
- PHP 性能优化技巧-google (阅读:4415)
扫一扫订阅我的微信号:IT技术博客大学习
- 作者:ywdblog 来源: 技术 总结 记录 生活 工作
- 标签: 优化
- 发布时间:2010-04-19 12:44:33
- [55] Oracle MTS模式下 进程地址与会话信
- [54] IOS安全–浅谈关于IOS加固的几种方法
- [53] 如何拿下简短的域名
- [53] android 开发入门
- [51] Go Reflect 性能
- [50] 图书馆的世界纪录
- [48] 读书笔记-壹百度:百度十年千倍的29条法则
- [46] 【社会化设计】自我(self)部分――欢迎区
- [39] 程序员技术练级攻略
- [32] 视觉调整-设计师 vs. 逻辑