数据库缓冲池
缓冲池管理器会尽量将经常使用的数据保存起来,在数据库进行页面读操作的时候,首先会判断该页面是否在缓冲池中,如果存在就直接读取,如果不存在,就会通过内存或磁盘将页面存放到缓冲池中再进行读取。
缓冲池会采用一种叫做 checkpoint 的机制将数据回写到磁盘上。
查看缓冲池大小
show variables like 'innodb_buffer_pool_size'
在 InnoDB 存储引擎中,我们可以同时开启多个缓冲池,这里我们看下如何查看缓冲池的个数,使用命令:
show variables like 'innodb_buffer_pool_instances'
实际上innodb_buffer_pool_instances默认情况下为 8,为什么只显示只有一个呢?这里需要说明的是,如果想要开启多个缓冲池,你首先需要将innodb_buffer_pool_size参数设置为大于等于 1GB,这时innodb_buffer_pool_instances才会大于 1。
数据页加载的三种方式
- 内存读取,一个页读取时间:1ms左右
- 随机读取,一个页读取时间:10ms左右
- 顺序读取,批量读取,一个页的读取时间为 0.4ms
统计 SQL 语句的查询成本
SHOW STATUS LIKE 'last_query_cost';
得到当前查询的成本,这个查询成本对应的是 SQL 语句所需要读取的页的数量
此文章为4月Day21学习笔记,内容来源于极客时间《SQL必知必会》