InnoDB存储引擎使用哈希算法来对字典进行查找,其冲突机制采用链表方式,哈希函数采用除法散列方式。对于缓冲池页的哈希表来说,在缓冲池中的Page页都有一个chain指针。它指向相同哈希函数值的页的。而对于除法散列,m的取值略大于2倍的缓冲池页数量的质数。例如:当前参数innodb_buffer_pool_size的大小为10M,则共有640个16kb的页。对于缓冲池页内存的哈希表来说,需要分配640*2=1280个槽,但是由于1280不是质数,需要取比1280略大的一个质数,应该是1399,所以在启动时会分配1399个槽的哈希表,用来哈希查询所在缓冲池中的页

那么在InnoDB存储引擎的缓冲池对于其中的页事怎么进行查找的呢?上面只是给出了一般的算法,怎么讲查找的页转换成自然数呢?

其实很简单,InnoDB存储引擎的表空间都有一个space_id,用户索要查找的应该是某个表空间 某个连续16KB的页,即偏移量offset,InnoDB存储引擎将space_id左移20位,然后加上这个space_id和offset,即关键字K=space_id<<20+space_id+offset,然后通过触发散列到各个槽中

最新文章

  1. StringBuffer
  2. 生成证书时Distribution下面App Store and Ad Hoc 选项不能选择的原因及解决办法
  3. Jquery核心函数
  4. phpStudy(lnmp)集成环境安装
  5. 深度探索C++对象模型读书笔记(2)
  6. Mvvm Light Toolkit for WPF/Silverlight系列之搭建mvvmlight开发框架
  7. java答疑
  8. BZOJ 1030 [JSOI2007]文本生成器
  9. Centos6.4在配置Tomcat7工作文件夹和虚拟路径
  10. sass安装步骤
  11. 重定向和servlet生命周期
  12. nginx 配置proxy_pass URL末尾加与不加/(斜线)的区别
  13. Centos发布java的war包后,无法访问发布的工程
  14. UnzipUtil
  15. Leetcode 中Linked List Cycle 一类问题
  16. linux 命令基础一。
  17. NOIP 2016 换教室 (luogu 1850 &amp; uoj 262) - 概率与期望 - 动态规划
  18. nginx 和 php超时设置
  19. CF258D Little Elephant and Broken Sorting (带技巧的DP)
  20. MongoDB之集合管理一

热门文章

  1. C# t4模版引擎笔记 引入外部dll
  2. J2EE的体系架构——J2EE
  3. SpringCloud系列十三:Feign对继承、压缩、日志的支持以及构造多参数请求
  4. PILE读书笔记_标准I/O
  5. 阿里云RDS备份的tar格式包恢复到本地自建数据库
  6. formail 发送HTML 邮件通过 SENDMAIL
  7. ffmpeg中的x264编码选项,对应关系
  8. python 使用正则表达式的爬虫
  9. goldengate原理与简单配置
  10. ASP.NET:把ashx写到类库里并在页面上调用的具体方法