#### 23.6.14.30 ndbinfo diskpagebuffer 表

[](<>)

这`磁盘页面缓冲区`table 提供有关 NDB Cluster 磁盘数据表的磁盘页面缓冲区使用情况的统计信息。

这`磁盘页面缓冲区`表包含以下列：

-   `node_id`

    数据节点 ID

-   `块实例`

    块实例

-   `pages_written`

    写入磁盘的页数。

-   `pages_written_lcp`

    本地检查点写入的页数。

-   `pages_read`

    从磁盘读取的页数

-   `log_waits`

    等待日志写入磁盘的页面写入次数

-   `page_requests_direct_return`

    缓冲区中可用页面的请求数

-   `page_requests_wait_queue`

    必须等待页面在缓冲区中可用的请求数

-   `page_requests_wait_io`

    必须从磁盘上的页面读取的请求数（缓冲区中的页面不可用）

##### 笔记

您可以将此表与 NDB Cluster 磁盘数据表一起使用，以确定是否[`磁盘页面缓冲区内存`](mysql-cluster-ndbd-definition.html#ndbparam-ndbd-diskpagebuffermemory)足够大以允许从缓冲区而不是磁盘读取数据；最小化磁盘查找有助于提高此类表的性能。

您可以确定读取的比例来自[`磁盘页面缓冲区内存`](mysql-cluster-ndbd-definition.html#ndbparam-ndbd-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)
```

`命中率`接近 100% 的值表示只有极少量的读取是从磁盘而不是从缓冲区进行的，这意味着磁盘数据读取性能正在接近最佳水平。如果这些值中的任何一个小于 95%，则这是一个强有力的指标，表明[`磁盘页面缓冲区内存`](mysql-cluster-ndbd-definition.html#ndbparam-ndbd-diskpagebuffermemory)需要增加在`配置文件`文件。

笔记

一个变化[`磁盘页面缓冲区内存`](mysql-cluster-ndbd-definition.html#ndbparam-ndbd-diskpagebuffermemory)需要滚动重启集群的所有数据节点才能生效。

`块实例`指的是内核块的一个实例。与块名称一起，此编号可用于在[`线程块`](mysql-cluster-ndbinfo-threadblocks.html)桌子。使用此信息，您可以获得有关与各个线程相关的磁盘页面缓冲区指标的信息；使用示例查询`限制 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)
```
