Mysql

獲取 innodb 緩衝區使用情況

  • August 25, 2018

我正在執行 MySQL 5.5.52 我想看看我的 innodb 緩衝池有多少被使用了。如果我執行“show engine innodb status”,我會看到:

----------------------
BUFFER POOL AND MEMORY
----------------------
Total memory allocated 10731520; in additional pool allocated 0
Dictionary memory allocated 1823022
Buffer pool size   639
Free buffers       0
Database pages     638
Old database pages 215
Modified db pages  0
Pending reads 0
Pending writes: LRU 0, flush list 0, single page 0
Pages made young 16622990, not young 0
0.00 youngs/s, 0.00 non-youngs/s
Pages read 19765731, created 109264, written 174555
0.00 reads/s, 0.00 creates/s, 0.00 writes/s
No buffer pool page gets since the last printout
Pages read ahead 0.00/s, evicted without access 0.00/s, Random read ahead 0.00/s
LRU len: 638, unzip_LRU len: 0
I/O sum[0]:cur[0], unzip sum[0]:cur[0]

裡面有什麼可以告訴我用了多少嗎?

如果我執行 MySQL 工作台,它會顯示 InnoDB Buffer Usage: 79.2% 但我想要一種方法來使用 SQL 以程式方式獲取此資訊,而不僅僅是從 GUI 中。我怎樣才能做到這一點?

SHOW GLOBAL STATUS LIKE 'Innodb_buffer_pool_pages_free'並使 SHOW GLOBAL STATUS LIKE 'Innodb_buffer_pool_pages_total'您能夠得出這個百分比。

請記住,page_free 為 0 並不是致命的,甚至不是必要的壞事——它只是意味著每隔一段時間就會有一次讀取來自磁碟或頁面記憶體。它發生的速率對與 innodb_buffer_pool 大小相關的性能更為重要。

引用自:https://dba.stackexchange.com/questions/215793