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
建议继续学习:
- 30分钟3300%性能提升――python+memcached网页优化小记 (阅读:11872)
- WEB系统需要关注的一些点 (阅读:10213)
- 基于SSD的数据库性能优化 (阅读:7192)
- jQuery性能优化指南 (阅读:7170)
- 一次简单C程序的性能优化 (阅读:5461)
- mysql sql 百万级数据库优化方案 (阅读:4856)
- 一次神奇的MySQL优化 (阅读:4707)
- PHP最佳实践 (阅读:4659)
- Linux 64位, MySQL, Swap & Memory 优化 (阅读:4310)
- PHP 性能优化技巧-google (阅读:4196)
扫一扫订阅我的微信号:IT技术博客大学习
- 作者:ywdblog 来源: 技术 总结 记录 生活 工作
- 标签: 优化
- 发布时间:2010-04-19 12:44:33
- [50] WEB系统需要关注的一些点
- [18] 浏览器的工作原理:新式网络浏览器幕后揭秘
- [13] Android设计中的.9.png
- [12] 内网穿透神器frp
- [12] 我的git笔记
- [11] Spark性能优化——和shuffle搏斗
- [11] 界面设计速成
- [10] Python程序的执行原理
- [10] Python 代码规范小结
- [10] 深入剖析 redis replication