• MySql优化记录【innodb_buffer_pool_size】、【innodb_buffer_pool_instances】、【innodb_buffer_pool_chunk_size】


    一、【innodb_buffer_pool_size】

      对于InnoDB表来说,innodb_buffer_pool_size的作用就相当于key_buffer_size对于MyISAM表的作用一样。InnoDB使用该参数指定大小的内存来缓冲数据和索引。对于单独的MySQL数据库服务器,最大可以把该值设置成物理内存的80%。
    根据MySQL手册,对于2G内存的机器,推荐值是1G(50%)。

     重点是50%这个参数,配置的方式如下:

     在my.ini里增加

    innodb_buffer_pool_size=2G
    如下图:

    、【innodb_buffer_pool_instances】

      这个参数能较好的运行于多核处理器,支持使用 此参数对服务器变量建立多个缓冲池实例,每个缓冲池实例分别自我管理空闲列表、列表刷写、LRU以及其它跟缓冲池相关的数据结构,并通过各自的互斥锁进行保护。

      在这个文章里测试后的结论是:4G内存的电脑 ,配置成1比较好  参考网址: https://blog.csdn.net/qing_gee/article/details/42742241

      在另外一个文章里,说是配置成CPU的核心数比较好,参考网址:https://www.jianshu.com/p/f84fe0979cdf

      摘抄如下:

    pool_instances 可以设置为cpu核心数,它的作用是:对于缓冲池在数千兆字节范围内的系统,通过减少争用不同线程对缓存页面进行读写的争用,将缓冲池划分为多个单独的实例可以提高并发性。
    可以类比为 java中的ThreadLocal 线程本地变量 就是为每个线程维护一个buffer pool实例,这样就不用去争用同一个实例了。相当于减少高并发下mysql对INNODB_BUFFER缓冲池的争用。

    三、【innodb_buffer_pool_chunk_size】

      innodb_buffer_pool_size必须始终等于innodb_buffer_pool_chunk_size或 innodb_buffer_pool_instances的倍数。如果将缓冲池大小更改为不等于innodb_buffer_pool_chunk_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_size参数以后,速度提升很大【我是4G的内存,就把innodb_buffer_pool_size和innodb_buffer_pool_chunk_size 设置成了2G】。另外:innodb_buffer_pool_instances这个参数我设置成了1,没有明显变化。

  • 相关阅读:
    nginx日志格式配置
    shell入门(一)
    shell批量创建随机文件名格式文件
    Centos7 下安装配置tomcat7
    Linux安装VM虚拟化软件
    mysql初探
    java.lang.ClassNotFoundException: org.apache.commons.collections.FastHashMap
    HTTP Status 500 ? Internal Server Error
    如何使用Chrome浏览器查看网页的响应头
    Servlet的API
  • 原文地址:https://www.cnblogs.com/wjx-blog/p/15213630.html
Copyright © 2020-2023  润新知