首页 > 其他分享 >唯一/普通索引的选择?change buffer

唯一/普通索引的选择?change buffer

时间:2023-01-27 23:44:55浏览次数:41  
标签:buffer 更新 索引 普通 page change

change buffer

一块存储了更新操作的缓冲区。它存在于 MySQL 的 buffer pool 中。

它是怎么作用的:
对于普通索引,如果更新操作的目标page页不在内存中,那么会先将这些更新操作记录在change buffer中。等到 select 操作将该目标page页查询到内存时会执行更新。这样减少了随机访问磁盘的次数。

对于唯一索引,由于执行更新操作时必须先将目标page页读取到内存中判断唯一性,因此没有必要使用该buffer,还能减少维护成本。

适用场景:
写多读少的场合。多次更新操作,然后同时merge buffer中的记录,最大限度的利用了一次磁盘访问。
如果是普通索引,在更新完之后马上就查询刚插入的那条记录,这样并不能降低磁盘访问。

结论:
业务允许的情况下,尽量选择普通索引,因为二者查询效率几乎无差异,而更新效率在change buffer的维护下,普通>唯一索引。

标签:buffer,更新,索引,普通,page,change
From: https://www.cnblogs.com/pzistart/p/17069524.html

相关文章

  • MongoDB 基础(三)mongodb 中的索引使用
    MongoDB中的索引和其他数据库索引类似,也是使用B-Tree结构。MongoDB的索引是在collection级别上的,并且支持在任何列或者集合内的文档的子列中创建索引。 下面是官方给出的一......
  • Day03 - 事务索引查询及PyMySQL
    1.将查询结果插入到另一张表中思考目前只有一个goods表,我们想要增加一个商品分类信息,比如:移动设备这个分类信息,只通过goods表无法完成商品分类的添加,那么如何实现添加......
  • MySQL 哈希索引、空间数据索引、全文索引
    1.哈希索引哈希索引基于哈希表实现,仅支持精确匹配索引所有列的查询。对于每行数据,存储引擎都会对所有的索引列计算出一个哈希码。哈希索引将所有的哈希码存储在索引中,同时保......
  • 如何高效高性能的选择使用 MySQL 索引?
    想要实现高性能的查询,正确的使用索引是基础。本小节通过多个实际应用场景,帮助大家理解如何高效地选择和使用索引。1.独立的列独立的列,是指索引列不能是表达式的一部分,也不......
  • BufferedOutputStream
    BufferedOutputStreamBufferedOutputStream是字节流,实现缓冲的输出流,可以将多个字节写入底层输出流中,而不必对每次字节写入调用底层系统应用实例完成音乐/图片的拷贝......
  • MySQL索引使用注意事项
    数据库索引可以提高搜索效率,在创建数据库的时候,就要考虑到,针对哪个业务字段添加什么样的索引,可以提高数据的查询效率。所以,索引在数据库是有很重要的位置的。今天就来学习一......
  • 【Linux】Ubuntu镜像索引
    ✨Ubuntu镜像索引Ubuntu官方网站似乎UbuntuARM镜像并不容易寻找可以点击如下链接前往Ubuntu镜像索引选择需要版本http://cdimage.ubuntu.com/可以非常方便地下载到Des......
  • 【Linux】Kali Linux镜像索引
    ✨KaliLinux镜像索引通过分析KaliLinux下载链接不难发现如下镜像索引链接较新版本镜像:https://kali.download/base-images/较新版本虚拟机镜像:https://kali.downlo......
  • 应用实例:综合使用BufferedReader和BufferedWriter完成文件拷贝
    publicclassBufferedCopy_{publicstaticvoidmain(String[]args){/***特别说明*1.BufferedReader和BufferedWriter是按照......
  • 处理流——BufferedWriter
    应用实例//演示BufferedWriter的使用publicclassBufferedWriter_{publicstaticvoidmain(String[]args)throwsIOException{StringfilePath="d:......