IT技术博客大学习 共学习 共进步

mysql query & index tuning

技术 总结 记录 生活 工作 2010-04-19 12:44:33 累计浏览 2,361 次
本机暂存

    今天重温了下,其实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

建议继续学习

  1. 用Hyer来进行网站的抓取 (累计阅读 158,161)
  2. MySQL数据库在实际应用一些方面的介绍 (累计阅读 36,321)
  3. WordPress插件开发 -- 在插件使用数据库存储数据 (累计阅读 29,080)
  4. Mysql监控指南 (累计阅读 21,201)
  5. 由浅入深探究mysql索引结构原理、性能分析与优化 (累计阅读 16,180)
  6. 在Apache2.2.XX下安装Mod-myvhost模块 (累计阅读 12,980)
  7. 15个最好的免费开源电子商务平台 (累计阅读 12,460)
  8. 浅谈MySQL索引背后的数据结构及算法 (累计阅读 11,480)
  9. 整理了一份招PHP高级工程师的面试题 (累计阅读 11,421)
  10. 深入浅出INNODB MVCC机制与原理 (累计阅读 9,620)