innodb缓冲池大小变量和innodb状态不匹配的缓冲池大小

时间:2013-10-25 11:56:25

标签: mysql buffer innodb

我最近尝试将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             | 

有人可以让我知道导致这种差异的原因吗?

2 个答案:

答案 0 :(得分:3)

你正在查看错误的数字。

  

分配的总内存9576946034

使用innodb_buffer_pool_size设置

This is consistent

  

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

Buffer pool size页面的数量

答案 1 :(得分:1)

您应该与Total Memory allocated输出

中的Show Engine InnoDB status;值进行比较

可以使用SHOW GLOBAL STATUS LIKE'Innodb_buffer_pool_pages_%'命令测量InnoDB缓冲池的用法。数据,misc和空闲页面的总和相当于总页数。总页数乘以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/