跳转至

资源管理工具sc_toolkit

资源管理工具sc_toolkit

Seabox数据库提供了一个名为sc_toolkit的schema,可用于查询系统表,系统状态等信息。sc_toolkit包含多个视图(view),可以使用SQL命令访问这些视图。尽管某些对象可能需要超级用户权限,但所有数据库用户都可以访问sc_toolkit。

本文介绍了sc_toolkit中常用视图。sc_toolkit中的其它对象(视图,函数和外部表)在本文档中可能未描述。

警告:

请勿在sc_toolkit中更改数据库对象。不要在sc_toolkit中创建数据库对象。对sc_toolkit对象的更改可能会影响sc_toolkit返回的管理信息准确性。

检查资源组活动和状态

仅当资源组管理处于活动状态时,本节中描述的资源组活动和状态视图才有效。

sc_resgroup_config

使用本视图,管理员可以查看资源组的当前CPU,内存和并发限制。该视图还显示建议的限制设置。更改限制后,建议的限制将不同于当前限制,但是无法立即应用新值。

权限:所有用户均可访问此视图。

描述
groupid 资源组的ID
groupname 资源组的名称
manage_group 是否为管理组,1表示管理组,0表示业务组
parentgroupid 父级资源组的的ID
concurrency 为资源组指定的并发值
cpu_rate_limit 为资源组指定的CPU相对限制值或-1
cpu_rate_ceiling 为资源组指定的CPU绝对限制值或-1
cpuset 为资源组保留的CPU核,-1表示不保留。
memory_limit 为资源组指定的内存限制值,单位:MB
io_kbps 限制IO每秒读写字节数,单位:KB
ic_kbps 限制内部数据传输每秒字节数,单位:KB
queue_priority 队列优先级
sc_resgroup_status

使用本视图,管理员可以查看资源组的状态和活动。可以显示每个资源组正在等待运行的查询数量以及系统中当前正在活动的查询数量。该视图还显示资源组的当前内存和CPU使用率。

权限:所有用户均可访问此视图。

描述
rsgname 资源组的名称
groupid 资源组的ID
num_running 资源组中当前正在执行的事务数
num_queueing 资源组当前排队的事务数
num_queued 自上次启动数据库以来,资源组的排队事务总数,不包括num_queueing。
num_executed 自数据库上次启动以来,资源组中已执行事务的总数,不包括num_running。
total_queue_duration 自上次启动数据库以来,所有事务排队的总时间。
cpu_usage 每个executor主机上资源组的实时CPU使用率,用百分比(占全部CPU核算力的百分比)表示。
memory_usage 每个executor主机上资源组的实时内存使用情况,单位:MB。
io_speed 每个executor主机上资源组的实时IO速度,单位:B/s
ic_speed 每个executor主机上资源组的内部数据传输实时速度,单位:B/s

说明一下cpu_usage字段值意义:假设系统有32个CPU核,每个CPU核的全部算力为100%,那么全部核的总算力为3200%。假设cpu_usage字段值为x,则表示该组的CPU使用率占总算力的x%。

cpu_usage字段是JSON格式的key:value字符串,用于显示资源组在每个executor上的CPU使用率百分比。key是executor ID,value是executor主机上资源组的CPU使用率百分比。在executor主机上运行的所有executor的CPU总使用率不应超过sc_resource_group_cpu_limit*100。示例cpu_usage列输出:

{"-1":0.01, "0":0.31, "1":0.31}

在此示例中,executor 0和executor 1在同一主机上运行;它们的CPU使用率是相同的。

memory_usage字段也是JSON格式的key:value字符串,用于显示资源组在每个executor上的内存使用量(MB)。key是executor ID,value是executor主机上资源组的内存使用量。示例memory_usage列输出:

{"-1":8, "0":54, "1":40}

io_speed、ic_speed与cpu_usage格式类似。

sc_resgroup_status_per_host

本视图以主机为单位显示每个资源组的实时CPU和内存使用率(MB)。

权限:所有用户均可访问此视图。

描述
rsgname 资源组的名称
groupid 资源组的ID
hostname executor主机的主机名
cpu 主机上资源组的实时CPU使用率,用百分比(占全部CPU核算力的百分比)表示。
memory_used 主机上资源组的实时内存使用情况,单位:MB。
io_speed 主机上资源组的实时IO速度,单位:B/s
ic_speed 主机上资源组的内部数据传输实时速度,单位:B/s

输出示例:

 rsgname      | groupid | hostname   | cpu  | memory_used | io_speed | ic_speed 
--------------+---------+------------+------+-------------+----------+----------
admin_group   | 6438    | my-desktop | 0.84 | 1           | 0.00     | 0.00     
default_group | 6437    | my-desktop | 0.00 | 0           | 0.00     | 0.00     
(2 rows)
sc_resgroup_status_per_executor

本视图基于每个executor实例和每个主机显示每个资源组的实时CPU和内存使用率(MB)。

权限:所有用户均可访问此视图。

描述
rsgname 资源组的名称
groupid 资源组的ID
hostname executor主机的主机名
executor_id executor ID
cpu 主机上的executor实例的资源组的实时CPU使用率,用百分比(占全部CPU核算力的百分比)表示。
memory_used 主机上的executor实例的资源组的实时内存使用情况,单位:MB。
io_speed 主机上的executor实例的资源组的实时IO速度,单位:B/s
ic_speed 主机上的executor实例的资源组的内部数据传输实时速度,单位:B/s

该视图的查询输出与sc_resgroup_status_per_host视图的查询输出相似,并针对每个主机上的每个executor实例划分CPU和内存(已使用和可用)。

检查需要例行维护的表

以下视图可以帮助您识别需要日常维护的表 (VACUUM和/或ANALYZE)。

VACUUMVACUUM FULL命令可回收已删除或过时的行所占用的磁盘空间。 由于Seabox数据库中使用了MVCC事务并发模型,即使任何新事务都不可见,被删除或更新的数据行仍占据磁盘上的物理空间。 过期的行会增加磁盘上的表大小,并最终减慢表的扫描速度。

ANALYZE命令收集查询优化器所需的列级统计信息。 Seabox数据库使用依赖数据库统计信息的基于成本的查询优化器。 准确的统计信息使查询优化器可以更好地估计选择性和查询操作检索到的行数,从而选择最有效的查询计划。

sc_bloat_diag

此视图显示被诊断为“膨胀的”常规heap表(给定表统计信息,磁盘上的实际页面数超过了预期的页面数)。 要想获得表的膨胀信息,需要对表执行analyze命令。

注意:只有被诊断为“膨胀的”表才会被本视图显示,bdirelpages/bdiexppages定义为膨胀率(“/”为整除运算),膨胀率大于3的表才会被判定为“膨胀的”。 如果需要查看所有表(含非“膨胀的”)的页数,可以使用sc_bloat_expected_pages视图。

膨胀的表需要VACUUM或VACUUM FULL,才能回收已删除或过时的行所占用的磁盘空间。

权限:所有用户都可以访问该视图,但是非超级用户将只能看到他们有权访问的表。

描述
bdirelid 表oid
bdinspname schema名称
bdirelname 表名
bdirelpages 磁盘上实际页的数量
bdiexppages 给定表数据的预期页数(最小值为executor实例数)
bdidiag 膨胀诊断消息
sc_bloat_expected_pages

此视图显示所有heap表的存储页使用值及期望值。

权限:所有用户都可以访问该视图,但是非超级用户将只能看到他们有权访问的表。

描述
btdrelid 表oid
btdrelpages 磁盘上实际页的数量
btdexppages 给定表数据的预期页数(最小值为executor实例数)
sc_stats_missing

该视图显示没有统计信息的表,因此可能需要对该表运行ANALYZE。

权限:所有用户都可以访问该视图,但是非超级用户将只能看到他们有权访问的表。

描述
smischema schema名称
smitable 表名
smisize 该表是否有统计信息。如果该表没有在系统表中记录行数和行大小统计信息,则为false,这可能表明该表需要进行分析。如果表不包含任何行,这也将为false。例如,分区表的父表始终为空,并且始终返回false。
smicols 表中的列数
smirecs 表中的行数

检查服务器配置文件

sc_param_setting(‘parameter_name’)

函数参数为服务器配置参数的名称,并返回Coordinator和每个活动Executor的seaboxsql.conf值。

权限:所有用户均可使用此函数。

描述
paramexecutor executor id(仅显示活动Executor)。Coordinator的id为-1。
paramname 参数名称
paramvalue 参数值

示例:

SELECT * FROM sc_toolkit.sc_param_setting('max_connections');
sc_param_settings_executor_value_diffs

分类为本地参数的服务器配置参数(意味着每个executor都从其自己的seaboxsql.conf文件获取参数值),应在所有executor上进行相同的设置。该视图显示的本地参数设置不一致。不包括应该具有不同值的参数(例如port)。

权限:所有用户均可访问此视图。

描述
psdname 参数的名称
psdvalue 参数的值
psdcount 具有此值的executor数

检查失败的executor

sc_pgdatabase_invalid

此视图显示系统目录中标记为宕机的executor的信息。

权限:所有用户均可访问此视图。

描述
pgdbidbid executor的dbid。每个executor都有唯一的dbid。
pgdbiisprimary executor的角色是否是primary?(t或f)
pgdbicontent 该executor的ID。primary和mirror将具有相同的ID。
pgdbivalid executor是否在线有效?(t或f)
pgdbidefinedprimary 在系统初始化时,此executor是否分配为primary?(t或f)

检查SQL磁盘溢出空间使用情况

本节视图显示当前正在使用磁盘溢出空间的所有查询的信息。如果Seabox数据库没有足够的内存来在内存中执行查询,则会在磁盘上创建工作文件(workfile)。此信息可用于故障排除和优化查询。

sc_workfile_entries

该视图显示当前所有查询在所有executor上创建的workfile磁盘空间使用情况。

权限:所有用户均可访问该视图,但是非超级用户只能查看其有权访问的数据库信息。

类型 参考 描述
command_cnt integer 查询的命令ID
datname name 数据库名称
directory text workfile的路径
executorid integer executor ID
optype text 创建workfile的查询算子类型
pid integer 服务器进程PID
query text 进程正在执行的查询
sess_id integer 会话ID
size numeric workfile的大小(单位:字节)
numfiles bigint 创建的文件数。
slice integer 查询计划切片。查询计划中正在执行的部分。
usename name 角色名称
sc_workfile_usage_per_query

该视图显示每条查询在每个executor上workfile的磁盘空间使用情况。

权限:所有用户均可访问该视图,但是非超级用户只能查看其有权访问的数据库信息。

类型 参考 描述
command_cnt integer 查询的命令ID
executorid integer executor ID
query text 进程正在执行的查询
datname name 数据库名称
pid integer 服务器进程的PID
sess_id integer 会话ID
size numeric workfile的大小(单位:字节)
numfiles bigint 创建的文件数
usename name 角色名称
sc_workfile_usage_per_executor

该视图为每个executor显示一行。每行显示当前时间executor上用于workfile的磁盘空间总量。

权限:所有用户均可访问此视图,但是非超级用户只能查看其有权访问的数据库信息。

类型 参考 描述
executorid integer executor ID
size numeric executor上workfile的总大小
numfiles bigint 创建的文件数

查看用户和组(角色)

将用户(角色)分组在一起以简化对象特权的管理通常很方便:通过这种方式,可以将特权授予或撤消整个组。在Seabox数据库中,创建一个角色代表这个组,然后将组角色的成员身份授予各个用户角色来完成的。

sc_roles_assigned

此视图显示系统中的所有角色及其分配的成员(如果角色也是组角色)。

权限:所有用户均可访问此视图。

描述
raroleid 角色对象ID。如果此角色具有成员(用户),则将其视为组角色。
rarolename 角色(用户或组)名称。
ramemberid 属于此角色成员的角色的角色对象ID。
ramembername 属于此角色的角色名称。
sc_resgroup_role

此视图显示查看角色分派的资源组。

权限:所有用户均可访问此视图。

描述
rrrolname 角色名称。
rrrsgname 资源组名称。

检查数据库对象大小和磁盘空间

本节视图可用于确定数据库、模式,表或索引的磁盘空间使用情况。

sc_size_of_all_table_indexes

此视图显示所有表的索引的总大小。

权限:所有用户都可以访问此视图,但是非超级用户将只能看到他们有权访问的关系。

描述
soatioid 表的对象ID
soatisize 所有表索引的总大小(单位:字节)
soatischemaname schema名称
soatitablename 表名
sc_size_of_database

此视图显示数据库的总大小。

权限:所有用户都可以访问该视图,但是非超级用户将只能看到他们有权访问的数据库。

描述
sodddatname 数据库名称
sodddatsize 数据库大小(单位:字节)
sc_size_of_index

此视图显示索引的总大小。

权限:所有用户都可以访问此视图,但是非超级用户将只能看到他们有权访问的关系。

描述
soioid 索引的对象ID
soitableoid 索引所属表的对象ID
soisize 索引大小(单位:字节)
soiindexschemaname 索引schema的名称
soiindexname 索引名称
soitableschemaname 表schema的名称
soitablename 表名称
sc_size_of_partition_and_indexes_disk

此视图显示分区子表及其索引在磁盘上的大小。

权限:所有用户均可访问此视图,但是非超级用户将只能看到他们有权访问的关系。

描述
sopaidparentoid 父表的对象ID
sopaidpartitionoid 分区表的对象ID
sopaidpartitiontablesize 分区表大小(单位:字节)
sopaidpartitionindexessize 该分区上所有索引的总大小
sopaidparentschemaname 父schema的名称
sopaidparenttablename 父表的名称
sopaidpartitionschemaname 分区schema的名称
sopaidpartitiontablename 分区表的名称
sc_size_of_schema_disk

此视图显示当前数据库中公共模式和用户创建的模式的模式大小。

权限:所有用户都可以访问此视图,但是非超级用户将只能看到他们有权访问的架构。

描述
sosdnsp schema名称
sosdschematablesize schema中表的总大小(单位:字节)
sosdschemaidxsize schema中索引的总大小(单位:字节)
sc_size_of_table_and_indexes_disk

此视图显示表及其索引在磁盘上的大小。

权限:所有用户都可以访问此视图,但是非超级用户将只能看到他们有权访问的关系。

描述
sotaidoid 父表的对象ID
sotaidtablesize 表的磁盘大小
sotaididxsize 表上所有索引的总大小
sotaidschemaname schema名称
sotaidtablename 表名
sc_size_of_table_and_indexes_licensing

此视图显示用于许可目的的表及其索引的总大小。

权限:需要超级用户权限。

描述
sotailoid 表的对象ID
sotailtablesizedisk 表的总磁盘大小
sotailtablesizeuncompressed 如果该表是压缩的列存表,则显示未压缩的表大小(单位:字节)。
sotailindexessize 表中所有索引的总大小
sotailschemaname schema名称
sotailtablename 表名
sc_size_of_table_disk

此视图显示磁盘上表的大小。

权限:所有用户均可访问此视图,但是非超级用户将只能看到他们有权访问的表。

描述
sotdoid 表的对象ID
sotdsize 表的大小(单位:字节)。该大小仅是主表的大小。该大小不包括辅助对象(例如,超大(toast)属性)或列存表的其他存储对象。
sotdtoastsize TOAST表的大小(超大属性存储)(如果有)。
sotdadditionalsize 反映列存表的段和块目录表的大小。
sotdschemaname schema名称
sotdtablename 表名
sc_size_of_table_uncompressed

此视图显示列存表的未压缩表大小。 否则,将显示磁盘上的表大小。

权限:需要超级用户权限。

描述
sotuoid 表的对象ID
sotusize 如果表是压缩的列存表,则表示表的未压缩大小(单位:字节)。否则,为磁盘上表的大小。
sotuschemaname schema名称
sotutablename 表名
sc_disk_free

该外部表在活动executor主机上运行df(disk free)命令,并报告结果。非活动mirror不包括在计算中。

权限:需要超级用户权限。

描述
dfexecutor executor的内容ID(仅显示活动executor)
dfhostname executor主机的主机名
dfdevice 设备名称
dfspace executor文件系统中的可用磁盘空间(单位:KB)
sc_disk_lsblk

该外部表在活动executor主机上运行lsblk命令,并报告结果。非活动mirror不包括在计算中。

权限:需要超级用户权限。

描述
lsblkexecutor executor的内容ID(仅显示活动executor)
lsblkhostname executor主机的主机名
lsblkname 块设备名称
lsblknumber 块设备的设备号(主设备号:次设备号)
lsblkrm 是否可移除
lsblksize 大小,单位:字节
lsblkro 是否只读
lsblktype 设备类型
lsblkmountpoint 挂载点

检查数据分布倾斜

Seabox数据库中的所有表都是分布式的,这意味着它们的数据被划分到系统中的所有executor中。如果数据分布不均匀,则查询处理性能可能会受到影响。

sc_skew_coefficients

该视图通过计算存储在每个executor上的数据的变异系数来显示数据分布倾斜程度。

权限:所有用户均可访问此视图,但是非超级用户将只能看到他们有权访问的表。

描述
skcoid 表的对象ID
skcnamespace 定义表的命名空间
skcrelname 表名
skccoeff 变异系数(CV)计算为标准偏差除以平均值。它同时考虑了平均值和围绕数据序列平均值的变异性。值越低越好。较高的值表示较大的数据偏斜。

skccoeff 表示变异系数(coefficient of variation, CV)值,是标准差除以均值。值越小越好(分布越均匀),值越大表示分布越倾斜。

image

sc_skew_idle_fractions

该视图通过计算表扫描期间空闲系统的百分比来显示数据分布偏差,这是处理数据偏差的指标。

权限:所有用户均可访问此视图,但是非超级用户将只能看到他们有权访问的表。

描述
sifoid 表的对象ID
sifnamespace 定义表的名称空间
sifrelname 表名
siffraction 在表扫描期间空闲的系统百分比,这表示数据分布不均匀或查询处理偏斜。例如,值0.1表示10%的倾斜,值0.5表示50%的倾斜,依此类推。 倾斜率超过10%的表应评估其分布策略。