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),定期刷新到磁盘中

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MySQL数据库的内存结构主要包括以下几个部分:buffer pool、change buffer、Log Buffer和adaptive Hash Index。 buffer pool是MySQL中最重要的内存结构,它用于缓存数据页,提高查询性能。当查询需要读取或写入数据时,首先会检查buffer pool中是否已经存在相应的数据页,如果存在,则直接在内存中进行操作,避免了频繁的磁盘读写操作。 change buffer是用于处理插入、删除和修改等操作引起的索引变化。当数据页不在buffer pool中时,change buffer会将这些操作记录下来,然后在将来的某个时刻将其应用到对应的索引页上,减少了直接修改索引页的次数,提高了性能。 Log Buffer是用于缓存事务日志的内存区域。当执行事务操作时,MySQL会将修改数据的操作记录到事务日志中。Log Buffer可以减少对硬盘的写操作,提高了事务的执行速度。 adaptive Hash Index是一种自适应哈希索引,用于加速热点数据的访问。它会根据查询的模式动态地调整哈希索引的大小和形状,以提高查询性能。 通过这些内存结构的合理使用,可以提高MySQL数据库的性能和响应速度。更详细的信息可以参考MySQL官方文档中关于InnoDB内存结构的说明。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [mysql的架构、数据结构(内存+磁盘)](https://blog.csdn.net/early_or_later/article/details/106407689)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [mysql 内存架构](https://blog.csdn.net/jnrjian/article/details/129204260)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值