GBase8s数据库存储监控及调整方法

南大通用GBase8s 数据库 存储监控及调整 方法

通过监控后台I/O ,分析数据的 分配 是否合理,消除I/O 瓶颈。主要监控检查点、缓冲写、数据库空间、日志记录和页面清除。主要监控命令如下:

1)  Checkpoint 监控

onstat -g ckp 监控数据库实例的checkpoint 情况

2)  缓冲写监控

onstat -F 监控数据库实例三种写类型情况:前台写、lru 写、 chunk

onstat -R 监控LRU 队列,从而调整 lrus lru_max_dirty,lru_min_dirty ,避免频繁的 LRU 写引起 checkpoint 而影响性能

3)  数据库空间 监控

onstat -D 监控chunk 的读取和写入的页数,如果太高,说明此 chunk 有太多 I/O ,若此 chunk 存储的多个表,分离数据存储;若此 chunk 存储的是单个表,考虑分片 .

onstat -g iof 监控数据库实例的IO 活动及分布,包括 AIO KAIO

onstat -P 监控bufferpool data pages index pages 占得比例,从而调整表结构和索引结构。

4)  日志监控

onstat -l 监控逻辑日志和物理日志的使用情况,判断其是否足够,避免其引起checkpoint 而影响性能。

1.1 C heckpoint 监控

命令

输出字段

描述

 

 

 

 

 

onstat -g ckp

AUTO_CKPTS

On ,设置为自动控制 checkpoint

RTO_SERVER_RESTART

On/off

性能测试中应置为 off ,否则严重影响性能

Trigger

CKPTINTVL

LLog/PLog

LRU

RTO

......

触发事件:

尽量使用 CKPTINTVL 触发 checkpoint

配置合理的 plog llog

调整 LRU 的数量和脏数据的比例

RTO_SERVER_RESTART 引起 ckpt ,应置为 0

CLEANERS

Total time

Flush time

Block time

Checkpoint 执行时间

刷新缓冲池所需的时间

ckpt 期间阻塞的时间

 

1.2 缓冲写监控

命令

输出字段

描述

 

onstat -F

Fg Writes

Foreground writes 用户线程请求而发生的页面刷新,如果不为 0 ,表明缓冲池中没有空白可用的缓冲区或是缓冲区太脏

此时需要调整 BUFFERPOOL CKPTINTVL 参数

LRU Writes

发生的条件是缓冲池超过了 BUFFERPOOL 参数的 lru_max_dirty 值。应尽量避免 LRU 写,应为 0

Chunks Writes

因检查点的执行而发生的写

 

命令

输出字段

描述

 

onstat -R

Buffer pool page size

Onconfig 文件中配置了几个 bufferpool ,这里就会显示几个。

f/m

Free LRU 队列,尚未被使用的页

MRU 队列,已被修改的页

其中修改页面的百分比应始终低于 lru_max_dirty ,否则会有 LRU 写而引起 checkpoint ,影响性能。

 

1. 3 数据库空间监控

通过监控数据库空间的使用情况,观察是否有热点chunk ,然后调整表和索引的分配以均衡 I/O

命令详解如下:

命令

输出字段

描述

onstat -D

page Rd Wr

读取 / 写入的页数

 

命令

输出字段

描述

 

onstat -g iof

reads/writes

未使用 KAIO 的读写情况

kaio_reads/writes

使用 KAIO 的读写情况

io/s

每秒 I/O 操作数

 

命令

输出字段

描述

 

onstat - P

Data

bufferpool data pages 占得比例

Btree

bufferpool index pages 占得比例

Other

bufferpool 中其他 pages 占得比例

 

1. 4 日志监控

GBase 8s 包含逻辑日志、物理日志。建议逻辑日志、物理日志不要建在 rootdbs 上,分离存储。

命令

输出字段

描述

onstat -l

bufsize

对应 onconfig LOGBUFF PHYBUFF

physize

物理日志的页数,物理日志大小 =physize*pagesize

size

此逻辑日志的页数,逻辑日志大小 =physize*pagesize

pages/io

numpages/numwrits ,写 buffer 的效率

如果 ( pages/io )/bufsize 得到的值为 75% 左右,那么说明 logical log buffer 被有效的使用;如果该值小于 6 5% ,那么说明 logical log buffer 太大;如果该值大于 90 % ,那么说明 logical log buffer 太小;物理日志同上。

 

 


请使用浏览器的分享功能分享到微信等