设为首页 加入收藏

TOP

在线调整InnoDB Buffer Pool Size(一)
2019-09-17 18:42:18 】 浏览:64
Tags:在线 调整 InnoDB Buffer Pool Size

 

       InnoDB Buffer Pool主要是用来缓存数据表和索引数据的内存区域,它的默认值为134217728字节(128MB)。最大值取决于CPU架构;32位系统上的最大值为4294967295(232-1),64位系统上的最大值为18446744073709551615(264-1)。在32位系统上,CPU体系结构和操作系统的实际最大大小可能低于标准的最大大小。当缓冲池的大小大于1GB时,将innodb_buffer_pool_instances设置为大于1的值可以提高繁忙服务器上的可伸缩性。

       InnoDB缓冲池更大的场景下,多次访问相同的数据表数据所需要的磁盘I/O就更少。在专用数据库服务器上,可以将缓冲池大小设置为机器物理内存大小的80%。在配置缓冲池大小时要注意以下潜在问题,并准备在必要时缩减缓冲池的大小。

?对物理内存的竞争会导致操作系统分页。
?InnoDB储备增加内存缓冲区和控制结构,以便总分配空间约10%大于指定的缓冲池大小。
?地址空间的缓冲池必须是连续的,可以是一个问题在Windows系统负载在特定地址的dll。
?缓冲池初始化时间大约是与它的大小成正比。对于具有大型缓冲池的实例,初始化时间可能很重要。要缩短初始化周期,可以在服务器关闭时保存缓冲池状态,并在服务器启动时恢复它。

       当您增加或减少缓冲池大小时,操作将以块的形式执行。块大小由innodb_buffer_pool_chunk_size配置选项定义,默认值为128mb。

       缓冲池大小必须始终等于或多个innodb_buffer_pool_chunk_size * innodb_buffer_pool_instances。如果将缓冲池大小更改为不等于或多个innodb_buffer_pool_chunk_size * innodb_buffer_pool_instances的值,缓冲池大小将自动调整为等于或多个innodb_buffer_pool_size * innodb_buffer_pool_instances的值。

       innodb_buffer_pool_size可以动态设置,这允许您在不重启服务器的情况下调整缓冲池的大小。Innodb_buffer_pool_resize_status变量报告在线缓冲池调整大小操作的状态。

?通过InnoDB api执行的活动事务和操作应该在调整缓冲池大小之前完成。
?当启动调整大小操作时,该操作直到所有活动事务完成后才开始。调整大小操作进行后,需要访问缓冲池的新事务和操作必须等待调整大小操作完成。该规则的一个例外是,当缓冲池被碎片化并在缓冲池大小减小时回收页面时,允许对缓冲池进行并发访问。允许并发访问的一个缺点是,在提取页面时,可能会导致可用页面暂时短缺。
?请注意如果在缓冲池调整大小操作开始后启动嵌套事务,则可能会失败。
?在线调整Innodb缓冲池大小请在业务低峰期进行。

      接下来,我们来在线调整InnoDB Buffer Pool

      查看当前系统MySQL的InnoDB Buffer Pool Size为128M

mysql> show global variables like '%innodb_buffer%';
+-------------------------------------+----------------+
| Variable_name                       | Value          |
+-------------------------------------+----------------+
| innodb_buffer_pool_chunk_size       | 134217728      |
| innodb_buffer_pool_dump_at_shutdown | ON             |
| innodb_buffer_pool_dump_now         | OFF            |
| innodb_buffer_pool_dump_pct         | 25             |
| innodb_buffer_pool_filename         | ib_buffer_pool |
| innodb_buffer_pool_instances        | 1              |
| innodb_buffer_pool_load_abort       | OFF            |
| innodb_buffer_pool_load_at_startup  | ON             |
| innodb_buffer_pool_load_now         | OFF            |
| innodb_buffer_pool_size             | 134217728      |
+-------------------------------------+----------------+
10 rows in set (0.00 sec)
View Code

       通过设定全局系统变量innodb_buffer_pool_size来在线调整InnoDB Buffer Pool为1GB

mysql> set global innodb_buffer_pool_size=1073741824;
Query OK, 0 rows affected (0.04 sec)

mysql> show global variables like '%innodb_buffer%';
+-------------------------------------+----------------+
| Variable_name                       | Value          |
+-------------------------------------+----------------+
| innodb_buffer_pool_chunk_size       | 134217728      |
| innodb_buffer_pool_dump_at_shutdown | ON             |
| innodb_buffer_pool_dump_now         | OFF            |
| innodb_buffer_pool_dump_pct         | 25             |
| innodb_buffer_pool_filename         | ib_buffer_pool |
| innodb_buffer_pool_instances        | 1              |
| innodb_buffer_pool_load_abort       | OFF            |
| innodb_buffer_pool_load_at_startup  | ON             |
| innodb_buffer_pool_load_now         | OFF            |
| innodb_buffer_pool_size             | 1073741824     |
+--------------------------
首页 上一页 1 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇[20190320]测试相同语句遇到导致c.. 下一篇实战三种方式部署 MySQL5.7

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目