innodb优化之参数优化一

  mysql innodb主要的三个buffer:innodb_buffer_pool_size、innodb_log_buffer_size、innodb_addtional_mem_buffer_size

  innodb_buffer_pool_size,缓存池。

  它缓存 数据页、索引页、undo页、insert缓存、自适应哈希页(adaptive_hash_index)、锁信息等;

  是innodb引擎最主要的buffer,在官方文档中,建议这个buffer占整台服务器内存值得50%~80%。但是这样设置在实际应用中是不合理的,因为我们一台服务器可能会有很多的实例,不能把大部分内存分配给一个实例;

  合理的size是,先统计实例中活跃数据的大小,buffer_pool的值应该为活跃数据的大小,100%~120%。

  检测标准时缓存命中率不低于99%;

  buffer pool命中率的计算方法如下:

mysql> show status like %innodb%read%;
+-----------------------------------+---------+
| Variable_name                     | Value   |
+-----------------------------------+---------+
| Innodb_buffer_pool_read_ahead_rnd | 1       |
| Innodb_buffer_pool_read_ahead_seq | 0       |
| Innodb_buffer_pool_read_requests  | 238     |
| Innodb_buffer_pool_reads          | 19      |
| Innodb_data_pending_reads         | 0       |
| Innodb_data_read                  | 3330048 |
| Innodb_data_reads                 | 34      |
| Innodb_pages_read                 | 70      |
| Innodb_rows_read                  | 0       |
+-----------------------------------+---------+
  Innodb_buffer_pool_reads        //从硬盘读取的次数
  Innodb_buffer_pool_read_ahead     //预读次数
  Innodb_buffer_pool_read_requests   //从内存中读取的次数
  Innodb_data_read            //从内存中读取的字节数
  Innodb_data_reads            //请求读取的次数

  预读次数=Innodb_buffer_pool_read_ahead_rnd+Innodb_buffer_pool_read_ahead_seq  
  缓存命中率=Innodb_buffer_pool_read_requests/(Innodb_buffer_pool_reads+Innodb_buffer_pool_read_requests+Innodb_buffer_pool_read_ahead)
每次读取的字节数=Innodb_data_read/Innodb_data_reads

    同样我们还可以计算每次读取的页等信息。

    更详细的信息我们可以查看show engine innodb status\G;

 

  innodb_log_buffer_size,日志缓存。

    日志缓冲将重做日志先放入这个缓存,然后按照一定频率把日志缓冲中的数据刷进redo log中;

    这个频率由master thread控制,基本每秒一次,因此这个buffer不需要很大,我们要估计每秒最大的事务提交和写入量;

    这个buffer默认为8M,一般足够用;

  innodb_addtional_mem_buffer_size,额外的缓存。

    存储一些数据结构,数据字典信息,当这个buffer不够时,会从buffer pool中申请内存;

    这个参数Mysql设置一般为16M,对于一个两三百张表和字段的库来说,这个默认值一般完全足够用;

  

  

innodb优化之参数优化一,古老的榕树,5-wow.com

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。