4

我最近尝试将 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 status 所显示的,

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             | 

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

4

2 回答 2

3

您正在查看错误的数字。

分配的总内存 9576946034

与您的innodb_buffer_pool_size设置一致:

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

Buffer pool size页数

于 2013-10-25T12:30:09.180 回答
1

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

InnoDB 缓冲池的使用可以通过 SHOW GLOBAL STATUS LIKE 'Innodb_buffer_pool_pages_%' 命令来测量。数据、杂项和空闲页面的总和等于总页面。而总页数乘以 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/

于 2013-10-25T12:45:24.367 回答