MySQL 8.0 リファレンスマニュアル


23.5.14.27 ndbinfo diskpagebuffer テーブル

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)

関連キーワード:  NDB, テーブル, ndbinfo, ndb, ノード, データ, 構成, 管理, page, requests