diskpagebuffer
表提供有关 NDB 集群磁盘数据表使用的磁盘页面缓冲区统计信息。
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 集群磁盘数据表一起使用,以确定 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)
接近 100% 的 hit_ratio
值表示从磁盘读取的数量非常少,而不是从缓冲区读取,这意味着磁盘数据读取性能正在接近最佳水平。如果这些值中的任何一个低于 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)