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系统需要关注的一些点 (阅读:15081)
- 30分钟3300%性能提升――python+memcached网页优化小记 (阅读:12365)
- 基于SSD的数据库性能优化 (阅读:7602)
- jQuery性能优化指南 (阅读:7471)
- 一次简单C程序的性能优化 (阅读:5740)
- mysql sql 百万级数据库优化方案 (阅读:5248)
- PHP最佳实践 (阅读:5234)
- 一次神奇的MySQL优化 (阅读:5057)
- Linux 64位, MySQL, Swap & Memory 优化 (阅读:4691)
- PHP 性能优化技巧-google (阅读:4730)
扫一扫订阅我的微信号:IT技术博客大学习
- 作者:ywdblog 来源: 技术 总结 记录 生活 工作
- 标签: 优化
- 发布时间:2010-04-19 12:44:33
-
[82] memory prefetch浅析
-
[53] 转载:cassandra读写性能原理分析
-
[51] 深入浅出cassandra 4 数据一致性问
-
[50] 基本排序算法的PHP实现
-
[46] 字符引用和空白字符
-
[42] Inline Form Labels
-
[41] JS中如何判断字符串类型的数字
-
[41] MySQL半同步存在的问题
-
[41] 获取Dom元素的X/Y坐标
-
[40] javascript插入样式