##innodb引擎的数据是按页为单位的,当需要读一条记录时,并不是将这个记录本身从磁盘中读取出来,而是以页为单位将整个页读取到内存中,每个页默认大小为16kb

数据查询过程:  磁盘---->内存---->返回结果

数据更新过程: change buffer ---->当有查询,更新到磁盘------->内存-------->返回结果   ###这个过程不确定对不对啊,如果有不对的话  大佬可以留言指出,我是这么理解的

唯一索引和普通索引的性能差异:

在查询过程中,二者的性能几乎相同:

唯一索引,检索到数据后,由于数据的唯一性,不会继续向下查询,直接返回结果。

普通索引,检索到需要的数据后,需要继续向下检索,直到检索到不满足条件位置。需要多做的只是一次“查找和判断下一条记录”,只需要一次指针寻找和计算(多叉树模型)。

在更新过程中:

唯一索引由于数据的唯一性,所有的更新操作都要先判断这个操作是否违反唯一性约束,而这必须需要将数据页读入内存才可以判断,所以不会用到change buffer, 在数据从磁盘读入内存涉及随机IO的访问,是数据库成本最高的操作之一。

普通索引用到了change buffer,减少了随机磁盘访问,对更新的性能会有明显提升。

change buffer:当需要更新一个数据页时,如果数据页在内存就会直接更新,如果不在的话,在不影响数据一致性的前提下,会将DML操作缓存在change buffer中,就不需要从磁盘中读取这个数据页。下次需要访问这个数据页时,将数据页读入内存,然后执行change buffer中与这个页有关的操作。(持久化的数据,也会写入到磁盘)

change buffer好处:更新记录在change buffer  减少了磁盘的随机读; 数据读入内存需要占用buffer poll,用到change buffer缓存还能减少占用内存

merge:将change buffer操作写到原数据页得到最新结果,这个过程称为merge。除了访问这个数据页会触发merge外;系统后台线程也会定期merge;数据库正常关闭,也会merge

change buffer使用场景:

写多读少的业务,比如:账单、日志类

原因:读数据的时候会触发merge,读的越少,change buffer缓存的操作越多,收益就越大。而读频繁的业务会频繁触发merge,随机访问IO次数不会减少,反而增重了change  buffer维护代价。

mysql 索引 内存_mysql索引【第三篇】相关推荐

  1. 高级mysql优化知识_MySQL高级第三篇(索引优化分析)

    使用explain查看sql执行计划进行优化 使用方法,explain+sql语句,如:explain select * from student where id>10 执行计划字段 名次解释 ...

  2. mysql匹配数据结构_MySQL索引背后的数据结构及原理

    前两天经历了武汉一行腾讯面试,数据库索引是一个面试热点,在此搜集相关资料,以备学习之用. 下面是一位牛人写得关于数据库索引的精品之作,因为很好,不敢修饰,转载至此与博友共享. 本文以MySQL数据库为 ...

  3. mysql 索引设计_MySQL 索引原理及设计

    原标题:MySQL 索引原理及设计 索引一直是数据库中非常重要的概念,所以了解索引相关的知识是转入后端开发中必不可少的一环.这篇文章是我从开始做后端开发之后至今学习关于索引知识的一个总结,从原先很多概 ...

  4. mysql范围条件_MySQL 索引及优化实战(一)

    mysql 随着系统用户量的不断增加,MySQL 索引的重要性不言而喻,对于后端工程师,只有在了解索引及其优化的规则,并应用于实际工作中后,才能不断的提升系统性能,开发出高性能.高并发和高可用的系统. ...

  5. mysql选择索引逻辑_Mysql索引选择逻辑

    有时候我们会发现mysql可能出现选错索引的情况,要了解这个问题我们得先看看sql优化器是怎么选择索引的 索引选择逻辑 优化器选择索引的目的,是找到一个最优的执行方案,并用最小的代价去执行语句.在数据 ...

  6. mysql 索引 原理_MySQL索引实现原理分析

    目前大部分数据库系统及文件系统都采用B-Tree(B树)或其变种B+Tree(B+树)作为索引结构.B+Tree是数据库系统实现索引的首选数据结构.在MySQL中,索引属于存储引擎级别的概念,不同存储 ...

  7. 讴 mysql 首字母_MYSQL索引

    什么是索引? 举个例子:新华字典,有目录,有正文内容.索引就相当于目录,正文内容就相当于数据. 索引有什么用? 索引用于快速查找在某列中有一特定值的行. 一条查询语句,如果没有索引,将对全表进行扫描. ...

  8. mysql索引实战_MySQL索引实战经验总结

    MySQL索引对数据检索的性能至关重要,盲目的增加索引不仅不能带来性能的提升,反而会消耗更多的额外资源,本篇总结了一些MySQL索引实战经验. 索引是用于快速查找记录的一种数据结构.索引就像是数据库中 ...

  9. mysql设置id值为索引值_MySQL 索引

    一.索引作用 提供了类似于书中目录的作用,目的是为了优化查询 (一).索引种类 1.B树索引(Balance Tree) 作用 Btree的设计理念,就是让查询能够快速锁定范围,特别适合于范围查询. ...

最新文章

  1. python输出杨辉三角啊二维数组_Java输出杨辉三角形(使用二维数组)
  2. Linux文件和目录权限:chmod、更改所有者和所属组:chown,umask命令,隐藏权限:lsattr/chattr...
  3. 《C++ Primer 4th》读书笔记 第7章-函数
  4. Python学习入门10:零基础如何开始学习 Python?从小白变大牛!
  5. 谈一谈对旋转矩阵的理解
  6. tcp协议的端口状态
  7. 计算机常见故障报警,常见听报警志与故障
  8. java 程序是由什么组成的 java_【问答题】一个典型的JAVA程序结构是由什么组成。...
  9. python好用的模块_python常用的内置模块和常用的第三方模块
  10. 小米手机抓取Log教程
  11. 高纬度思考法读书笔记
  12. 计算机 无法 访问共享网络打印机,共享打印机无法连接怎么办解决方案
  13. 你的windows许可证即将过期
  14. 最全华为ensp路由器启动失败错误代码40怎么办?
  15. 网吧登陆steam启动gta5一直启动不了
  16. 元宇宙:虚拟仿真技术的全面提升
  17. AP6212WIFI蓝牙模块移植过程
  18. SQL注入分类、防御
  19. 盗号、薅羊毛、机器注册、恶意爬虫——618大促背后涌动的欺诈暗流
  20. 什么双机热备? 为什么要做双机热备? 双机热备有哪几种?

热门文章

  1. 如何通过Dataworks禁止MaxCompute 子账号跨Project访问
  2. Redis 压缩列表原理与应用分析
  3. 低碳数据中心,因何而来?一文读懂如何利用超融合降碳
  4. 报告:5G 网络切片可能会给不法分子留下漏洞!
  5. 真正拿大厂offer的人,都赢在这一点
  6. 如何系统学习领域驱动设计?
  7. 电脑卡在正在启动windows界面_让 Linux 启动更快
  8. 秒杀场景_解决秒杀超卖问题_04
  9. Nacos 集群整合 Nginx 实现反向代理、负载均衡_03
  10. 通用mapper 如何处理多表条件查询通过list封装(一对多)