一个纠结的问题:Mysql哪些数据在内存?

MySQL的Buffer Pool是其内存管理的重要部分,用于缓存表和索引数据,提高查询速度。它采用LRU算法进行页面管理,分为新旧两个子列表,频繁访问的数据保留在内存中。Buffer Pool的默认配置将3/8的空间分配给旧列表,新读取的页面会先放入旧列表的头部,被访问后移至新列表。此外,MySQL还有change buffer和sort buffer等其他内存组件。
摘要由CSDN通过智能技术生成

        首先看一下索引,索引在内存吗?

        在磁盘上,b+tree, 每个节点是一个page;实际上不可能放在内存中,因为聚簇索引所有叶子节点是数据,这些数据太多了,内存放不下。

        那难道Mysql不使用内存来加快查询速度?常听到的数据库缓存是什么意思?

        缓存这个词很有歧义。这种缓存说的是应用程序的缓存还是文件系统缓存(filesystem cache)呢?读取磁盘上的文件都会有filesystem cache,这是操作系统本身提供的,是一个底层的,和程序无关的机制。Mysql应该也有自己的优化机制。这个机制是什么呢?

        如果你使用innoDB引擎的话,应该听说过buffer pool 。看一下 MySQL :: MySQL 5.7 Reference Manual 对这个词的解释。

The buffer pool is an area in main memory where InnoDB caches table and index data as it is accessed. The buffer pool permits frequently used data to be accessed directly from memory, which speeds up processing. On dedicated servers, up to 80% of physical memory is often assigned to the buffer pool.

For

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值