阅读innodb_buffer_pool相关文档
This commit is contained in:
@@ -57,7 +57,7 @@ innodb存储引擎是基于磁盘存储的,并将记录基于页的方式进
|
|||||||
>
|
>
|
||||||
> 缓冲池刷新页到磁盘中的操作,由checkpoint机制进行触发,并不会在每次更新缓冲池中的页数据后立马触发。
|
> 缓冲池刷新页到磁盘中的操作,由checkpoint机制进行触发,并不会在每次更新缓冲池中的页数据后立马触发。
|
||||||
|
|
||||||
#### 缓冲池参数配置
|
### 缓冲池参数配置
|
||||||
对于innodb,其缓冲池大小通过`innodb_buffer_pool_size`来配置。默认情况下,`innodb_buffer_pool_size`大小为128M.
|
对于innodb,其缓冲池大小通过`innodb_buffer_pool_size`来配置。默认情况下,`innodb_buffer_pool_size`大小为128M.
|
||||||
|
|
||||||
```sql
|
```sql
|
||||||
@@ -66,3 +66,34 @@ show variables like 'innodb_buffer_pool_size'
|
|||||||
|Variable_name|Value|
|
|Variable_name|Value|
|
||||||
|-------------|-----|
|
|-------------|-----|
|
||||||
|innodb_buffer_pool_size|134217728|
|
|innodb_buffer_pool_size|134217728|
|
||||||
|
|
||||||
|
缓冲池中缓存的数据页类型如下:
|
||||||
|
- 索引页
|
||||||
|
- 数据页
|
||||||
|
- 插入缓冲(insert buffer)
|
||||||
|
- 自适应哈希索引
|
||||||
|
- innodb存储的锁信息
|
||||||
|
- 数据字典信息
|
||||||
|
|
||||||
|
在mysql 8中,innodb可以支持多个缓冲池实例,每个页根据hash值不同被散列到不同缓冲池实例中,这样可以提高应用的并发能力。
|
||||||
|
|
||||||
|
缓冲池实例数量可以通过`innodb_buffer_pool_instances`变量来进行设置,该变量默认值为1.
|
||||||
|
|
||||||
|
#### innodb_buffer_pool_size
|
||||||
|
当修改`innodb_buffer_pool_size`时,操作将会在chunk上执行。chunk size通过`innodb_buffer_pool_chunk_size`来配置。
|
||||||
|
|
||||||
|
令`M = innodb_buffer_pool_chunk size * innodb_buffer_pool_instances`
|
||||||
|
|
||||||
|
`innodb_buffer_pool_size`必须等于`M`或是`M`的整数倍。如果`innodb_buffer_pool_size`不等于M且不是M的整数倍,那么`innodb_buffer_pool_size`将会被自动调整到等于M或是M的整数倍。
|
||||||
|
|
||||||
|
> #### 设置innodb_buffer_pool_size示例
|
||||||
|
> `innodb_buffer_pool_chunk_size`其默认大小为128M,如果将`innodb_buffer_pool_instances`调整为16,那么`M`值为`128M * 16 = 2G`.
|
||||||
|
>
|
||||||
|
> ##### 将innodb_buffer_pool_size设置为8G
|
||||||
|
> 由于`8G = 2G * 4`,那么8G是2G的整数倍,此时该innodb_buffer_pool_size有效
|
||||||
|
>
|
||||||
|
> ##### 将innodb_buffer_pool_size设置为9G
|
||||||
|
> 由于9G不是2G的整数倍,那么innodb_buffer_pool_size将会被自动调整到10G,10G是2G的整数倍
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user