统计信息函数
统计信息函数根据访问对象分为两种类型:针对某个数据库进行访问的函数,以数据库中每个表或索引的OID作为参数,标识需要报告的数据库;针对某个服务器进行访问的函数,以一个服务器进程号为参数,其范围从1到当前活跃服务器的数目。
gs_stat_walsender
描述:统计 WalSender 发送WAL日志的平均时间间隔、发送次数等信息。支持开启、关闭、重置、查询。
输入参数:
序号 | 入参 | 类型 | 描述 |
---|---|---|---|
1 | operation | int | 取值范围:-1~2。
|
返回字段:
序号 | 返回字段 | 类型 | 描述 |
1 | is_enable_stat | boolean | 是否开启,默认关闭。 |
2 | channel | text | 发送通道。 |
3 | cur_time | timestamptz | 当前时间。 |
4 | send_times | uint64 | 发送次数。 |
5 | first_send_time | timestamptz | 首次发送时间。 |
6 | last_send_time | timestamptz | 末次发送时间。 |
7 | last_reset_time | timestamptz | 末次重置时间,只有重置过才会有值。 |
8 | avg_send_interval | uint64 | 平均发送间隔时间,发送次数大于等于2才会有值。<br>计算方式:(last_send_time - first_send_time) / (send_times - 1 ) |
9 | since_last_send_interval | uint64 | 距离最近一次发送的时间,发送次数大于0才会有值。<br>计算方式:cur_time - last_send_time |
1、只有存在 WalSender 且已初始化完成才会有数据,WalSender终止则对应数据被移除,线程重新拉起不会继承。每个 WalSender 一行,单机场景不会有数据。在没有 WalSender 的情况下,开关、重置也会更新系统内部 is_enable_stat、last_reset_time 字段的值。
2、channel 与 gs_ctl query 命令查询到的发送通道一致。
3、since_last_send_interval 在 send_times 为 0 时返回 NULL 值,且由于此值为查询时实时计算的,统计功能关闭后依然是 cur_time - last_send_time,尽管 last_send_time 已不再更新。
4、uint64 类型目前在系统内部实际被识别为 xid,即事务ID类型,在进行运算时需要注意。
5、数据库重启后所有数据回到初始化状态,功能默认关闭。
示例:
select * from gs_stat_walsender(1);
select * from gs_stat_walsender(2);
select * from gs_stat_walsender(0);
select * from gs_stat_walsender(-1);
gs_stat_walreceiver
描述:统计 WalReceiver 唤醒 WalRecvWriter 的时间间隔、walReceiverBuffer 的当前大小和历史上满的次数。支持开启、关闭、重置、查询。
输入参数:
序号 | 入参 | 类型 | 描述 |
---|---|---|---|
1 | operation | int | 取值范围:-1~2。
|
返回字段:
序号 | 返回字段 | 类型 | 描述 |
---|---|---|---|
1 | is_enable_stat | boolean | 是否开启,默认关闭。 |
2 | buffer_current_size | uint64 | walReceiverBuffer当前已使用的缓存大小。 |
3 | buffer_full_times | uint64 | 缓存被写满的次数。 |
4 | wake_writer_times | uint64 | 唤醒WalRecvWriter的次数。 |
5 | avg_wake_interval | uint64 | 平均唤醒时间间隔,唤醒次数大于等于2才会有值。<br>计算方式:(last_wake_time - first_wake_time)/ (wake_writer_times - 1)。 |
6 | since_last_wake_interval | uint64 | 距离最近一次唤醒WalRecvWriter的时间。<br>计算方式:cur_time - last_wake_time。 |
7 | first_wake_time | timestamptz | 首次唤醒时间。 |
8 | last_wake_time | timestamptz | 末次唤醒时间。 |
9 | last_reset_time | timestamptz | 末次重置时间,只有重置过才会有值。 |
10 | cur_time | timestamptz | 当前时间。 |
1、avg_wake_interval 在 wake_writer_times 小于 2 时返回 NULL 值。
2、since_last_wake_interval 在 wake_writer_times 为 0 时返回 NULL 值,且由于此值为查询时实时计算的,统计功能关闭后依然是 cur_time - last_wake_time,尽管 last_wake_time 已不再更新。
3、first_wake_time、last_wake_time、last_reset_time 在没有值时返回 NULL。
4、uint64 类型目前在系统内部实际被识别为 xid,即事务ID类型,在进行运算时需要注意。
5、数据库重启后所有数据回到初始化状态,功能默认关闭。
示例:
select * from gs_stat_walreceiver(1);
select * from gs_stat_walreceiver(2);
select * from gs_stat_walreceiver(0);
select * from gs_stat_walreceiver(-1);
gs_stat_walrecvwriter
描述:统计 WalRecvWriter 线程写日志 I/O发生的次数、耗时、数据量、xlog编号等信息。
输入参数:
序号 | 入参 | 类型 | 描述 |
---|---|---|---|
1 | operation | int | 取值范围:-1~2。
|
返回字段:
序号 | 返回字段 | 类型 | 描述 |
---|---|---|---|
1 | is_enable_stat | boolean | 是否开启,默认关闭。 |
2 | total_write_bytes | uint64 | 总写入字节数。 |
3 | write_times | uint64 | 调用write的次数。 |
4 | total_write_time | uint64 | 调用write的总耗时(单位:us)。 |
5 | avg_write_time | uint64 | 每次调用write的平均耗时(单位:us)。 |
6 | avg_write_bytes | uint64 | 平均写字节数。 |
7 | total_sync_bytes | uint64 | 总刷盘字节数。 |
8 | sync_times | uint64 | 调用sync函数刷盘次数。 |
9 | total_sync_time | uint64 | 调用sync函数刷盘总耗时(单位:us)。 |
10 | avg_sync_time | uint64 | 每次调用sync函数平均耗时(单位:us)。 |
11 | avg_sync_bytes | uint64 | 每次调用sync函数刷盘的平均字节数。 |
12 | current_xlog_segno | uint64 | 当前正在写的xlog段文件编号。 |
13 | newest_xlog_segno | uint64 | 已初始化的最新的xlog段文件编号。 |
14 | last_reset_time | timestamptz | 末次重置时间,只有重置过才会有值。 |
15 | cur_time | timestamptz | 当前时间。 |
1、当 write_times 为0时,avg_write_time、avg_write_bytes 返回 NULL 值。
2、当 sync_times 为0时,avg_sync_time、avg_sync_bytes 返回 NULL 值。
3、current_xlog_segno、newest_xlog_segno、cur_time 等字段不受开关、重置功能影响,current_xlog_segno 只有 walrecvwriter 线程在运行时才会获更新数据。
4、uint64 类型目前在系统内部实际被识别为 xid,即事务ID类型,在进行运算时需要注意。
5、数据库重启后所有数据回到初始化状态,功能默认关闭。
示例:
select * from gs_stat_walrecvwriter(1);
select * from gs_stat_walrecvwriter(2);
select * from gs_stat_walrecvwriter(0);
select * from gs_stat_walrecvwriter(-1);
pv_instance_time()
描述:获取当前节点上各个关键阶段的时间消耗。
返回值类型:record