首批通过分布式安全可靠测评,为关键业务系统打造
SYSSTAT 监控项
更新时间:2025-11-23 20:02:04
SYSSTAT 监控项是常见的诊断监控信息之一,统计了系统运行的关键性能数值,例如 SQL 执行次数、执行时间、IO 次数等。
监控项来源
监控项的数据存储于 [G]V$SYSSTAT 视图,其主要字段介绍如下:
| 字段名称 | 描述 |
|---|---|
| CON_ID | 租户 ID |
| SVR_IP | 节点 IP |
| STAT_ID | 监控项 ID |
| NAME | 监控项名称 |
| CLASS | 监控项类别 |
| VALUE | 监控项对应的结果数值 |
| VALUE_TYPE | 监控项值类型:
|
监控项查询
以 [G]V$SYSSTAT 视图为例,查询 SQL 大类下所有的监控项。
obclient> SELECT CLASS,STAT_ID,NAME,VALUE_TYPE FROM GV$SYSSTAT WHERE CLASS=8;
返回结果如下:
+-------+---------+------------------------------------+------------+
| class | stat_id | name | VALUE_TYPE |
+-------+---------+------------------------------------+------------+
| 8 | 40000 | sql select count | ADD_VALUE |
| 8 | 40001 | sql select time | ADD_VALUE |
| 8 | 40002 | sql insert count | ADD_VALUE |
| 8 | 40003 | sql insert time | ADD_VALUE |
| 8 | 40004 | sql replace count | ADD_VALUE |
| 8 | 40005 | sql replace time | ADD_VALUE |
| 8 | 40006 | sql update count | ADD_VALUE |
| 8 | 40007 | sql update time | ADD_VALUE |
| 8 | 40008 | sql delete count | ADD_VALUE |
| 8 | 40009 | sql delete time | ADD_VALUE |
| 8 | 40018 | sql other count | ADD_VALUE |
| 8 | 40019 | sql other time | ADD_VALUE |
| 8 | 40020 | ps prepare count | ADD_VALUE |
| 8 | 40021 | ps prepare time | ADD_VALUE |
| 8 | 40022 | ps execute count | ADD_VALUE |
| 8 | 40023 | ps close count | ADD_VALUE |
| 8 | 40024 | ps close time | ADD_VALUE |
| 8 | 40025 | sql commit count | ADD_VALUE |
| 8 | 40026 | sql commit time | ADD_VALUE |
| 8 | 40027 | sql rollback count | ADD_VALUE |
| 8 | 40028 | sql rollback time | ADD_VALUE |
| 8 | 40030 | opened cursors current | ADD_VALUE |
| 8 | 40031 | opened cursors cumulative | ADD_VALUE |
| 8 | 40010 | sql local count | ADD_VALUE |
| 8 | 40011 | sql remote count | ADD_VALUE |
| 8 | 40012 | sql distributed count | ADD_VALUE |
| 8 | 40013 | active sessions | ADD_VALUE |
| 8 | 40014 | single query count | ADD_VALUE |
| 8 | 40015 | multiple query count | ADD_VALUE |
| 8 | 40016 | multiple query with one stmt count | ADD_VALUE |
| 8 | 40100 | sql inner select count | ADD_VALUE |
| 8 | 40101 | sql inner select time | ADD_VALUE |
| 8 | 40102 | sql inner insert count | ADD_VALUE |
| 8 | 40103 | sql inner insert time | ADD_VALUE |
| 8 | 40104 | sql inner replace count | ADD_VALUE |
| 8 | 40105 | sql inner replace time | ADD_VALUE |
| 8 | 40106 | sql inner update count | ADD_VALUE |
| 8 | 40107 | sql inner update time | ADD_VALUE |
| 8 | 40108 | sql inner delete count | ADD_VALUE |
| 8 | 40109 | sql inner delete time | ADD_VALUE |
| 8 | 40110 | sql inner other count | ADD_VALUE |
| 8 | 40111 | sql inner other time | ADD_VALUE |
| 8 | 40112 | user logons cumulative | ADD_VALUE |
| 8 | 40113 | user logouts cumulative | ADD_VALUE |
| 8 | 40114 | user logons failed cumulative | ADD_VALUE |
| 8 | 40115 | user logons time cumulative | ADD_VALUE |
| 8 | 40116 | sql local execute time | ADD_VALUE |
| 8 | 40117 | sql remote execute time | ADD_VALUE |
| 8 | 40118 | sql distributed execute time | ADD_VALUE |
| 8 | 40119 | sql fail count | ADD_VALUE |
| 8 | 40120 | inner sql local count | ADD_VALUE |
| 8 | 40121 | inner sql remote count | ADD_VALUE |
| 8 | 40122 | inner sql distributed count | ADD_VALUE |
+-------+---------+------------------------------------+------------+
42 rows in set (0.07 sec)
监控项类别
OceanBase 数据库 V4.x 版本支持的监控项可分为 15 个大类,具体如下:
| 监控项类别 ID | 监控项类别 | 监控项类别描述 |
|---|---|---|
| 1 | NETWORK | 网络 |
| 2 | QUEUE | 请求队列 |
| 4 | TRANS | 事务 |
| 8 | SQL | SQL |
| 16 | CACHE | 缓存 |
| 32 | STORAGE | 存储 |
| 64 | RESOURCE | 资源 |
| 128 | DEBUG | 日志 |
| 256 | CLOG | CLOG |
| 512 | ELECT | 选举 |
| 1024 | OBSERVER | 系统 |
| 2048 | RS | Root Service |
| 3072 | Time Model | 时间模型 |
| 4096 | TABLEAPI | TableAPI |
| 8192 | WR | WR |
下面列举几个常用类别的查询和对应监控项说明,有关全量监控项内容,请参见 监控项总览。
网络
可以通过以下示例查询网络相关的监控指标。
obclient> select distinct class,stat_id,name,VALUE_TYPE from gv$sysstat where class=1 and stat_id in (10000,10001,10002,10003,10004,10005,10006);
返回结果如下:
+-------+---------+----------------------+------------+
| class | stat_id | name | VALUE_TYPE |
+-------+---------+----------------------+------------+
| 1 | 10000 | rpc packet in | ADD_VALUE |
| 1 | 10001 | rpc packet in bytes | ADD_VALUE |
| 1 | 10002 | rpc packet out | ADD_VALUE |
| 1 | 10003 | rpc packet out bytes | ADD_VALUE |
| 1 | 10004 | rpc deliver fail | ADD_VALUE |
| 1 | 10005 | rpc net delay | ADD_VALUE |
| 1 | 10006 | rpc net frame delay | ADD_VALUE |
+-------+---------+----------------------+------------+
7 rows in set (0.06 sec)
参数说明:
| NAME | 描述 |
|---|---|
| rpc packet in | 租户累计接收到的 RPC 包个数。租户接收到一个 RPC 请求,或者在发送一个 RPC 请求之后,接收到了回包,计数加 1。 |
| rpc packet in bytes | 租户累计接收到的 RPC 包的字节数,单位为 Bytes。租户接收到一个 RPC 请求,或者在发送一个 RPC 之后,接收到了回包,累加上 RPC 请求或者回包的字节数大小。 |
| rpc packet out | 租户累计发送的 RPC 包个数。租户发送一个 RPC 请求,或者接收到一个 RPC 请求之后,进行了回包,计数加 1。 |
| rpc packet out bytes | 租户累计发送的 RPC 包的字节数,单位为 Bytes。租户发送一个 RPC 请求,或者接收到一个 RPC 请求之后,进行了回包,累加上 RPC 请求或者回包的字节数大小。 |
| rpc deliver fail | RPC 请求转发到租户工作队列的总的失败次数。RPC IO 转发 RPC 请求到租户队列的时候,如果转发失败了,就会计数加 1。 |
| rpc net delay | 租户下接收的 RPC 请求累计的网络传输延迟,单位为微秒。RPC IO 线程解析到一个 RPC 请求之后,获取当前时间戳,减去从包的头部获取到发送时间戳得到差值,累加到 RPC_NET_DELAY 上。 |
| rpc net frame delay | 租户下接收的 RPC 请求累计的网络框架处理耗时,单位为微秒。RPC IO 转发 RPC 请求到租户队列的时候,获取当前时间戳,减去解析到一个 RPC 包的时候记下的时间戳得到差值,累加到 RPC_NET_FRAME_DELAY 上。 |
请求队列
可以通过以下示例查询请求队列相关的监控指标。
obclient> select distinct class,stat_id,name,VALUE_TYPE from gv$sysstat where class=2 and stat_id in (20000,20001,20002);
返回结果如下:
+-------+---------+-----------------------+------------+
| class | stat_id | name | VALUE_TYPE |
+-------+---------+-----------------------+------------+
| 2 | 20000 | request enqueue count | ADD_VALUE |
| 2 | 20001 | request dequeue count | ADD_VALUE |
| 2 | 20002 | request queue time | ADD_VALUE |
+-------+---------+-----------------------+------------+
3 rows in set (0.07 sec)
参数说明:
| NAME | 描述 |
|---|---|
| request enqueue count | 表示租户有请求进入队列的总次数。每有一个请求被放进工作线程队列,计数累加 1 次。 |
| request dequeue count | 表示租户有请求从队列中出来的总次数。每有一个请求从工作线程队列出来,计数累加 1 次。 |
| request queue time | 表示租户所有请求等待队列的总时间,单位为微秒。租户工作线程每拿到一个请求时通过当前时间减去这个请求进入队列的时间,得到请求等待队列时间,累计入 REQUEST_QUEUE_TIME 指标里面。 |
事务
可以通过以下示例查询事务相关的监控指标。
obclient> select distinct class,stat_id,name,VALUE_TYPE from gv$sysstat where class=4 and stat_id in (30000,30001,30002,30005,30006,30007,30008,30009,30010,30011,30012,30013,30200,30201,30202,30203,30204,30205,30206,30207,30208,30209,30210,30211,30212,30213,30214,30215,30216,30217,30218,30219);
返回结果如下:
+-------+---------+----------------------------------+------------+
| class | stat_id | name | VALUE_TYPE |
+-------+---------+----------------------------------+------------+
| 4 | 30000 | trans commit log sync time | ADD_VALUE |
| 4 | 30001 | trans commit log sync count | ADD_VALUE |
| 4 | 30002 | trans commit log submit count | ADD_VALUE |
| 4 | 30005 | trans start count | ADD_VALUE |
| 4 | 30006 | trans total used time | ADD_VALUE |
| 4 | 30007 | trans commit count | ADD_VALUE |
| 4 | 30008 | trans commit time | ADD_VALUE |
| 4 | 30009 | trans rollback count | ADD_VALUE |
| 4 | 30010 | trans rollback time | ADD_VALUE |
| 4 | 30011 | trans timeout count | ADD_VALUE |
| 4 | 30012 | trans local trans count | ADD_VALUE |
| 4 | 30013 | trans distribute trans count | ADD_VALUE |
| 4 | 30200 | xa start total count | ADD_VALUE |
| 4 | 30201 | xa start total used time | ADD_VALUE |
| 4 | 30202 | xa start with rpc total count | ADD_VALUE |
| 4 | 30203 | failed xa start total count | ADD_VALUE |
| 4 | 30204 | xa end total count | ADD_VALUE |
| 4 | 30205 | xa end total used count | ADD_VALUE |
| 4 | 30206 | xa end with rpc total count | ADD_VALUE |
| 4 | 30207 | failed xa end total count | ADD_VALUE |
| 4 | 30208 | xa prepare total count | ADD_VALUE |
| 4 | 30209 | xa prepare total used time | ADD_VALUE |
| 4 | 30210 | xa prepare with rpc total count | ADD_VALUE |
| 4 | 30211 | failed xa prepare total count | ADD_VALUE |
| 4 | 30212 | xa commit total count | ADD_VALUE |
| 4 | 30213 | xa commit total used time | ADD_VALUE |
| 4 | 30214 | xa commit with rpc total count | ADD_VALUE |
| 4 | 30215 | failed xa commit total count | ADD_VALUE |
| 4 | 30216 | xa rollback total count | ADD_VALUE |
| 4 | 30217 | xa rollback total used time | ADD_VALUE |
| 4 | 30218 | xa rollback with rpc total count | ADD_VALUE |
| 4 | 30219 | failed xa rollback total count | ADD_VALUE |
+-------+---------+----------------------------------+------------+
32 rows in set (0.013 sec)
参数说明:
| NAME | 描述 |
|---|---|
| trans commit log sync time | 该租户在该机器上事务 clog 提交成功到多数派成功为止消耗的时间累计,单位为微秒。在 clog 多数派成功,回调事务层时,用当前时间减去提交 clog 成功时的时间,计算出多数派耗费的时间,累加到该统计项上。 |
| trans commit log sync count | 该租户在该机器上提交成功并完成多数派的 clog 次数。每次 clog 多数派成功后,回调事务层,事务层收到回调时增加计数。 |
| trans commit log submit count | 该租户在该机器上提交过的 clog 次数。每次提交成功 clog 后(不保证多数派成功),增加 1 次计数。 |
| trans start count | 该租户在该机器上开启的事务数量。创建 Session 的 OBServer 节点上每次开启事务成功,增加该统计项的计数。 |
| trans total used time | 该租户在该机器上的事务耗时累计,单位为微秒。创建 Session 的 OBServer 节点上每次事务结束后,累计事务耗时到该统计项。 |
| trans commit count | 该租户在该机器上的 Commit 成功的事务次数。在 Session 连接的 OBServer 节点上每次成功提交一个事务,增加 1 个计数。 |
| trans commit time | 该租户在该机器上的事务 Commit 耗时累计,单位为微秒。创建 Session 的 OBServer 节点上每次提交事务成功后,累计 Commit 耗时到该统计项。 |
| trans rollback count | 该租户在该机器上 Rollback 成功的事务数量。创建 Session 的 OBServer 节点上每次 Rollback 事务成功,增加该统计项的计数。 |
| trans rollback time | 该租户在该机器上的事务 Rollback 耗时,单位为微秒。创建 Session 的 OBServer 节点上每次 Rollback 成功后,累计 Rollback 耗时到该统计项。 |
| trans timeout count | 该租户在该机器上超时的事务数量。创建 Session 的 OBServer 节点上每次事务超时,增加该统计项的计数。 |
| trans local trans count | 该租户在该机器上结束的单机事务的数量(包含 Commit 和 Rollback 两种结束方式)。创建 Session 的 OBServer 节点上每次结束事务后,查看参与者数量,当参与者等于 1 的时候增加该计数。 |
| trans distribute trans count | 该租户在该机器上结束的分布式事务的数量(包含 Commit 和 Rollback 两种结束方式)。创建 Session 的 OBServer 节点上每次结束事务后,查看参与者数量,当参与者大于 1 的时候增加该计数。 |
| xa start total count | 针对 XA 事务,XA_START 语句总个数,包含成功的以及失败的。事务侧执行完 XA_START 逻辑后,计数加 1。 |
| xa start total used time | 针对 XA 事务,XA_START 语句执行总耗时,包含成功的以及失败的,单位为微秒。事务侧执行完 XA_START 逻辑后,增加本地处理的消耗时间。 |
| xa start with rpc total count | 针对 XA 事务,XA_START 语句远程执行的总个数,仅包含成功的。事务侧执行完 XA_START 逻辑后,如果该 XA_START 为远程执行且成功,则计数加 1。 |
| failed xa start total count | 针对 XA 事务,XA_START 语句执行失败的总个数。事务侧执行完 XA_START 逻辑后,如果执行失败,则计数加 1。 |
| xa end total count | 针对 XA 事务,XA_END 语句执行的总次数,包含成功的和失败的。事务侧执行完 XA_END 逻辑后,计数加 1。 |
| xa end total used count | 针对 XA 事务,XA_END 语句执行的总耗时,单位为微秒。事务侧执行完 XA_END 逻辑后,增加本地处理的消耗时间。 |
| xa end with rpc total count | 针对 XA 事务,远程执行 XA_END 语句的总个数,仅包含成功的。事务侧执行完 XA_END 逻辑后,如果是远程执行且执行成功,则计数加 1。 |
| failed xa end total count | 针对 XA 事务,XA_END 语句执行失败的总个数。事务侧处理 XA_END 时,如果执行报错,则计数加 1。 |
| xa prepare total count | 针对 XA 事务,XA_PREPARE 语句总个数,包含成功的以及失败的,单位为次数。事务侧执行完 XA_PREPARE 逻辑后,计数加 1。 |
| xa prepare total used time | 针对 XA 事务,XA_PREPARE 语句执行总耗时,包含成功的以及失败的,单位为微秒。事务侧执行完 XA_PREPARE 逻辑后,增加本地处理的消耗时间。 |
| xa prepare with rpc total count | 针对 XA 事务,XA_PREPARE 语句远程执行的总个数,仅包含成功的。事务侧执行完 XA_START 逻辑后,如果该 XA_PREPARE 为远程执行且成功,则计数加 1。 |
| failed xa prepare total count | 针对 XA 事务,XA_PREPARE 语句执行失败的总个数。事务侧执行完 XA_PREPARE 逻辑后,如果执行失败,则计数加 1。 |
| xa commit total count | 针对 XA 事务,XA_COMMIT 语句执行的总个数,包含成功的和失败的。事务侧执行完 XA_COMMIT 逻辑后,计数加 1。 |
| xa commit total used time | 针对 XA 事务,XA_COMMIT 语句执行的总耗时,单位为微秒。事务侧执行完 XA_COMMIT 逻辑后,增加本地处理的消耗时间。 |
| xa commit with rpc total count | 针对 XA 事务,远程执行 XA_COMMIT 语句的总个数,仅包含成功的。事务侧执行完 XA_COMMIT 逻辑后,如果是远程执行且执行成功,则计数加 1。 |
| failed xa commit total count | 针对 XA 事务,XA_COMMIT 语句执行失败的总个数。事务侧处理 XA_COMMIT 时,如果执行报错,则计数加 1。 |
| xa rollback total count | 针对 XA 事务,XA_ROLLBACK 语句总个数,包含成功的以及失败的。事务侧执行完 XA_ROLLBACK 逻辑后,计数加 1。 |
| xa rollback total used time | 针对 XA 事务,XA_ROLLBACK 语句执行总耗时,包含成功的以及失败的,单位为微秒。事务侧执行完 XA_ROLLBACK 逻辑后,增加本地处理的消耗时间。 |
| xa rollback with rpc total count | 针对 xa 事务,XA_ROLLBACK 语句远程执行的总个数,仅包含成功的。事务侧执行完 XA_START 逻辑后,如果该 XA_ROLLBACK 为远程执行且成功,则加 1。 |
| failed xa rollback total count | 针对 XA 事务,XA_ROLLBACK 语句执行失败的总个数。事务侧执行完 XA_ROLLBACK 逻辑后,如果执行失败,则计数加 1。 |
SQL
可以通过以下示例查询 SQL 相关的监控指标。
obclient> select distinct class,stat_id,name,VALUE_TYPE from gv$sysstat where class=8 and stat_id in (40000, 40001, 40002, 40003, 40004, 40005, 40006, 40007, 40008, 40009, 40010, 40011, 40012, 40018, 40019);
返回结果如下:
+-------+---------+-----------------------+------------+
| class | stat_id | name | VALUE_TYPE |
+-------+---------+-----------------------+------------+
| 8 | 40000 | sql select count | ADD_VALUE |
| 8 | 40001 | sql select time | ADD_VALUE |
| 8 | 40002 | sql insert count | ADD_VALUE |
| 8 | 40003 | sql insert time | ADD_VALUE |
| 8 | 40004 | sql replace count | ADD_VALUE |
| 8 | 40005 | sql replace time | ADD_VALUE |
| 8 | 40006 | sql update count | ADD_VALUE |
| 8 | 40007 | sql update time | ADD_VALUE |
| 8 | 40008 | sql delete count | ADD_VALUE |
| 8 | 40009 | sql delete time | ADD_VALUE |
| 8 | 40018 | sql other count | ADD_VALUE |
| 8 | 40019 | sql other time | ADD_VALUE |
| 8 | 40010 | sql local count | ADD_VALUE |
| 8 | 40011 | sql remote count | ADD_VALUE |
| 8 | 40012 | sql distributed count | ADD_VALUE |
+-------+---------+-----------------------+------------+
15 rows in set (0.08 sec)
参数说明:
| NAME | 描述 |
|---|---|
| sql select count | SQL SELECT 执行次数。 |
| sql select time | SQL SELECT 执行总时间,单位为微秒。 |
| sql insert count | 用户下发的 insert 语句的总次数。 |
| sql insert time | 用户下发的 insert 语句的总耗时。 |
| sql replace count | 用户下发的 replace 语句的总次数。 |
| sql replace time | 用户下发的 replace 语句的总耗时。 |
| sql update count | 用户下发的 update 语句的总次数。 |
| sql update time | 用户下发的 update 语句的总耗时,单位为微秒。 |
| sql delete count | 用户下发的 delete 语句的总次数。 |
| sql delete time | 用户下发的 delete 语句的总耗时,单位为微秒。 |
| sql other count | 除 SELECT/INSERT/REPLACE/UPDATE/DELETE/COMMIT/ROLLBACK 之外的 SQL 执行次数。 |
| sql other time | 除 SELECT/INSERT/REPLACE/UPDATE/DELETE/COMMIT/ROLLBACK 之外的 SQL 执行总时间,单位为微秒。 |
| sql local count | SQL LOCAL 执行的次数。 |
| sql remote count | SQL REMOTE 执行次数。 |
| sql distributed count | SQL 语句分布式执行的次数。 |
缓存
可以通过以下示例查询 KVCache 相关的监控指标。
obclient> select distinct class,stat_id,name,VALUE_TYPE from gv$sysstat where class=16 and stat_id in (50000, 50001, 50004, 50005, 50008, 50009, 50010, 50011, 50037, 50038,120001,120008,120009);
返回结果如下:
+-------+---------+-------------------------+------------+
| class | stat_id | name | VALUE_TYPE |
+-------+---------+-------------------------+------------+
| 16 | 50000 | row cache hit | ADD_VALUE |
| 16 | 50001 | row cache miss | ADD_VALUE |
| 16 | 50004 | bloom filter cache hit | ADD_VALUE |
| 16 | 50005 | bloom filter cache miss | ADD_VALUE |
| 16 | 50008 | block cache hit | ADD_VALUE |
| 16 | 50009 | block cache miss | ADD_VALUE |
| 16 | 50010 | location cache hit | ADD_VALUE |
| 16 | 50011 | location cache miss | ADD_VALUE |
| 16 | 50037 | tablet ls cache hit | ADD_VALUE |
| 16 | 50038 | tablet ls cache miss | ADD_VALUE |
| 16 | 120001 | tablet ls cache size | SET_VALUE |
| 16 | 120008 | user row cache size | SET_VALUE |
| 16 | 120009 | bloom filter cache size | SET_VALUE |
+-------+---------+-------------------------+------------+
14 rows in set (0.07 sec)
参数说明:
| NAME | 描述 |
|---|---|
| row cache hit | table get 算子,预取数据行时,命中 cache 的次数。lookup_in_cache 函数中,判断数据行是否在 cache 中,如果命中 cache,该项加 1。 |
| row cache miss | table get 算子,预取数据行时,没有命中 cache 的次数。lookup_in_cache 函数中,判断数据行是否在 cache 中,如果没有命中 cache,该项加 1。 |
| bloom filter cache hit | 宏块布隆过滤器缓存命中数,表示 SQL 语句使用到了已经构建的宏块布隆过滤器。 |
| bloom filter cache miss | 宏块布隆过滤器缓存不命中数,表示对应的宏块布隆过滤器并未构建。 |
| block cache hit | 取微块时命中 block cache 的次数。在取微块时,判断微块是否在 cache 中,如果命中 cache,该项加 1。 |
| block cache miss | 取微块时没有命中 block cache 的次数。在取微块时,判断微块是否在 cache 中,如果没有命中 cache,该项加 1。 |
| location cache hit | location cache 命中次数。ls_location_cache 和 tablet_ls_cache 缓存命中次数。当查询 tablet 到 logstream 的映射关系或 logstream 位置信息时,如果从本地缓存中成功获取到有效数据,则统计值加 1。在 ObTabletLSService 和 ObLSLocationService 的 get 方法中触发。 |
| location cache miss | location cache 未命中次数。ls_location_cache 和 tablet_ls_cache 缓存未命中次数。当查询 tablet 到 logstream 的映射关系或 logstream 位置信息时,如果从本地缓存中无法获取到有效数据(缓存不存在、已过期或无效),则统计值加 1。在 ObTabletLSService 和 ObLSLocationService 的 get 方法中,当 is_cache_hit 为 false 时统计项加 1。 |
| tablet ls cache hit | 读取 tablet 时命中 cache 的次数。get_from_cache_ 函数中,判断 tablet 是否在 cache 中,如果命中 cache,该项加 1。 |
| tablet ls cache miss | 读取 tablet 时没有命中 cache 的次数。get_from_cache 函数中,判断 tablet 是否在 cache 中,如果没有命中 cache,该项加 1。 |
| tablet ls cache size | tablet 的 cache 大小,单位为 Bytes。get_from_cache 函数中,使用了 tablet 的 cache。 |
| user row cache size | table get 算子,预取数据行时使用的 cache 大小,单位为 Bytes。lookup_in_cache 函数中,使用了该cache。 |
| bloom filter cache size | 宏块布隆过滤器缓存总大小。单位为 Bytes。用户的插入语句会需要检查主键冲突。当检查的数据在磁盘上时,为了避免发送IO,一种常用的性能优化手段就是对涉及的数据范围构建布隆过滤器。这里的一系列指标就是布隆过滤器缓存相关。 |
GV$SYSSTAT 视图对 KVCache 的命中率进行了描述,如果想进一步探寻 KVCache 各模块实际的内存占用,可以查询 GV$OB_KVCACHE 视图。例如:
obclient> select DBA_OB_TENANTS.tenant_id,tenant_name, svr_ip,svr_port, cache_name, cache_size
from GV$OB_KVCACHE, DBA_OB_TENANTS where DBA_OB_TENANTS.tenant_type!='META' and DBA_OB_TENANTS.tenant_id = GV$OB_KVCACHE.tenant_id limit 10;
返回结果如下:
+-----------+----------------+------------+----------+-----------------------+------------+
| tenant_id | tenant_name | svr_ip | svr_port | cache_name | cache_size |
+-----------+----------------+------------+----------+-----------------------+------------+
| 1 | sys |xx.xx.xx.xx | 2882 | schema_cache | 14564352 |
| 1 | sys |xx.xx.xx.xx | 2882 | tablet_table_cache | 6241280 |
| 1 | sys |xx.xx.xx.xx | 2882 | vtable_cache | 35372032 |
| 1 | sys |xx.xx.xx.xx | 2882 | opt_column_stat_cache | 6241280 |
| 1008 | mq_t1 |xx.xx.xx.xx | 2882 | index_block_cache | 6241280 |
| 1008 | mq_t1 |xx.xx.xx.xx | 2882 | user_block_cache | 10402816 |
| 1008 | mq_t1 |xx.xx.xx.xx | 2882 | user_row_cache | 6241280 |
| 1010 | oracle_tenant1 |xx.xx.xx.xx | 2882 | index_block_cache | 6241280 |
| 1008 | mq_t1 |xx.xx.xx.xx | 2882 | bf_cache | 4160512 |
| 1010 | oracle_tenant1 |xx.xx.xx.xx | 2882 | user_block_cache | 8322048 |
+-----------+----------------+------------+----------+-----------------------+------------+
10 rows in set (0.06 sec)
存储
可以通过以下示例查询存储相关的监控指标。
obclient> select distinct class,stat_id,name,VALUE_TYPE from gv$sysstat where class=32 and stat_id in (60000, 60001, 60002, 60003, 60004, 60005, 60019, 60020, 60021, 60022, 60023, 60024,130000,130001,130002,130004);
返回结果如下:
+-------+---------+--------------------------------+------------+
| class | stat_id | name | VALUE_TYPE |
+-------+---------+--------------------------------+------------+
| 32 | 60000 | io read count | ADD_VALUE |
| 32 | 60001 | io read delay | ADD_VALUE |
| 32 | 60002 | io read bytes | ADD_VALUE |
| 32 | 60003 | io write count | ADD_VALUE |
| 32 | 60004 | io write delay | ADD_VALUE |
| 32 | 60005 | io write bytes | ADD_VALUE |
| 32 | 60019 | memstore read lock succ count | ADD_VALUE |
| 32 | 60020 | memstore read lock fail count | ADD_VALUE |
| 32 | 60021 | memstore write lock succ count | ADD_VALUE |
| 32 | 60022 | memstore write lock fail count | ADD_VALUE |
| 32 | 60023 | memstore wait write lock time | ADD_VALUE |
| 32 | 60024 | memstore wait read lock time | ADD_VALUE |
| 32 | 130000 | active memstore used | SET_VALUE |
| 32 | 130001 | total memstore used | SET_VALUE |
| 32 | 130002 | major freeze trigger | SET_VALUE |
| 32 | 130004 | memstore limit | SET_VALUE |
+-------+---------+--------------------------------+------------+
16 rows in set (0.06 sec)
参数说明:
| NAME | 描述 |
|---|---|
| io read count | 表示读 IO 的总 IOPS。每个读 IO 执行完,会将 IO_READ_COUNT 指标加 1。 |
| io read delay | 表示读 IO 的总延时,单位为微秒。IO_READ_DELAY 指标累积了每次读 IO 操作的硬件服务延时。该延时从请求被分派至磁盘时开始计时,直至磁盘完成处理并返回。 |
| io read bytes | 表示读 IO 的总带宽。这里统计的是读 IO 的总量,单位是 Bytes,可以根据一段时间的变化量来统计每秒的读 IO 的平均值。每个读 IO 执行完,会统计其读的带宽,累积计入 IO_READ_BYTES 指标。 |
| io write count | 表示写 IO 的总 IOPS,每个写 IO 执行完,会将 IO_WRITE_COUNT 加 1。 |
| io write delay | 表示写 IO 的总延时,单位为微秒。IO_READ_DELAY 指标累积了每次写 IO 操作的硬件服务延时。该延时从请求被分派至磁盘时开始计时,直至磁盘完成处理并返回。 |
| io write bytes | 表示写 IO 的总带宽。这里统计的是写 IO 的总量,单位为 Bytes。可以根据一段时间的变化量来统计平均值。每个写 IO 执行完,会统计其写的带宽,累积计入 IO_WRITE_BYTES 指标。 |
| memstore read lock succ count | MemTable 读取成功的行数。MemTable 读取成功一行后此值加 1。 |
| memstore read lock fail count | MemTable 读取因读锁冲突超时失败的行数。在 MemTable 读取过程中,若读取的数据处于提交中但是提交状态和版本号未确定(比如说处于提交日志未决或者分布式事务未决的状态,因此次状态很短),则会等待在读锁上,若因为此冲突超时后导致失败此值加 1。 |
| memstore write lock succ count | MemTable 写入成功的行数。在 MemTable 写入过程中,会校验锁冲突,丢失更新以及主键冲突,若无上述冲突则值加 1。
说明MemTable 上校验成功依旧可能失败在 SSTable 上。 |
| memstore write lock fail count | MemTable 写入因冲突而失败的行数。在 MemTable 写入过程中,会校验锁冲突,丢失更新以及主键冲突,若存在上述冲突则值加 1。
说明不包含 SSTable 上的校验。 |
| memstore wait write lock time | MemTable 写入锁冲突后唤醒的等待时间,单位为微秒。在 MemTable 写入过程中,若产生锁冲突,此请求会被放入锁冲突队列,此值会加上从放入锁冲突队列开始到唤醒的时间。 |
| memstore wait read lock time | MemTable 读锁冲突的等待时间,单位为微秒。在 MemTable 读取过程中,若读取的数据处于提交但是提交状态和版本号未确定(比如说处于提交日志未决或者分布式事务未决的状态,因此次状态很短),则会等待在读锁上,此值会加上等待时间。 |
| active memstore used | 节点活跃 memstore 大小,单位为 Bytes。节点回放或者写入会使用 memstore,当 memstore 使用量达到一定程度以后,会触发冻结。所有未冻结的 memstore 称为 active memstore。 |
| total memstore used | 节点上租户 memstore 使用内存的总量,单位为 Bytes。该内存占用包括 active 和 frozen 的 memstore,即,该租户在该节点上所有的 memstore 内存使用量。 |
| major freeze trigger | 触发冻结的 memstore 大小,单位为 Bytes。get_tenant_memstore_cond 函数中,通过 memstore_freeze_trigger 与 max_cached_memstore_size 相加得到。 |
| memstore limit | 节点上租户 memstore 可以使用的内存上限,单位为 Bytes。用户指定用户租户内存上限,通过 memstore_limit_percentage 和 _memstore_limit_percentage 配置 memstore 可以使用的最大上限。其中,memstore_limit_percentage 是集群级别的,_memstore_limit_percentage 是租户级别的。_memstore_limit_percentage 的优先级高于 memstore_limit_percentage。当两者均未设置时,小于 8G 的租户其 memstore 可用比例为 40%,大于 8G 的租户其 memstore 可用比例为 50%。 |
资源
可以通过以下示例查询资源相关的监控指标。
obclient> select distinct class,stat_id,name,VALUE_TYPE from gv$sysstat where class=64 and stat_id in (140002,140003,140005,140006);
返回结果如下:
+-------+---------+-----------------+------------+
| class | stat_id | name | VALUE_TYPE |
+-------+---------+-----------------+------------+
| 64 | 140002 | max memory size | SET_VALUE |
| 64 | 140003 | memory usage | SET_VALUE |
| 64 | 140005 | max cpus | SET_VALUE |
| 64 | 140006 | cpu usage | SET_VALUE |
+-------+---------+-----------------+------------+
4 rows in set (0.06 sec)
参数说明:
| NAME | 描述 |
|---|---|
| max memory size | 租户的内存规格,决定租户的内存上限,单位为 Bytes。OmtNodeBalancer 后台线程定期从 DBA_OB_UNIT_CONFIGS 表获取租户最新的 min_memory,然后更新到 ObTenantMemoryMgr 的 Limit。 |
| memory usage | 租户占用的内存,单位为 Bytes。ObTenantMemoryMgr 会实时维护一个内存值,记录租户实际的内存占用。 |
| min cpus | 表示租户的 CPU 规格。决定租户常驻的工作线程数目,决定一些后台模块的线程数。OmtNodeBalancer 后台线程定期从 DBA_OB_UNIT_CONFIGS 表获取最新的 max_cpu 并同步给多租户。OmtNodeBalancer 后台线程定期根据同步的 max_cpu 调整工作线程数目。 |
| max cpus | 表示租户的 CPU 规格。决定租户常驻的工作线程数目,决定一些后台模块的线程数。开 cgroup 时决定租户线程 CPU 使用率上限。OmtNodeBalancer 后台线程定期从 DBA_OB_UNIT_CONFIGS 表获取最新的 max_cpu 并同步给多租户。OmtNodeBalancer 后台线程定期根据同步的 max_cpu 调整工作线程数目。 |
| cpu usage | 表示租户工作线程的线程使用率,反映租户工作线程的繁忙程度,单位为百分比。OmtNodeBalancer 后台线程每 10 秒统计一次租户工作线程处理请求的时间占总时间的比例,并进行归一化处理后乘上租户 min_cpu 作为 cpu_usage 统计值。 |
基于以上监控项,可以方便的获得租户的 CPU 使用率和内存使用率:
租户 CPU 使用率 = cpu usage (stat_id = 140013) / max cpus (stat_id = 140005)
租户线程使用率 = cpu usage (stat_id = 140006) / max cpus (stat_id = 140005)
租户内存使用率 = memory usage (stat_id = 140003) / max memory size (stat_id = 140002)
日志
可以通过以下示例查询系统日志相关的监控指标。
obclient> select distinct CLASS,STAT_ID,NAME,VALUE_TYPE from GV$SYSSTAT where class=128 and stat_id in (160001,160002,160004,160019,160020,160021,160022,160023,160024,160025,160026,160027,160028,160029,160030,160031,160032,160033,160034,160035,160036);
返回结果如下:
+-------+---------+---------------------------------------+------------+
| CLASS | STAT_ID | NAME | VALUE_TYPE |
+-------+---------+---------------------------------------+------------+
| 128 | 160001 | oblogger log bytes | SET_VALUE |
| 128 | 160002 | election log bytes | SET_VALUE |
| 128 | 160004 | oblogger total log count | SET_VALUE |
| 128 | 160019 | async error log dropped count | SET_VALUE |
| 128 | 160020 | async warn log dropped count | SET_VALUE |
| 128 | 160021 | async info log dropped count | SET_VALUE |
| 128 | 160022 | async trace log dropped count | SET_VALUE |
| 128 | 160023 | async debug log dropped count | SET_VALUE |
| 128 | 160024 | async log flush speed | SET_VALUE |
| 128 | 160025 | async generic log write count | SET_VALUE |
| 128 | 160026 | async user request log write count | SET_VALUE |
| 128 | 160027 | async data maintain log write count | SET_VALUE |
| 128 | 160028 | async root service log write count | SET_VALUE |
| 128 | 160029 | async schema log write count | SET_VALUE |
| 128 | 160030 | async force allow log write count | SET_VALUE |
| 128 | 160031 | async generic log dropped count | SET_VALUE |
| 128 | 160032 | async user request log dropped count | SET_VALUE |
| 128 | 160033 | async data maintain log dropped count | SET_VALUE |
| 128 | 160034 | async root service log dropped count | SET_VALUE |
| 128 | 160035 | async schema log dropped count | SET_VALUE |
| 128 | 160036 | async force allow log dropped count | SET_VALUE |
+-------+---------+---------------------------------------+------------+
24 rows in set (0.052 sec)
参数说明:
| NAME | 描述 |
|---|---|
| oblogger log bytes | 累积打印日志的总大小,单位为 Bytes。指 observer.log 等系统日志的输出打印过程。 |
| election log bytes | 累积打印选举日志的总大小,单位为 Bytes。指 election.log 日志的累积打印大小。 |
| oblogger total log count | 累积打印日志的次数。指 observer.log 等系统日志的输出打印过程。 |
| async error log dropped count | ERROR 日志打印失败(被限流等原因)的次数。指 observer.log 等系统日志的输出打印过程。 |
| async warn log dropped count | WARN 日志打印失败的次数。指 observer.log 等系统日志的输出打印过程。 |
| async info log dropped count | INFO 日志打印失败(被限流等原因)的次数。指 observer.log 等系统日志的输出打印过程。 |
| async trace log dropped count | TRACE 日志打印失败的次数。指 observer.log 等系统日志的输出打印过程。 |
| async debug log dropped count | DEBUG 日志打印失败(被限流等原因)的次数。指 observer.log 等系统日志的输出打印过程。 |
| async log flush speed | 平均每秒写入的日志条数。指 observer.log 等系统日志的输出打印过程。 |
| async generic log write count | 默认日志打印成功的次数。指 observer.log 等系统日志的输出打印过程。 |
| async user request log write count | 已弃用,仅在代码中保留。指 observer.log 等系统日志的输出打印过程。 |
| async data maintain log write count | 转储合并日志打印成功的次数。指 observer.log 等系统日志的输出打印过程。 |
| async root service log write count | RS 日志打印成功的次数。指 observer.log 等系统日志的输出打印过程。 |
| async schema log write count | Schema 日志打印失败(被限流等原因)的次数。指 observer.log 等系统日志的输出打印过程。 |
| async force allow log write count | 强制日志打印成功的次数。指 observer.log 等系统日志的输出打印过程。 |
| async generic log dropped count | 默认日志打印失败(被限流等原因)的次数。指 observer.log 等系统日志的输出打印过程。 |
| async user request log dropped count | 已弃用,仅在代码中保留。指 observer.log 等系统日志的输出打印过程。 |
| async data maintain log dropped count | 转储合并日志打印失败(被限流等原因)的次数。指 observer.log 等系统日志的输出打印过程。 |
| async root service log dropped count | RS 日志打印失败(被限流等原因)的次数。指 observer.log 等系统日志的输出打印过程。 |
| async schema log dropped count | Schema 日志打印失败(被限流等原因)的次数。指 observer.log 等系统日志的输出打印过程。 |
| async force allow log dropped count | 强制日志打印失败(被限流等原因)的次数。指 observer.log 等系统日志的输出打印过程。 |
CLOG
可以通过以下示例查询 CLOG 相关的监控指标。
obclient> select distinct class,stat_id,name,VALUE_TYPE from gv$sysstat where class=256 and stat_id in (80001,80002,80057);
返回结果如下:
+-------+---------+--------------------------------------+------------+
| class | stat_id | name | VALUE_TYPE |
+-------+---------+--------------------------------------+------------+
| 256 | 80001 | palf write io count to disk | ADD_VALUE |
| 256 | 80002 | palf write size to disk | ADD_VALUE |
| 256 | 80057 | clog trans log total size | ADD_VALUE |
+-------+---------+--------------------------------------+------------+
3 rows in set (0.07 sec)
参数说明:
| NAME | 描述 |
|---|---|
| palf write io count to disk | clog 写盘次数。clog 成功写盘时,会为该统计项计数加 1。 |
| palf write size to disk | clog 写盘大小,单位为 Bytes。clog 成功写盘时,会累加本次成功写盘的大小。 |
| clog trans log total size | 事务提交到 PALF 的数据量,单位为 Bytes。事务会提交日志到 PALF,提交日志完成后此值增加日志量大小。 |
ASH
可以通过以下示例查询 ASH 相关的监控指标。
obclient> select * from oceanbase.V$STATNAME where class = 3072;
返回结果如下:
+--------+---------+------------+----------------------------------------+----------------------------------------+-------+
| CON_ID | STAT_ID | STATISTIC# | NAME | DISPLAY_NAME | CLASS |
+--------+---------+------------+----------------------------------------+----------------------------------------+-------+
| 1002 | 200001 | 368 | DB time | DB time | 3072 |
| 1002 | 200002 | 369 | DB CPU | DB CPU | 3072 |
| 1002 | 200005 | 370 | background elapsed time | background elapsed time | 3072 |
| 1002 | 200006 | 371 | background cpu time | background cpu time | 3072 |
| 1002 | 200010 | 372 | non idle wait time | non idle wait time | 3072 |
| 1002 | 200011 | 373 | idle wait time | idle wait time | 3072 |
| 1002 | 200012 | 374 | background database time | background database time | 3072 |
| 1002 | 200013 | 375 | background database non-idle wait time | background database non-idle wait time | 3072 |
| 1002 | 200014 | 376 | background database idle wait time | background database idle wait time | 3072 |
| 1002 | 220001 | 388 | concurrency wait total time | concurrency wait total time | 3072 |
| 1002 | 220002 | 389 | user io wait total time | user io wait total time | 3072 |
| 1002 | 220003 | 390 | application wait total time | application wait total time | 3072 |
+--------+---------+------------+----------------------------------------+----------------------------------------+-------+
12 rows in set (0.184 sec)
参数说明:
注意
监控项不带 background 的指标是不包括 background 的部分。例如,idle wait time 只记录前台 Session 相关的时间,不包含 background database idle wait time 相关内容,这两个监控项的统计值是互斥的。
| NAME | 描述 | |
|---|---|---|
| DB time | 前台进程执行数据库操作的总时间,包括 CPU 和非空闲等待时间的累加值,单位为微秒。OceanBase 数据库内部会周期性的更新 Time Model 相关统计项。当一个线程处于活跃状态时,它一定处于 ON_CPU 状态或等待事件状态,根据它处于各状态的时长,累加 Time Model 相关统计项。 | |
| DB CPU | 前台进程消耗的 CPU 时间,单位为微秒。OceanBase 数据库内部会周期性的更新 Time Model 相关统计项。当一个线程处于活跃状态时,它一定处于 ON_CPU 状态或等待事件状态,根据它处于各状态的时长,累加 Time Model 相关统计项。 | |
| background elapsed time | 后台进程执行的总时间,单位为微秒。OceanBase 数据库内部会周期性的更新 Time Model 相关统计项。当一个线程处于活跃状态时,它一定处于 ON_CPU 状态或等待事件状态,根据它处于各状态的时长,累加 Time Model 相关统计项。 | |
| background cpu time | 后台进程消耗的 CPU 时间,单位为微秒。OceanBase 数据库内部会周期性的更新 Time Model 相关统计项。当一个线程处于活跃状态时,它一定处于 ON_CPU 状态或等待事件状态,根据它处于各状态的时长,累加 Time Model 相关统计项。 | |
| non idle wait time | 前台进程非空闲等待的时间,即会话处于等待状态但不是空闲等待的总时间,单位为微秒。OceanBase 数据库内部会周期性的更新 Time Model 相关统计项。当一个线程处于活跃状态时,它一定处于 ON_CPU 状态或等待事件状态,根据它处于各状态的时长,累加 Time Model 相关统计项。 | |
| idle wait time | 前台进程空闲等待的时间,即会话处于空闲等待状态的总时间,单位为微秒。OceanBase 数据库内部会周期性的更新 Time Model 相关统计项。当一个线程处于活跃状态时,它一定处于 ON_CPU 状态或等待事件状态,根据它处于各状态的时长,累加 Time Model 相关统计项。 | |
| background database time | 后台进程执行数据库操作的总时间,单位为微秒。OceanBase 数据库内部会周期性的更新 Time Model 相关统计项。当一个线程处于活跃状态时,它一定处于 ON_CPU 状态或等待事件状态,根据它处于各状态的时长,累加 Time Model 相关统计项。 | |
| 3072 | background database non-idle wait time | 后台进程在非空闲等待状态下执行数据库操作的时间,单位为微秒。OceanBase 数据库内部会周期性的更新 Time Model 相关统计项。当一个线程处于活跃状态时,它一定处于 ON_CPU 状态或等待事件状态,根据它处于各状态的时长,累加 Time Model 相关统计项。 |
| 3072 | background database idle wait time | 后台进程在空闲等待状态下执行数据库操作的时间,单位为微秒。OceanBase 数据库内部会周期性的更新 Time Model 相关统计项。当一个线程处于活跃状态时,它一定处于 ON_CPU 状态或等待事件状态,根据它处于各状态的时长,累加 Time Model 相关统计项。 |
| concurrency wait total time | 因 Concurrency 并发类别等待事件导致的等待时间总和,例如由于资源锁定而等待的时间,单位为微秒。由 OceanBase 数据库对应类比的等待事件累加汇总得来。 | |
| user io wait total time | 用户进程在等待 I/O 操作(如读取数据或写入数据到磁盘)完成的总时间,单位为微秒。由 OceanBase 数据库对应类比的等待事件累加汇总得来。 | |
| application wait total time | 由用户应用程序代码产生的等待时间总和(例如,由行级锁定或显式锁定命令引起的锁等待),单位为微秒。由 OceanBase 数据库对应类比的等待事件累加汇总得来。 |
其他
除了 GV$SYSSTAT 视图,还有其他丰富的视图对监控项进行了各种角度的描述。
例如,GV$OB_PROCESSLIST 描述了系统当前的会话,包括活跃状态,及其执行的 SQL 语句。还包括 SID、SQL_ID、TRANS_ID、TRACE_ID 等重要字段,是全链路跟踪的利器。
基于
GV$OB_PROCESSLIST视图查询活跃会话:obclient> select TENANT,SVR_IP,SVR_PORT,USER,HOST,COMMAND,STATE,INFO,SQL_ID,TRACE_ID from GV$OB_PROCESSLIST where STATE='ACTIVE' or null limit 10;返回结果如下:
+--------+------------+----------+-----------+-------------------+---------+--------+-----------------------------------------------------------------------------------------------------------------------------------------+----------------------------------+-----------------------------------+ | TENANT | SVR_IP | SVR_PORT | USER | HOST | COMMAND | STATE | INFO | SQL_ID | TRACE_ID | +--------+------------+----------+-----------+-------------------+---------+--------+-----------------------------------------------------------------------------------------------------------------------------------------+----------------------------------+-----------------------------------+ | sys |xx.xx.xx.xx | 2882 | DBA_query | xx.xx.xx.xx:51588 | Query | ACTIVE | select TENANT,SVR_IP,SVR_PORT,USER,HOST,COMMAND,STATE,INFO,SQL_ID,TRACE_ID from GV$OB_PROCESSLIST where STATE='ACTIVE' or null limit 10 | D18F6AE855AD0D7478162DD8EF48C781 | YB4206008451-0005F55893CEA363-0-0 | +--------+------------+----------+-----------+-------------------+---------+--------+-----------------------------------------------------------------------------------------------------------------------------------------+----------------------------------+-----------------------------------+ 1 row in set (0.04 sec)基于
GV$OB_PROCESSLIST视图查询 Unit 维度的活跃会话数:obclient> select tenant_id, tenant_name, svr_ip, case when cnt is null then 0 else cnt end as cnt from ( select DBA_OB_TENANTS.tenant_name, DBA_OB_TENANTS.tenant_id, svr_ip, cnt from DBA_OB_TENANTS left join ( select count(`state`='ACTIVE' OR NULL) as cnt, tenant as tenant_name, svr_ip from GV$OB_PROCESSLIST group by tenant,svr_ip ) t1 on DBA_OB_TENANTS.tenant_name = t1.tenant_name where DBA_OB_TENANTS.tenant_type!='META' ) t2;返回结果如下:
+-----------+-----------------+-------------+------+ | tenant_id | tenant_name | svr_ip | cnt | +-----------+-----------------+-------------+------+ | 1 | sys | xx.xx.xx.xx | 0 | | 1 | sys | xx.xx.xx.xx | 0 | | 1 | sys | xx.xx.xx.xx | 0 | | 1002 | midas0_3790 | xx.xx.xx.xx | 0 | | 1002 | midas0_3790 | xx.xx.xx.xx | 0 | | 1002 | midas0_3790 | xx.xx.xx.xx | 0 | +-----------+-----------------+-------------+------+ 6 rows in set (0.05 sec)