diskpagebuffer
テーブルは、MySQL 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 |
整数 | ディスク上のページから読み取る必要があった (バッファー内のページを使用できなかった) リクエストの数 |
このテーブルを MySQL 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
の変更が有効になる前に、クラスタのすべてのデータノードのローリング再起動が必要です。