diskpagebuffer
表格提供有關 NDB 叢集磁碟資料表格所使用的磁碟頁面緩衝區的統計資料。
diskpagebuffer
表格包含以下欄位
node_id
資料節點 ID
block_instance
區塊執行個體
pages_written
寫入磁碟的頁面數。
pages_written_lcp
本機檢查點寫入的頁面數。
pages_read
從磁碟讀取的頁面數
log_waits
等待將日誌寫入磁碟的頁面寫入次數
page_requests_direct_return
緩衝區中可用的頁面請求數
page_requests_wait_queue
必須等待緩衝區中頁面可用的請求數
page_requests_wait_io
必須從磁碟上的頁面讀取的請求數(緩衝區中沒有頁面)
注意事項
您可以將此表格與 NDB 叢集磁碟資料表格搭配使用,以判斷 DiskPageBufferMemory
是否足夠大,可讓從緩衝區而不是從磁碟讀取資料;盡量減少磁碟搜尋可以幫助提高此類表格的效能。
您可以使用如下查詢來判斷從 DiskPageBufferMemory
讀取的比例與讀取總數的比例,此查詢將此比率以百分比表示
SELECT
node_id,
100 * page_requests_direct_return /
(page_requests_direct_return + page_requests_wait_io)
AS hit_ratio
FROM ndbinfo.diskpagebuffer;
此查詢的結果應與此處顯示的類似,叢集中的每個資料節點有一列(在此範例中,叢集有 4 個資料節點)
+---------+-----------+
| node_id | hit_ratio |
+---------+-----------+
| 5 | 97.6744 |
| 6 | 97.6879 |
| 7 | 98.1776 |
| 8 | 98.1343 |
+---------+-----------+
4 rows in set (0.00 sec)
hit_ratio
值接近 100% 表示只有極少數的讀取是從磁碟而不是從緩衝區進行,這表示磁碟資料讀取效能正接近最佳水準。如果這些值中有任何一個小於 95%,則強烈表示 config.ini
檔案中 DiskPageBufferMemory
的設定需要增加。
變更 DiskPageBufferMemory
需要在所有叢集的資料節點上進行輪流重新啟動,才能生效。
block_instance
指的是核心區塊的執行個體。此數字與區塊名稱一起使用,可用於在 threadblocks
表格中查找給定的執行個體。使用此資訊,您可以取得與個別執行緒相關的磁碟頁面緩衝區指標的資訊;此處顯示一個使用 LIMIT 1
將輸出限制為單一執行緒的範例查詢
mysql> SELECT
> node_id, thr_no, block_name, thread_name, pages_written,
> pages_written_lcp, pages_read, log_waits,
> page_requests_direct_return, page_requests_wait_queue,
> page_requests_wait_io
> FROM ndbinfo.diskpagebuffer
> INNER JOIN ndbinfo.threadblocks USING (node_id, block_instance)
> INNER JOIN ndbinfo.threads USING (node_id, thr_no)
> WHERE block_name = 'PGMAN' LIMIT 1\G
*************************** 1. row ***************************
node_id: 1
thr_no: 1
block_name: PGMAN
thread_name: rep
pages_written: 0
pages_written_lcp: 0
pages_read: 1
log_waits: 0
page_requests_direct_return: 4
page_requests_wait_queue: 0
page_requests_wait_io: 1
1 row in set (0.01 sec)