当前位置: 首页 > news >正文

mysql内存结构

一:逻辑存储结构:表空间->段->区->页->行、

表空间:一个mysql实例对应多个表空间,用于存储记录,索引等数据。

段:分为数据段,索引段,回滚段。innoDB是索引组织表,数据段就是b+树的叶子节点,索引段就是b+树的非叶子节点。段用来管理多个区。

区:表空间的单元结构。每个区大小1M,默认情况下,innoDB存储引擎大小为16K,即一个区中一共有64个连续的区。

页:innoDB存储引擎磁盘管理的最小单元。每个页的大小默认16KB,为保证页的连续性,innoDB存储引擎每次从磁盘申请4-5个区。

行:就是数据,有两个隐藏字段:

Trx_id:每次对某条记录进行改动时,都会把对应的事务id赋值给trx_id隐藏列。

Roll_pointer:每次对某条引记录进行改动时,都会把旧的版本写入undo日志中,然后这个隐藏列就相当于一个指针,可以通过他来找到该记录修改前的信息。

二:内存架构:

主要是缓冲区:

1.buffer pool,缓冲池,主内存的一个区域,缓存磁盘上经常操作的真实数据,是增删改查首先操作数据的地方(如果没有数据则先从磁盘加载),在缓冲池修改完后再以一定频率刷新到磁盘,减少磁盘io,加快处理速度。由页组成,采用链表管理页,分为空闲页(未使用),被使用页(数据未被修改),脏页(数据被修改,与磁盘中数据不一致)

2.mysql8开始有change buffer(只针对非唯一的二级索引页),dml语句时,如果数据页没在buffer pool中,则先在change buffer中缓存数据的变更,未来读取数据的时候再合并恢复到buffer pool,然后刷新到磁盘。二级索引一般随机插入,dml操作会影响b+树中不相邻的二级索引页,造成大量磁盘io。change buffer可以在缓冲池中合并处理,减少磁盘io。

mysql5是inset buffer

3.自适应hash索引。优化buffer pool的数据查询。innoDB自动监控并根据情况创建hash索引提高速度。

4.log buffer ,日志缓冲区。保存要写入磁盘中的log日志数据(redo log,undo log),定期刷新到磁盘中

相关文章:

  • golang 连接mysql数据库
  • 在docker中运行SLAM十四讲程序
  • 2903. 找出满足差值条件的下标 I
  • 博客说明 5/12~5/24【个人】
  • 超级初始网络
  • python使用xlrd读取excel的时候把字符串读成了数字
  • 【计算机网络】HTTPS 协议原理
  • 【pyspark速成专家】7_SparkSQL编程1
  • 高职物联网专业嵌入式系统开发教学解决方案
  • 【Unity实战】Mirror/UNET中SyncVar和SyncList需要注意的点
  • 【电路笔记】-二阶滤波器
  • Linux-命令上
  • 【面试干货】事务的并发问题(脏读、不可重复读、幻读)与解决策略
  • Pytorch深度学习实践笔记5
  • C++ | Leetcode C++题解之第111题二叉树的最小深度
  • Angular 响应式表单 基础例子
  • centos安装java运行环境jdk+tomcat
  • Date型的使用
  • ECMAScript6(0):ES6简明参考手册
  • ES学习笔记(10)--ES6中的函数和数组补漏
  • magento 货币换算
  • node入门
  • Quartz初级教程
  • spring + angular 实现导出excel
  • Spring Cloud Feign的两种使用姿势
  • vue从创建到完整的饿了么(18)购物车详细信息的展示与删除
  • 汉诺塔算法
  • 蓝海存储开关机注意事项总结
  • 老板让我十分钟上手nx-admin
  • 职业生涯 一个六年开发经验的女程序员的心声。
  • 主流的CSS水平和垂直居中技术大全
  • 自动记录MySQL慢查询快照脚本
  • const的用法,特别是用在函数前面与后面的区别
  • 阿里云服务器如何修改远程端口?
  • 国内开源镜像站点
  • # .NET Framework中使用命名管道进行进程间通信
  • #QT(智能家居界面-界面切换)
  • #设计模式#4.6 Flyweight(享元) 对象结构型模式
  • (C#)Windows Shell 外壳编程系列9 - QueryInfo 扩展提示
  • (vue)页面文件上传获取:action地址
  • (zt)最盛行的警世狂言(爆笑)
  • (附程序)AD采集中的10种经典软件滤波程序优缺点分析
  • (附源码)springboot优课在线教学系统 毕业设计 081251
  • (附源码)ssm本科教学合格评估管理系统 毕业设计 180916
  • .NET 4.0中的泛型协变和反变
  • .net core Swagger 过滤部分Api
  • .NET Core 中的路径问题
  • .NET Framework 和 .NET Core 在默认情况下垃圾回收(GC)机制的不同(局部变量部分)
  • .net 后台导出excel ,word
  • .NET 中使用 Mutex 进行跨越进程边界的同步
  • .NET/C# 解压 Zip 文件时出现异常:System.IO.InvalidDataException: 找不到中央目录结尾记录。
  • .sh文件怎么运行_创建优化的Go镜像文件以及踩过的坑
  • /proc/vmstat 详解
  • @Repository 注解
  • [ C++ ] STL priority_queue(优先级队列)使用及其底层模拟实现,容器适配器,deque(双端队列)原理了解