VastbaseG100

基于openGauss内核开发的企业级关系型数据库。

Menu

统计信息函数

统计信息函数根据访问对象分为两种类型:针对某个数据库进行访问的函数,以数据库中每个表或索引的OID作为参数,标识需要报告的数据库;针对某个服务器进行访问的函数,以一个服务器进程号为参数,其范围从1到当前活跃服务器的数目。

gs_stat_walsender

描述:统计 WalSender 发送WAL日志的平均时间间隔、发送次数等信息。支持开启、关闭、重置、查询。

输入参数:

序号 入参 类型 描述
1 operation int 取值范围:-1~2。
  • -1:关闭统计功能;
  • 0:重置数据;
  • 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:关闭统计功能;
  • 0:重置数据;
  • 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:关闭统计功能;
  • 0:重置数据;
  • 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

    Stat_name属性

    属性值

    描述

    DB_TIME

    1062385

    所有线程端到端的墙上时间(WALL TIME)消耗总和(单位: 微秒)

    CPU_TIME

    311777

    所有线程CPU时间消耗总和(单位: 微秒)

    EXECUTION_TIME

    380037

    消耗在执行器上的时间总和(单位: 微秒)

    PARSE_TIME

    6033

    消耗在SQL解析上的时间总和(单位: 微秒)

    PLAN_TIME

    173356

    消耗在执行计划生成上的时间总和(单位: 微秒)

    REWRITE_TIME

    2274

    消耗在查询重写上的时间总和(单位: 微秒)

    PL_EXECUTION_TIME

    0

    消耗在PL/SQL执行上的时间总和(单位: 微秒)

    PL_COMPILATION_TIME

    557

    消耗在SQL编译上的时间总和(单位: 微秒)

    NET_SEND_TIME

    1673

    消耗在网络发送上的时间总和(单位: 微秒)

    DATA_IO_TIME

    426622

    消耗在数据读写上的时间总和(单位: 微秒)

    srt1_q

    100

    Q报文执行的耗时(单位:微秒)

    srt2_simple_query

    100

    exec_simple_query执行耗时(单位:微秒)

    srt3_analyze_rewrite

    100

    pg_analyze_and_rewrite执行耗时(单位:微秒)

    srt4_plan_query

    100

    pg_plan_queries执行耗时(单位:微秒)

    srt5_light_query

    100

    exec_query_through_light_proxy执行耗时(单位:微秒)

    srt6_p

    100

    P报文执行的耗时(单位:微秒)

    srt7_b

    100

    B报文执行的耗时(单位:微秒)

    srt8_e

    100

    E报文执行的耗时(单位:微秒)

    srt9_d

    100

    D报文执行的耗时(单位:微秒)

    srt10_s

    100

    S报文执行的耗时(单位:微秒)

    srt11_c

    100

    C报文执行的耗时(单位:微秒)

    srt12_u

    100

    U报文执行的耗时(单位:微秒)

    srt13_before_query

    100

    进入下一次报文处理前的耗时(单位:微秒)

    srt14_after_query

    100

    完成报文处理后的耗时(单位:微秒)

    rtt_unknown

    100

    未知时间消耗,可能是session切换耗时(单位:微秒)