你好,同学。很高兴你又来和我一起努力来学习了。我想你一定明白一个道理,人与人之间最大的区别就在于脑袋的区别了,在加上每个人时间都很宝贵,所以在这里我会用我最大的努力为你讲解好每一课。在这里我会让你时间花得值,会让你真真正正学到有用的东西。今天我们这几课主要回答InnoDBchangebuffer的相关面试问题,其实我想告诉你的是:今天这些需要你背会并且掌握。(后期会对重点知识点详细讲解)changebuffer面试的那些事Mysql索引:原来普通索引和唯一索引的区别不至于changebuffer在MySQL中与Buffer相关的都有哪些,可以具体说说吗?在MySQL中与Buffer相关的有changebuffer、insertbuffer,它们都是一种特殊的数据结构。InnoDB从1.0.x版本开始引入了ChangeBuffer,提升了insertbuffer的插入缓存,InnoDB存储引擎可以对insert、delete、update都进行缓存。(看上面那篇文章)有关changebuffer的哪些类型的操作会修改二级索引并导致更改缓冲?INSERT、UPDATE和DELETE操作可以修改二级索引。如果受影响的索引页不在缓冲池中,则可以在更改缓冲区中缓冲更改。(会有一篇专门讲解)InnoDB缓存区都有哪些好处?当辅助索引页不在缓冲池中时,缓冲辅助索引会发生变化,从而避免了从磁盘中立即读入受影响的索引页所需的昂贵的随机访问I/O操作。缓存更改可以稍后批量应用,因为页面通过其他读取操作读入缓冲池。(会有一篇专门讲解)更改缓冲区是否支持其他类型的索引?不可以。更改缓冲区仅支持二级索引。不支持聚簇索引,全文索引和空间索引。全文索引有自己的缓存机制。InnoDB变更缓冲区使用了多少空间?innodb_change_buffer_max_size在MySQL5.6中引入配置选项之前,系统表空间中磁盘更改缓冲区的最大大小是InnoDB缓冲池大小的1/3。在MySQL5.6及更高版本中,innodb_change_buffer_max_size配置选项将更改缓冲区的最大大小定义为总缓冲池大小的百分比。默认情况下,innodb_change_buffer_max_size设置为25.最大设置为50。InnoDB如果它会导致磁盘更改缓冲区超出定义的限制,则不会缓冲操作。更改缓冲区页面不需要在缓冲池中持久存在,并且可能会被LRU操作逐出。(会有一篇专门讲)如何确定更改缓冲区的当前大小?查看缓冲区的当前大小由SHOWENGINEINNODBSTATUS\G报告的。具体看INSERTBUFFERANDADAPTIVEHASHINDEX例如:SHOWENGINEINNODBSTATUS\G-------------------------------------INSERTBUFFERANDADAPTIVEHASHINDEX-------------------------------------Ibuf:size1,freelistlen0,segsize2,4merges相关数据点包括:size:更改缓冲区中使用的页数。更改缓冲区大小等于segsize-(1+freelistlen)。该1+值表示更改缓冲区标头页。segsize:更改缓冲区的大小,以页为单位。(会有一篇专门讲)何时更改缓冲区合并?当页面被读入缓冲池时,在页面可用之前,在读取完成时合并缓冲的更改。更改缓冲区合并作为后台任务执行。该innodb_io_capacity参数设置InnoDB后台任务执行的I/O活动的上限,例如合并来自更改缓冲区的数据。在崩溃恢复期间执行更改缓冲区合并。当索引页被读入缓冲池时,更改缓冲区(在系统表空间中)将更改应用于二级索引的叶页。更改缓冲区完全耐用,可以在系统崩溃后继续运行。重启后,更改缓冲区合并操作将恢复为正常操作的一部分。可以强制更改缓冲区的完全合并作为使用缓慢服务器关闭的一部分--innodb-fast-shutdown=0。刷新更换缓冲区的时间是什么时候?更新的页面由刷新占用缓冲池的其他页面的相同刷新机制刷新。应该何时使用更改缓冲区?更改缓冲区是一种功能,旨在随着索引变大并且不再适合InnoDB缓冲池而减少对二级索引的随机I/O.通常,当整个数据集不适合缓冲池,存在修改二级索引页的大量DML活动时,或者存在大量由DML活动定期更改的二级索引时,应使用更改缓冲区。应该何时不使用更改缓冲区?如果整个数据集适合InnoDB缓冲池,如果您的二级索引相对较少,或者您使用的是固态存储,则可以考虑禁用更改缓冲区,其中随机读取的速度与顺序读取速度一样快。在进行配置更改之前,建议您使用代表性工作负载运行测试,以确定禁用更改缓冲区是否提供任何好处。总结这篇我们深入讲解了changebuffer,这些都是理论知识点,请大家一定要记住并且可以深入理解。相关文章后面会陆续推出,在这里你学到的不在是知识点满天飞的MySQL基础,而是MySQL原理的深入掌握。恭喜你又学会了一篇,如果天天这样学习那你离梦想还远吗?希望你可以把好文分享给更多的人去阅读,同时也希望你可以
转载请注明:http://www.aierlanlan.com/cyrz/6022.html