您当前的位置: 首页 >  sql

小志的博客

暂无认证

  • 1浏览

    0关注

    1217博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

Mysql——多实例BufferPool

小志的博客 发布时间:2021-11-03 14:01:35 ,浏览量:1

一、多实例BufferPool的概述
  • 在Buffer Pool特别大并且多线程并发访问量特别高的情况下,单一的Buffer Pool可能会影响请求的处理速度。所以,在Buffer Pool特别大时,可以把它们拆分成若干个小的Buffer Pool,每个Buffer Pool都称为一个实例。它们都是独立的(即独立地申请内存空间,独立地管理各种链表)。
  • 可以通过设置innodb_buffer_pool_instances的值来修改Buffer Pool实例的个数。

在这里插入图片描述

  • 每个Buffer Pool实例实际占用多少内存空间呢,通过如下公式计算:

    # 缓冲池实际占用内存空间 = 缓冲池大小 ÷ 缓冲池实例的个数 
    innodb_buffer_pool_size ÷ innodb_buffer_pool_instances
    
  • 由于管理Buffer Pool也是需要性能开销的,所以也并不是实例越多越好。

  • InnoDB规定,当innodb_buffer_pool_size小于1GB时,设置多个实例是无效的,在这种情况下,即使你设置的innodb_buffer_pool_instances不为1,那么InnoDB默认也会把它改为1。

二、配置Buffer Pool时的注意事项
  • innodb_buffer_pool_size必须是innodb_buffer_pool_chunk_size * innodb_buffer_pool_instances的倍数。否则服务器会自动把innodb_buffer_pool_size的值调整为【innodb_buffer_pool_chunk_size * innodb_buffer_pool_instances】结果的整数倍。

    例如
    	innodb_buffer_pool_chunk_size=128MB  
    	innodb_buffer_pool_instances=16
    那么
    	innodb_buffer_pool_chunk_size * innodb_buffer_pool_instances=2GB
    如果
    	我们设置innodb_buffer_pool_size=9GB,则会被自动调整为10GB
    
  • 在服务启动时,如果innodb_buffer_pool_chunk_size * innodb_buffer_pool_instances > innodb_buffer_pool_size的值,那么innodb_buffer_pool_chunk_size的值会被服务器自动的设置为innodb_buffer_pool_size ÷ innodb_buffer_pool_instances的值。

    例如
    	innodb_buffer_pool_chunk_size=256MB
    	innodb_buffer_pool_instances=16
    那么
    	innodb_buffer_pool_chunk_size * innodb_buffer_pool_instances=4GB
    如果
    	我们设置innodb_buffer_pool_size=2GB,因为4GB > 2GB,
    	则innodb_buffer_pool_chunk_size被修改为128MB。
    
关注
打赏
1661269038
查看更多评论
立即登录/注册

微信扫码登录

0.0788s