美文网首页
探讨mysql的普通索引和唯一索引

探讨mysql的普通索引和唯一索引

作者: 温岭夹糕 | 来源:发表于2021-03-23 22:37 被阅读0次

前言

mysql的唯一索引和普通索引有什么区别,从B+树的查找来讲普通索引比唯一索引多回了一次表(因为唯一索引已经缺点了索引的唯一性,找到了就停止查找,普通索引还需往下确认),但其性能差距是微乎其微的。同时我们也在前文mysql语句的执行流程中提到过change buffer,

innodb按数据页将记录从磁盘读取到内存,默认16KB,当要执行写操作且要操作的数据刚好没有在内存中(占用buffer pool)时,就会将该操作缓存在change buffer这个缓冲区中,等下一次查询再做merge操作。
change buffer实际是可持久化数据,内存中会记录磁盘也会写入

change buffer能减少IO的读写,提高内存的利用率,但是并不是所有情况都会用到change buffer--索引的唯一性就是条件。

将数据从磁盘读入内存涉及到随机IO访问是数据库成本最高的操作之一,change buffer正是因此能提升很大的性能

唯一索引的写操作

对于唯一索引来说,要进行插值操作(k=4),就要判断k=4这个索引是否已经存在,而这必须要将数据读入内存才能判断,都已经读入内存了,那直接更新内存会更快,就用不到change buffer了!因此唯一索引的写操作不能使用change buffer

当使用change buffer时,merge操作才是真正的更新数据,所以当一个数据页做merge更新时,change buffer记录越多收益越大,即写多读少的业务。那写少读多呢?一条数据在写入后立即要进行读取,即使立即触发merge,随机访问IO的次数也不会减少,反而增加了chang buffer的维护代价,反而起了反作用。当然所有优化的前提是确保业务的正确性

相关文章

  • 探讨mysql的普通索引和唯一索引

    前言 mysql的唯一索引和普通索引有什么区别,从B+树的查找来讲普通索引比唯一索引多回了一次表(因为唯一索引已经...

  • MySQL操作索引

    MySQL操作索引 增加普通索引 增加唯一索引 删除索引

  • MYSQL索引

    mysql的4种常用索引类型:唯一索引,主键索引,全文索引,以及普通索引。 普通索引(INDEX):普通索引为索引...

  • MySQL 唯一索引和非唯一索引(普通索引)区别

    如果在一个列上同时建唯一索引和普通索引的话,mysql 会自动选择唯一索引唯一索引和普通索引使用的结构都是 B-t...

  • MySql 数据查询优化

    1. MySQL索引类型: mysql的索引有5种:主键索引、普通索引、唯一索引、全文索引、聚合索引(多列索引)。...

  • mysql

    1.mysql索引的类型,主键索引、唯一索引、普通索引、组合索引、全文索引,b-tree索引 2.mysql具体有...

  • MySQL索引简介

    索引的分类 1. 普通索引和唯一索引 普通索引是mysql 中的基本索引类型,允许在自定义索引的列中插入重复值和空...

  • 7. Interview-MySQL

    1 MySQL索引类型? 普通索引,index 主键索引,primary 唯一索引,unique index 全文...

  • MySQL 面试系列:为什么MySQL字符串不加引号索引失效?

    其它MySQL 面试系列: MySQL 面试系列:如何选择普通索引和唯一索引?[https://www.jians...

  • 49-MySQL-索引的创建与删除

    一、索引分类 MySQL的索引包括普通索引、唯一性索引、全文索引、单列索引、多列索引和空间索引等①:从功能逻辑上说...

网友评论

      本文标题:探讨mysql的普通索引和唯一索引

      本文链接:https://www.haomeiwen.com/subject/vtppqltx.html