该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
使用这样的查询来确定读取次数占读取总数的比例,该查询以百分比形式获取此比率:
Press CTRL+C to copySELECT node_id, 100 * page_requests_direct_return / (page_requests_direct_return + page_requests_wait_io) AS hit_ratio FROM ndbinfo.diskpagebuffer;
此查询的结果应类似于此处显示的结果,一行对应集群中的每个数据节点(在此示例中,集群有 4 个数据节点):
Press CTRL+C to copy+---------+-----------+ | 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%,则强烈表明
DiskPageBufferMemory
需要在config.ini
文件中增加 的设置。
更改
DiskPageBufferMemory
需要滚动重启所有集群的数据节点才能生效。
block_instance
指的是内核块的实例。与块名称一起,此编号可用于在
threadblocks
表中查找给定实例。使用此信息,您可以获得有关与各个线程相关的磁盘页面缓冲区指标的信息;LIMIT 1
此处显示了用于将输出限制为单个线程
的示例查询
:
Press CTRL+C to copymysql> 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)