mysql优化 innodb_buffer_pool_size和innodb_buffer_pool_instances

innodb_buffer_pool_instances参数的功能是:
1、对于缓冲池在数千兆字节范围内的系统,通过减少争用不同线程对缓存页面进行读写的争用,将缓冲池划分为多个单独的实例可以提高并发性。
2、使用散列函数将存储在缓冲池中或从缓冲池读取的每个页面随机分配给其中一个缓冲池实例。每个缓冲池管理自己的空闲列表, 刷新列表,LRU和连接到缓冲池的所有其他数据结构,并受其自己的缓冲池互斥量保护。

设置原则:
1、innodb_buffer_pool_size必须为 innodb_buffer_pool_instances 的倍数,如果不是倍数,则innodb_buffer_pool_size会自动调整为innodb_buffer_pool_instances的倍数。
2、要启用多个缓冲池实例,请将innodb_buffer_pool_instances配置选项设置为 大于1(默认)的值,最大为64(最大)。仅当您将innodb_buffer_pool_size大小设置为1GB或更大时,此选项才生效 。您指定的总大小将分配给所有缓冲池。为了获得最佳效率,指定的组合 innodb_buffer_pool_instances 和innodb_buffer_pool_size,使得每个缓冲池实例是至少为1GB。

默认值:
innodb_buffer_pool_instances参数的默认值为:

innodb_buffer_pool_size<1G时,默认值为1;
innodb_buffer_pool_size>=1G时,默认值为8。

结论:
innodb_buffer_pool_size:
设置为mysql可占用内存的80%,如果是mysql独享主机,就设置为物理机内存的80%
innodb_buffer_pool_instances:
innodb_buffer_pool_size<1G时,设置为1
innodb_buffer_pool_size>=1G时,设置为8

针对当前MySQL企业用户的实际环境(大内存):
1、在专用数据库服务器上,可以将innodb_buffer_pool_size设置为计算机物理内存大小的80%;
2、在innodb_buffer_pool_size设置比较大的情况下,可以将innodb_buffer_pool_instances的值设置为8-16,保证一个pool 10G以上。

(注意innodb_buffer_pool_size必须为 innodb_buffer_pool_instances 的倍数)

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值