mysql
抬头文
这个作者很懒,什么都没留下…
展开
-
lru链表以及buffer pool运行机制
lru链表以及buffer pool运行机制一、lru链表lru链表来判断淘汰哪些缓存页,比如说内存不够用了,没有空闲缓存页了,mysql并不能凭空就知道该淘汰哪些缓存页,所以引入了lru链表,将最新更新的缓存页加入到头部,一致没有被访问的缓存页则会慢慢的在最尾部,所以单缓存页不够了,则找最尾部的缓存页释放。二、buffer pool 预读机制预读机制就是但是mysql发现,用户访问了很多数据页,回把相邻旁边的数据页也加载的缓存页中。①、有一个参数innodb_read_ahead_thres原创 2021-08-08 23:07:17 · 209 阅读 · 1 评论 -
Buffer Pool数据结构
Buffer Pool数据结构一、缓存页缓存页所对应的就是磁盘数据页,同样的数据结构缓存到内存中二、free链表free链表是一个双向链表,头节点指向第一个节点和最后一个节点,存储的数据意义主要是空闲的缓存页。节点指针存放在描述数据的数据结构中,也就是说出了头节点的内存占用不额外占用内存,有空闲页则链起来,空闲页清除,则去掉改节点。三、数据页缓存hash表是由表空间号+数据页号为key,缓存页地址指针为值。当上游系统查询一条数据的时候,找到对应的数据页前会到此hash表看看是否有缓存页原创 2021-08-01 22:53:14 · 239 阅读 · 1 评论 -
InnoDB存储引擎
InnoDB存储引擎一、buff缓冲池是数据库的一个内存组件,缓存了磁盘上的真实数据,上游系统调用curd主要就是对内存里面buffer pool操作二、undo日志写入更新前的旧值,用于回滚。记录的是每个修改操作的逆操作和一致性非锁定读(undo log 回滚行记录到某种特定的版本---MVCC 多版本并发控制)。三、redo日志以及刷盘策略redo log 和 undo log 都是存储引擎层面上生成的日志,并且都记录了数据的修改:只不过 redo log记录的是"物理级别"上的页修改操原创 2021-07-11 23:29:32 · 60 阅读 · 0 评论