diskpagebuffer
表格提供關於 NDB Cluster 磁碟資料表格使用的磁碟頁面緩衝區統計資訊。
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 Cluster 磁碟資料表格一起使用,以判斷 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%,這強烈表示 DiskPageBufferMemory
的設定需要在 config.ini
檔案中增加。
變更 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)