概述

监控是一种监视当前系统状态的方式。在 SequoiaDB 中,用户可以使用快照(SNAPSHOT)与列表(LIST)命令进行系统监控。

快照视图

快照是一种得到系统当前状态的命令,主要分为以下类型:

快照标示对应 sdbshell 接口标示快照类型描述
$SNAPSHOT_CONTEXTSDB_SNAP_CONTEXTS上下文快照上下文快照列出当前数据库节点中所有的会话所对应的上下文
$SNAPSHOT_CONTEXT_CURSDB_SNAP_CONTEXTS_CURRENT当前会话上下文快照当前上下文快照列出当前数据库节点中当前会话所对应的上下文
$SNAPSHOT_SESSIONSDB_SNAP_SESSIONS会话快照会话快照列出当前数据库节点中所有的会话
$SNAPSHOT_SESSION_CURSDB_SNAP_SESSIONS_CURRENT当前会话快照当前会话快照列出当前数据库节点中当前的会话
$SNAPSHOT_CLSDB_SNAP_COLLECTIONS集合快照集合快照列出当前数据库节点或集群中所有非临时集合
$SNAPSHOT_CSSDB_SNAP_COLLECTIONSPACES集合空间快照集合空间快照列出当前数据库节点或集群中所有集合空间(编目集合空间除外)
$SNAPSHOT_DBSDB_SNAP_DATABASE数据库快照数据库快照列出当前数据库节点的数据库监视信息
$SNAPSHOT_SYSTEMSDB_SNAP_SYSTEM系统快照系统快照列出当前数据库节点的系统监视信息
$SNAPSHOT_CATASDB_SNAP_CATALOG编目信息快照用于查看编目信息
$SNAPSHOT_TRANSSDB_SNAP_TRANSACTIONS事务快照事务快照列出数据库中正在进行的事务信息
$SNAPSHOT_TRANS_CURSDB_SNAP_TRANSACTIONS_CURRENT当前事务快照当前事务快照列出当前会话正在进行的事务信息
$SNAPSHOT_ACCESSPLANSSDB_SNAP_ACCESSPLANS访问计划缓存快照访问计划缓存快照列出数据库中缓存的访问计划的信息
$SNAPSHOT_HEALTHSDB_SNAP_HEALTH节点健康检测快照节点健康检测快照列出数据库中所有节点的健康信息
$SNAPSHOT_CONFIGSSDB_SNAP_CONFIGS配置快照配置快照列出数据库中指定节点的配置信息
$SNAPSHOT_SEQUENCESSDB_SNAP_SEQUENCES序列快照序列快照列出当前数据库的全部序列信息
$SNAPSHOT_SVCTASKSSDB_SNAP_SVCTASKS服务任务快照服务任务快照列出当前数据库节点中服务任务的统计信息

列表视图

列表是一种轻量级的得到系统当前状态的命令,主要分为以下类型:

列表标示对应 sdbshell 接口标示列表类型描述
$LIST_CONTEXTSDB_LIST_CONTEXTS上下文列表上下文列表列出当前数据库节点中所有的会话所对应的上下文
$LIST_CONTEXT_CURSDB_LIST_CONTEXTS_CURRENT当前会话上下文列表当前上下文列表列出当前数据库节点中当前会话所对应的上下文
$LIST_SESSIONSDB_LIST_SESSIONS会话列表会话列表列出当前数据库节点中所有的会话
$LIST_SESSION_CURSDB_LIST_SESSIONS_CURRENT当前会话列表当前会话列表列出当前数据库节点中当前的会话
$LIST_CLSDB_LIST_COLLECTIONS集合列表集合列表列出当前数据库节点或集群中所有非临时集合
$LIST_CSSDB_LIST_COLLECTIONSPACES集合空间列表集合空间列表列出当前数据库节点或集群中所有集合空间(编目集合空间除外)
$LIST_SUSDB_LIST_STORAGEUNITS存储单元列表存储单元列表列出当前数据库节点的全部存储单元信息
$LIST_GROUPSDB_LIST_GROUPS分区组列表分区组列表列出当前集群中的所有分区信息
$LIST_TRANSSDB_LIST_TRANSACTIONS事务列表事务列表列出数据库中正在进行的事务信息
$LIST_TRANS_CURSDB_LIST_TRANSACTIONS_CURRENT当前事务列表当前事务列表列出当前会话正在进行的事务信息
$LIST_SEQUENCESSDB_LIST_SEQUENCES序列列表序列列表列出当前数据库中所有的序列信息
$LIST_BACKUPSDB_LIST_BACKUPS备份列表备份列表列出当前数据库的备份信息
$LIST_SVCTASKSSDB_LIST_SVCTASKS服务任务列表服务任务列表列出当前数据库节点中所有的服务任务
$LIST_USERSDB_LIST_USERS用户列表用户列表列出当前集群中的所有用户信息

SQL到SequoiaDB映射表

下表列出了 SQL 快照查询语句的操作在 API 中对应的快照操作

SQL 语句API 语句
select <sel> from $<snapshot> where <cond> order by <sort>db.snapshot( , [cond], [sel], [sort] )
db.exec( “select from $SNAPSHOT_CONTEXT where SessionID = 20” )过滤指定条件的记录。db.snapshot(SDB_SNAP_CONTEXTS, { SessionID: 20 } )
db.exec( “ select NodeName from $SNAPSHOT_CONTEXT “ )只显示记录的指定字段。db.snapshot(SDB_SNAP_CONTEXTS, {}, { NodeName:””} )
db.exec( “ select from $SNAPSHOT_CONTEXT order by SessionID” )根据指定字段进行排序。db.snapshot(SDB_SNAP_CONTEXTS, {}, {}, { “SessionID”: 1 } )

下面列出了 SQL 快照查询语句的操作在 API 中使用指定快照查询参数的对应快照操作:

  1. select <sel> from $<snapshot>
  2. where <cond>
  3. order by <sort>
  4. limit <limit>
  5. offset <skip> /*+use_option(<options>)*/

对应

  1. SdbSnapshotOption[.cond(<cond>)]
  2. [.sel(<sel>)]
  3. [.sort(<sort>)]
  4. [.options(<options>)]
  5. [.skip(<skip>)]
  6. [.limit(<limit>)]

cond(<cond>)

对应 SQL 语法 where 子句

SQL 语句API 语句
db.exec( “select * from $SNAPSHOT_CONTEXT where SessionID = 22” )db.snapshot( SDB_SNAP_CONTEXTS, new SdbSnapshotOption().cond( { SessionID: 22 } ) )

sel(<sel>)

对应 SQL 语法的字段名

SQL 语句API 语句
db.exec( “select SessionID from $SNAPSHOT_CONTEXT” )db.snapshot( SDB_SNAP_CONTEXTS, new SdbSnapshotOption().cond( {} ).sel( { SessionID: “” } ) )

sort(<sort>)

对应 SQL 语法 order by 子句

SQL 语句API 语句
db.exec( “ select * from $SNAPSHOT_CONTEXT order by SessionID” )db.snapshot( SDB_SNAP_CONTEXTS, new SdbSnapshotOption().cond( {} ).sort( { SessionID: 1 } ) )

options(<options>)

对应 SQL 语法 hint 子句中的 use_option 部分。

SQL 语句API 语句
db.exec(‘select from $SNAPSHOT_CONFIGS where GroupName = “db1” and ServiceName = “20000” /+use_option(Mode, local) use_option(Expand, false)*/‘)db.snapshot( SDB_SNAP_CONFIGS, new SdbSnapshotOption().cond( { GroupName:’db1’, ServiceName:’20000’ } ).options( { “Mode”: “local”, “Expand”: false } ) )

skip(<skip>)

对应 SQL 语法 offset 子句

SQL 语句API 语句
db.exec( “ select * from $SNAPSHOT_CONTEXT offset 2” )db.snapshot( SDB_SNAP_CONTEXTS, new SdbSnapshotOption().cond( {} ).skip( 2 ) )

limit(<limit>)

对应 SQL 语法 limit 子句

SQL 语句API 语句
db.exec( “select * from $SNAPSHOT_CONTEXT limit 1” )db.snapshot( SDB_SNAP_CONTEXTS, new SdbSnapshotOption().cond( {} ).limit( 1 ) )

SQL使用命令位置参数

命令位置参数 是用于控制命令执行的位置信息。SQL 可以用 where 语句来使用命令位置参数。

示例

  • 控制快照在指定节点运行:
  1. > db.exec("select * from $SNAPSHOT_CONTEXT where Role = 'catalog'")
  2. {
  3. "NodeName": "hostname:30000",
  4. "SessionID": 21,
  5. "Contexts": [
  6. {
  7. "ContextID": 7764,
  8. "Type": "DUMP",
  9. "Description": "IsOpened:1,IsTrans:0,HitEnd:0,BufferSize:0",
  10. "DataRead": 0,
  11. "IndexRead": 0,
  12. "QueryTimeSpent": 0,
  13. "StartTimestamp": "2019-06-26-17.55.42.355666"
  14. }
  15. ]
  16. }
  17. ...
  • 控制快照不在全局执行:
  1. > db.exec("select * from $SNAPSHOT_CONTEXT where Global = false")
  2. {
  3. "NodeName": "hostname:50000",
  4. "SessionID": 10,
  5. "Contexts": [
  6. {
  7. "ContextID": 70,
  8. "Type": "DUMP",
  9. "Description": "IsOpened:1,IsTrans:0,HitEnd:0,BufferSize:0",
  10. "DataRead": 0,
  11. "IndexRead": 0,
  12. "QueryTimeSpent": 0,
  13. "StartTimestamp": "2019-06-26-17.56.55.916040"
  14. }
  15. ]
  16. }