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 つのデータノードがあります) ごとに 1 行で、次に示すものと同様になります。
+---------+-----------+
| 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)