如果 初始化缓冲池时 innodb_buffer_pool_chunk_size* innodb_buffer_pool_instances大于当前缓冲池大小, innodb_buffer_pool_chunk_size 则截断为 innodb_buffer_pool_size/ innodb_buffer_pool_instances。

缓冲池大小必须始终等于innodb_buffer_pool_chunk_size *  innodb_buffer_pool_instances的倍数。如果更改 innodb_buffer_pool_chunk_size, innodb_buffer_pool_size 则会自动舍入为等于innodb_buffer_pool_chunk_size * innodb_buffer_pool_instances的倍数。初始化缓冲池时会进行调整。

举例说明:

innodb_buffer_pool_size设置为3G,innodb_buffer_pool_instances设置为8。innodb_buffer_pool_chunk_size默认值为128M。

3G是有效的innodb_buffer_pool_size值,因为3G是innodb_buffer_pool_instances = 8 * innodb_buffer_pool_chunk_size = 128M的倍数

innodb_buffer_pool_size设置为3G,innodb_buffer_pool_instances设置为16. innodb_buffer_pool_chunk_size为128M。

3G不是有效的innodb_buffer_pool_size值,因为3G不是innodb_buffer_pool_instances = 16 * innodb_buffer_pool_chunk_size = 128M的倍数,可以看出innodb_buffer_pool_size的值自动调整到4GB。

截断举例:

如果缓冲池初始化的大小为2GB(2147483648字节), 4缓冲池实例和块大小1GB(1073741824字节),则块大小将截断为等于innodb_buffer_pool_size/ 的值innodb_buffer_pool_instances

shell> mysqld --innodb-buffer-pool-size=2147483648 --innodb-buffer-pool-instances=4
--innodb-buffer-pool-chunk-size=1073741824; mysql> SELECT @@innodb_buffer_pool_size;
+---------------------------+
| @@innodb_buffer_pool_size |
+---------------------------+
| 2147483648 |
+---------------------------+ mysql> SELECT @@innodb_buffer_pool_instances;
+--------------------------------+
| @@innodb_buffer_pool_instances |
+--------------------------------+
| 4 |
+--------------------------------+ # Chunk size was set to 1GB (1073741824 bytes) on startup but was
# truncated to innodb_buffer_pool_size / innodb_buffer_pool_instances mysql> SELECT @@innodb_buffer_pool_chunk_size;
+---------------------------------+
| @@innodb_buffer_pool_chunk_size |
+---------------------------------+
| 536870912 |
+---------------------------------+

注意:innodb_buffer_pool_chunk_size可以以1MB(1048576字节)为单位增加或减少,但只能在启动时,命令行字符串或MySQL配置文件中进行修改。为避免潜在的性能问题,块数(innodb_buffer_pool_sizeinnodb_buffer_pool_chunk_size)不应超过1000。更改时应小心 innodb_buffer_pool_chunk_size,因为更改此值可以自动增加缓冲池的大小。在更改之前 innodb_buffer_pool_chunk_size,请计算它将产生的影响, innodb_buffer_pool_size以确保生成的缓冲池大小可以接受

在线缓冲池调整内部

调整大小操作由后台线程执行。增加缓冲池的大小时,调整大小操作:

  • 添加页面chunks(块大小定义 innodb_buffer_pool_chunk_size

  • 隐藏在内存中使用新地址的哈希表,列表和指针

  • 将新页面添加到空闲列表

当这些操作正在进行时,其他线程将被阻止访问缓冲池。

减小缓冲池的大小时,调整大小操作:

  • 对缓冲池进行碎片整理并撤消(释放)页面

  • 删除页面chunks(块大小定义 innodb_buffer_pool_chunk_size

  • 转换哈希表,列表和指针以在内存中使用新地址

参考:官方文档:

https://dev.mysql.com/doc/refman/5.7/en/innodb-parameters.html#sysvar_innodb_buffer_pool_chunk_size

https://dev.mysql.com/doc/refman/5.7/en/innodb-buffer-pool-resize.html

【MySQL参数】-innodb_buffer_pool_chunk_size的更多相关文章

  1. 【缓存池】转-Mysql参数innodb_buffer_pool_size

    转自:https://blog.csdn.net/kk185800961/article/details/79378313/ 以下考虑主要为 Innodb 引擎 [ innodb_buffer_poo ...

  2. MySQL程序之mysql参数详解

    MySQL程序之mysql参数详解 mysql 是一个命令行客户程序,用于交互式或以批处理模式执行SQL语句 用法: mysql [OPTIONS] [database] 参数: 1.-? --hel ...

  3. Mysql 性能优化4 mysql参数配置

    mysql 参数的介绍 大概450项参数,大多保持默认就可以了 错误的参数 崩溃,错误,运行缓慢. 参数最好在生产环境前配置好.最好不要在生产环境 中 直接配置,有可能不会立即生效,或者之前的数据和配 ...

  4. MySQL参数优化案例

    环境介绍 优化层级与指导思想 优化过程 最小化安装情况下的性能表现 优化innodb_buffer_pool_size 优化innodb_log_files_in_group&innodb_l ...

  5. MySQL参数文件及参数修改方法

    MySQL参数文件: MySQL数据库初始化参数由参数文件来设置,如果没有设置参数文件,mysql就按照系统中参数的默认值来启动. 在windows和linux上,参数文件可以被放在多个位置,数据库启 ...

  6. 官方推荐的MySQL参数设置值

    这oracle官方推荐的在OLTP环境下,MySQL参数设置的最佳实践. 下面的参数设置,对系统的性能会很有帮助.但是建议大家还是结合实际情况使用. APPLIES TO: MySQL Server ...

  7. [MySQL] 参数: innodb_flush_log_at_trx_commit和sync_binlog

    MySQL参数: innodb_flush_log_at_trx_commit和sync_binlog innodb_flush_log_at_trx_commit和sync_binlog是MySQL ...

  8. mysql参数讲解

    MySQL配置参数详解: http://blog.csdn.net/wlzx120/article/details/52301383 深入理解mysql参数 http://blog.itpub.net ...

  9. docker环境下mysql参数修改

    原文:docker环境下mysql参数修改 需要修改log_bin为on,看了好几个博客说都需要删掉容器重新生成,然而并非如此, 我们可以用docker cp 命令将docker的文件"下载 ...

随机推荐

  1. 一百零三、SAP中常量的定义CONSTANTS

    一.代码如下 二.运行效果如下

  2. 083-PHP的foreach循环

    <?php $arr = array(1, 2, 3, 4); foreach ($arr as &$value) { $value = $value * 2; } print_r($a ...

  3. C++ 把数组的元素乘以2在输出

    #include<iostream> using namespace std; int main(){ ] = { , , , , }; ; ; i < ; i++) { ) { s ...

  4. Z-function

    用更容易理解的方法处理出 s[l----r]=s[1----r-l+1] 常数比KMP略大,时间复杂度\(O(n)\),方法和manacher很像 #include<bits/stdc++.h& ...

  5. phi

    给定 \(T\) 个正整数 \(n\) ,对于每个 \(n\) ,输出做小的 \(m\) ,使得 \(\phi (m)\ge n\). 思路1:搞个线性欧拉函数筛,后缀最大值,二分查找 思路2:直接求 ...

  6. Intent 显示意图 隐式意图

    //显式意图  :必须指定要激活的组件的完整包名和类名 (应用程序之间耦合在一起) // 一般激活自己应用的组件的时候 采用显示意图  //隐式意图: 只需要指定要动作和数据就可以 ( 好处应用程序之 ...

  7. 1834 [ZJOI2010]network 网络扩容

    题解:先在原网络上跑最大流,然后加上带费用的边跑费用流 高一的时候做这道题怎么想不到? 注意:maxn代表的不一定是同一个变量的范围 #include<iostream> #include ...

  8. python从命令窗口启动脚本 创建并写入内容到文件示例

    写入到文件示例: #!/usr/bin/env python3 from math import exp, log, sqrt import re from datetime import date, ...

  9. Spring框架之一 读取配置文件

    以下代码都是来源于官方源码(Spring-4.3.18.RELEASE),此处只是为自己以后深啃先布局出大概流程,请各看官不要浪费时间看 说明: .. 表示省略代码, // 后的如果不是源码自带则为当 ...

  10. DP背包问题学习笔记及系列练习题

    01 背包: 01背包:在M件物品中取出若干件物品放到背包中,每件物品对应的体积v1,v2,v3,....对应的价值为w1,w2,w3,,,,,每件物品最多拿一件. 和很多DP题一样,对于每一个物品, ...