MySQL技术内幕--存储引擎

    今日突然对于数据结构和索引感兴趣,所以研究了下mysql数据库,

    参考书籍:MySql技术内幕--InnoDB存储引擎(Insinde Mysql:InnoDB Storage Engine)

    参考文章:MySQL背后的数据结构和算法 http://www.cnblogs.com/rollenholt/articles/2424531.html

目录:

   1. MySQL体系结构

   2. MySQL索引结构(MyISAM、InnoDB) -- B+Tree    

   3. 索引使用策略及优化    

1. MySQL体系结构

   如下图所示,MySQL由以下几部分组成:

  • 连接池组件
  • 管理服务和工具组件
  • SQL接口组件
  • 查询分析器组件
  • 优化器组件
  • 缓冲(Cache)组件
  • 插件式存储引擎
  • 物理文件 

未命名.bmp


2. MySQL索引结

    目前MySQL常用的存储引擎主要是MyISAM和InnoDB这两种。

  • MyISAM采用的是B+Tree索引结构,叶子节点存储数据存放的位置,采用非聚集索引
  • InnoDB采用的是B+Tree所有结构,叶子节点存储的是数据,节点与节点之间采用的是双链表进行连接,采用的是聚集索引,因为在InnoDB中数据顺序已经排列好了,当需要添加其他索引的时候,可以使用辅助索引(非聚集索引),其也是使用B+Tree,叶子节点记录的是聚集索引的键值,所以当从辅助索引进行查找时,需要先查找辅助索引,再查找聚集索引。  在page的缓存中使用Hash来寻找需要的Page,InnoDB的缓冲池大多是用LRU来进行调度的。

    具体的索引结构可以参考 MySQL背后的数据结构和算法http://www.cnblogs.com/rollenholt/articles/2424531.html,这篇Blog中详细介绍了B-Tree与B+Tree,及B+Tree在MyISAM、InnoDB中的应用,和怎样合理的建立索引


3. 索引使用策略及优化

   建立索引(联合索引)需要考虑到:

  • 字段顺序
  • 某一字段数据的重复程度,过大,则不宜建立索引
  • 最左前缀原理
  • 使用explain进行查看是否走了索引

   具体可以参考 MySQL背后的数据结构和算法http://www.cnblogs.com/rollenholt/articles/2424531.html
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值