【问题标题】:Innodb buffer pool size variable and buffer pool size in innodb status mismatchInnodb 缓冲池大小变量和 innodb 状态中的缓冲池大小不匹配
【发布时间】:2013-10-25 11:56:25
【问题描述】:

我最近尝试将 innodb 缓冲池大小增加到 8GB,但在我的 innodb 状态下,池大小看起来像之前配置的值(在我的情况下为 500MB)。

----------------------
BUFFER POOL AND MEMORY
----------------------
Total memory allocated 9576946034; in additional pool allocated 19271936
**Buffer pool size   524288**
Free buffers       2
Database pages     508873
Modified db pages  5
Pending reads 0
Pending writes: LRU 0, flush list 0, single page 0
Pages read 443350, created 76998, written 683297
0.00 reads/s, 0.00 creates/s, 0.37 writes/s
Buffer pool hit rate 1000 / 1000

但这就是innodb状态所显示的,

mysql> show variables like 'innodb_%';
+---------------------------------+------------------------+
| Variable_name                   | Value                  |
+---------------------------------+------------------------+
| innodb_additional_mem_pool_size | 52428800               | 
| innodb_autoextend_increment     | 8                      | 
| innodb_buffer_pool_awe_mem_mb   | 0                      | 
| innodb_buffer_pool_size         | 8589934592             | 

谁能告诉我造成这种差异的原因是什么?

【问题讨论】:

    标签: mysql buffer innodb


    【解决方案1】:

    你看错了数字。

    分配的总内存 9576946034

    This is consistent 与您的innodb_buffer_pool_size 设置:

    InnoDB 为缓冲区和控制结构保留额外的内存,因此总分配空间大约比指定大小大 10%。

    Buffer pool size页数

    【讨论】:

      【解决方案2】:

      您应该与Show Engine InnoDB status; 输出中的Total Memory allocated 值进行比较

      可以使用 SHOW GLOBAL STATUS LIKE 'Innodb_buffer_pool_pages_%' 命令测量 InnoDB 缓冲池的使用情况。数据、杂项和空闲页面的总和等于总页面。并且总页数乘以 Innodb_page_size 对应于你的 innodb_buffer_pool_size。

      (Innodb_buffer_pool_pages_data+ Innodb_buffer_pool_pages_misc + Innodb_buffer_pool_pages_free) = Innodb_buffer_pool_pages_total

      Innodb_buffer_pool_pages_total * Innodb_page_size = innodb_buffer_pool_size

      来自Show Engine InnoDB Status 输出:

      您可以看到 Innodb 分配的总内存(有时它比您预期的要高)、在附加内存池中分配的内存量(因此您可以检查它的大小是否正确)、缓冲池中的总页数、数量空闲页数、由数据库页分配的页数和脏页数。从这些值中,您可以了解缓冲池的大小是否合适——如果您经常有大量可用页面,这可能意味着您的活动数据库大小小于分配的缓冲池大小,因此您可以将其调低。即使空闲页数为零,在这种情况下,数据库页数也不会等于缓冲池的总大小,因为缓冲池还存储锁信息、自适应哈希索引和一些其他系统结构。

      http://www.fromdual.com/innodb-variables-and-status-explained

      http://www.mysqlperformanceblog.com/2006/07/17/show-innodb-status-walk-through/

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-07-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-05-19
        • 2018-02-23
        相关资源
        最近更新 更多