KES V8R6 系统视图

2. 系统视图

除系统目录外,KingbaseES提供了一些内建视图。一些系统视图为系统目录上一些常用查询提供了便利的访问。其他视图提供了对内部服务器状态的访问。

KingbaseES信息模式 提供了一组可供选择的视图,它和系统视图在功能上有所重叠。由于信息模式是SQL标准,而这里描述的视图是KingbaseES特有的,如果信息模式能提供你所需要的信息,通常最好使用它。

表 2.2 列出了这里描述的系统视图。每一个视图的详细文档都在后文中。

除了特别注明的,所有这里描述的视图都是只读的。

表 2.2 系统视图

视图名字

用途

sys_available_extensions

可用的扩展

sys_available_extension_versions

所有版本的扩展

sys_config

编译时配置参数

sys_cursors

打开的游标

sys_file_settings

配置文件内容摘要

sys_group

数据库用户组

sys_hba_file_rules

客户端认证配置文件内容的摘要

sys_indexes

索引

sys_locks

当前保持或者等待的锁

sys_matviews

物化视图

sys_policies

策略

sys_prepared_statements

预备好的语句

sys_prepared_xacts

预备好的事务

sys_publication_tables

publication和它们相关的表

sys_replication_origin_status

有关复制源的信息,包括复制进度

sys_replication_slots

复制槽信息

sys_roles

数据库角色

sys_rules

规则

sys_seclabels

安全标签

sys_sequences

序列

sys_settings

参数设置

sys_shadow

数据库用户

sys_stats

规划器统计信息

sys_stats_ext

extended planner statistics

sys_tables

sys_timezone_abbrevs

时区简写

sys_timezone_names

时区名字

sys_user

数据库用户

sys_user_mappings

用户映射

sys_views

视图

2.1. sys_available_extensions

sys_available_extensions视图列出了可用于安装的扩展。参见 sys_extension 目录,它显示当前已安装的扩展。

表 2.1.2 sys_available_extensions列

名字

类型

描述

name

name

扩展名

default_version

text

默认版本的名字,如果没有指定则为NULL

installed_version

text

当前已安装的扩展版本,如果没有安装则为NULL

comment

text

来自于扩展的控制文件的注释字符串

sys_available_extensions视图是只读的。

2.2. sys_available_extension_versions

sys_available_extension_versions视图列出了可用于安装的指定扩展版本。参见 sys_extension 目录,它显示当前已安装的扩展。

表 2.2.2 sys_available_extension_versions列

名字

类型

描述

name

name

扩展名

version

text

版本名

installed

bool

如果此版本的扩展当前已安装则为真

superuser

bool

如果只有超级用户被允许安装此扩展则为真

relocatable

bool

如果扩展能被重定位到另一个模式则为真

schema

name

此扩展必须被安装到的模式名,如果此扩展是部分或者全部可以重定位的,此列为NULL

requires

name[]

先决条件扩展的名字,如果没有则为NULL

comment

text

来自于扩展的控制文件的注释字符串

sys_available_extension_versions视图是只读的。

2.3. sys_config

视图sys_config描述了当前安装的KingbaseES版本中的编译时配置参数。它存在的本意是用于那些要和KingbaseES交互的软件包,让它们能找到所需要的头文件和库。它提供了和 sys_config KingbaseES客户端应用相同的基本信息。

默认情况下,sys_config视图只能由超级用户读取。

表 2.3.3 sys_config列

名称

类型

描述

name

text

参数名

setting

text

参数值

2.4. sys_cursors

sys_cursors视图列出了当前可用的游标。游标可以以几种方式定义:

  • 通过SQL中的 DECLARE 语句

  • 通过前端/后端协议中的绑定消息

  • 通过服务器编程接口(SPI),如 接口函数 中所描述的

sys_cursors视图显示由任何这些方式创建的游标。视图只存在于定义它们的事务期间,除非声明了WITH HOLD。因此非保持游标只在它们的创建事务结束前存在于这个视图中。

Note

视图用于在内部实现KingbaseES的某些部件,例如过程语言。因此,sys_cursors视图可能包括那些不是由用户显式创建的游标。

表 2.4.1 sys_cursors列

名字

类型

描述

name

text

游标名

statement

text

提交用于定义此游标的查询语句

is_holdable

boolean

如果游标是可保持的(即,它可以在其定义事务提交后被访问)则为 true,否则为

is_binary

boolean

如果游标被声明为BINARY则为true,否则为false

is_scrollable

boolean

如果游标是可滚动的(即,允许以一种非顺序的方式检索行)则为true,否则为false

creation_time

timestamptz

游标被声明的时间

sys_cursors视图是只读的。

2.5. sys_file_settings

视图sys_file_settings提供了服务器配置文件内容的概要。这个视图中的每一行表示配置文件中出现的一个 “name = value”项,还带有注解指示该值是否被成功地应用。在配置文件有问题时,有可能出现额外的行,它们没有相关的 “name = value”项,一个例子是配置文件中有语法错误。

这个视图有助于检查在配置文件中打算做的修改是否能工作,或者用来诊断之前的失败。注意这个视图报告的是配置文件的当前内容,而不是服务器最后应用的值(这些值通常查看 sys_settings 视图就够了)。

默认情况下,sys_file_settings视图只有超级用户可读。

表 2.5.1 sys_file_settings列

名称

类型

描述

sourcefile

text

配置文件的完整路径名

sourceline

integer

该项在配置文件中出现的行号

seqno

integer

项被处理的顺序(1..``n``

name

text

配置参数名

setting

text

被赋予给参数的值

applied

boolean

为真表示值已被成功应用

error

text

如果非空,表示一个错误消息,它说明为什么这个项不能被应用

如果配置文件包含语法错误或者非法参数名,服务器将不会尝试从其中应用任何设置,并且因此所有的applied域都为假。在这种情况下,将会有一个或者多个行的error域为非空,它们说明了为什么出问题。否则,将尽可能应用每个设置。如果一个设置不能被应用(例如非法值或者该设置不能在服务器开始后改变),会有一个合适的消息存储在它的error域中。一个项的applied 域为假的另一种情况是它被后面一个具有相同参数名的项所覆盖,这种情况不会被认为是一种错误,因此在error域中不会有 错误消息。

关于更改运行时参数的各种方法请见 设置参数

2.6. sys_group

视图sys_group为向后兼容而存在:它模拟了存在于KingbaseES V7之前版本中的一个目录。它显式所有角色的名称和未被标记rolcanlogin的成员,它是被用做组的角色集合的近似。

表 2.6.1 sys_group列

名称

类型

引用

描述

groname

name

sys_authid.rolname

组名

grosysid

oid

sys_authid.oid

组ID

grolist

oid[]

sys_authid.oid

包含此组中角色ID的一个数组

2.7. sys_hba_file_rules

视图sys_hba_file_rules提供客户端认证配置文件sys_hba.conf内容的摘要。该文件中每个非空、非注释行都会在这个视图中出现一行,行中还有标记表示该规则是否被成功地应用。

这个视图可用来检查认证配置文件中按计划的更改是否起作用,或者诊断之前的失败。注意这个视图报告的是该文件的当前内容,而不是服务器最后一次载入的内容。

默认情况下,只有超级用户可以读取sys_hba_file_rules视图。

表 2.7.1 sys_hba_file_rules列

名称

描述

line_number

integer

这条规则在sys_hba.conf中的行号

type

text

连接类型

database

text[]

这条规则应用的数据库名列表

user_name

text[]

这条规则应用的用户及组名列表

address

text

主机名或IP地址,或者 allsamehostsamenet之一,对于本地连接为空

netmask

text

IP地址掩码,如果不适用则为空

auth_method

text

认证方法

options

text[]

为认证方法指定的选项(如果有)

error

text

如果非空,则是一个错误消息,它表示为什么这一行无法被处理

通常,反映一个不正确项的行只有line_numbererror域中有值。

更多有关客户端认证配置的信息请参考 客户端认证

2.8. sys_indexes

视图sys_indexes提供对于数据库中每一个索引信息的访问。

表 2.8.1 sys_indexes列

名称

类型

引用

描述

schemaname

name

sys_namespace.nspname

包含表和索引的模式名

tablename

name

sys_class.relname

此索引的基表的名字

indexname

name

sys_class.relname

索引名

tablespace

name

sys_tablespace.spcname

包含索引的表空间名(如果是数据库的默认值则为空)

indexdef

text

索引定义( CREATE INDEX命令的重构)

2.9. sys_locks

视图sys_locks提供了数据库服务器上活动进程中保持的锁的信息。

sys_locks中对每一个活动可锁对象、请求锁模式和相关进程的组合都有一行。因此,如果多个进程持有或者正在等待一个可锁对象上的锁,同一个可锁对象可能出现很多次。但是,一个当前没有被锁的对象根本不会出现。

有多种不同类型的可锁对象:整个关系(如表)、关系的单个页、关系的单个元组、事务ID(包括虚拟和永久ID)和普通数据库对象(由类OID和对象OID标识,和sys_descriptionsys_depend中的相同方式)。扩展一个关系的权力也被表示为一个独立的可锁对象。“咨询”锁可以具有用户定义的意义。

表 2.9.1 sys_locks列

名称

类型

引用

描述

locktype

text

可锁对象的类型: relationextendpagetupletransactionidvirtualxidobjectuserlockadvisory

database

oid

sys_database.oid

锁目标存在的数据库的OID,如果目标是一个共享对象则为0 ,如果目标是一个事务ID则为空

relation

oid

sys_class.oid

作为锁目标的关系的 OID,如果目标不是一个关系或者只是关系的一部分则此列为空

page

integer

作为锁目标的页在关系中的页号,如果目标不是一个关系页或元组则此列为空

tuple

smallint

作为锁目标的元组在页中的元组号,如果目标不是一个元组则此列为空

virtualxid

text

作为锁目标的事务虚拟ID,如果目标不是一个虚拟事务ID则此列为空

transactionid

xid

作为锁目标的事务ID,如果目标不是一个事务 ID则此列为空ID

classid

oid

sys_class.oid

包含锁目标的系统目录的OID ,如果目标不是一个普通数据库对象则此列为空

objid

oid

任意OID列

锁目标在它的系统目录中的 OID,如果目标不是一个普通数据库对象则为空

objsubid

smallint

锁的目标列号( classidobjid 指表本身),如果目标是某种其他普通数据库对象则此列为0 ,如果目标不是一个普通数据库对象则此列为空

virtualtransaction

text

保持这个锁或者正在等待这个锁的事务的虚拟ID

pid

integer

保持这个锁或者正在等待这个锁的服务器进程的P ID,如果此锁被一个预备事务所持有则此列为空

mode

text

此进程已持有或者希望持有的锁模式

granted

boolean

如果锁已授予则为真,如果锁被等待则为假

fastpath

boolean

如果锁通过快速路径获得则为真,通过主锁表获得则为假

一个行的granted为真表示一个被指定进程持有的锁。为假表示该进程当前正在等待获取这个锁,这意味着至少一个其他进程正持有或等待同一个可锁对象上的一个冲突锁。该等待进程将一直休眠直到其他锁被释放(或者一个死锁状态被检测到)。单个进程在同一时间只能等待最多一个锁。

贯穿一个事务的运行,一个服务器进程在其生存周期内都持有一个在其虚拟事务ID上的排他锁。如果一个永久ID被分配给事务(通常发生在事务改变数据库状态时),它也会持有一个在其永久事务ID上的排他锁直到它结束。当一个事务发现它需要等待另一个事务,它也会尝试获取其他事务ID上的共享锁(不管是虚拟还是永久ID,视情况而定)。这只有当其他进程终止并释放其锁后才会成功。

尽管元组是一种可锁对象,关于行级锁的信息被存储在磁盘而不是内存中,因此行级锁通常不在这个视图中出现。如果一个进程正在等待一个行级锁,它通常在这个视图中出现,并且表示形式为正在等待已持有该行级锁的永久事务ID上的锁。

咨询锁可以在由一个单一bigint值或两个整形值构成的键上获取。一个bigint键被显示为其高位部分在classid列中,低位部分在objid列中,并且objsubid等于1。原来的bigint值可以使用表达式(classid::bigint << 32) | objid::bigint重组。整形键被显示为第一个键在classid列中,第二个键在objid列中,并且objsubid等于2。键的实际意义由用户决定。咨询锁是每一个数据库的本地锁,所以database列对于一个咨询锁没有意义。

sys_locks提供了一个对于整个数据集簇中所有锁的全局视图,而不仅仅是与当前数据库相关的锁。尽管它的relation列可以被连接到sys_class.oid来标识被锁关系,但这种方法只有在关系属于当前数据库(database列是当前数据库OID或者0的锁对应的关系)的情况下才会得到正确的结果。

pid列可以被连接到sys_stat_activity视图的pid列来得到持有或等待持有每一个锁的会话的信息。例如

SELECT * FROM sys_locks pl LEFT JOIN sys_stat_activity psa
    ON pl.pid = psa.pid;

另外,如果正在使用预备事务,virtualtransaction列可以被连接到 sys_prepared_xacts 视图的transaction列来得到持有该锁的预备事务的信息(一个预备事务不可能正在等待一个锁,但它在运行中会一直持有已获得的锁)。

例如:

SELECT * FROM sys_locks pl LEFT JOIN sys_prepared_xacts ppx
    ON pl.virtualtransaction = '-1/' || ppx.transaction;

虽然通过自连接sys_locks可以获得哪些进程阻塞了其他哪些进程的信息,但是很难得到其中的细节。这样一个查询隐藏了关于哪些锁模式与其他哪些锁模式冲突的知识。更糟糕的是,sys_locks视图无法给出所等待队列中进程的等待顺序,也无法显示哪些进程是代表其他客户端会话运行的并行工作者。更好的方法是使用sys_blocking_pids()函数来标识一个等待进程是被哪些进程阻塞的。

sys_locks视图显示来自于普通锁管理器和谓词锁管理器的数据,它们是独立的系统。此外,普通锁管理器把它的锁分为普通锁和快速路径锁。这些数据并不被保证是完全一致的。当视图被查询时,快速路径锁上的数据(fastpath = true)会被一次性从每一个后端收集起来,且并不冻结整个锁管理器的状态。因此有可能某些锁在上述信息被收集的过程中被获得或者释放。注意,不管怎样这些锁是已知不会和任何当前正在发生的锁冲突。在所有后端已经查询了快速路径锁后,普通锁管理器的剩余部分被作为一个单元锁住,并且所有剩余锁的一个一致快照被作为一个原子动作收集。在解锁普通锁管理器后,谓词锁管理器也被类似地锁住并且所有谓词锁被作为一个原子动作收集。因此,在快速路径锁这种特殊情况下,每一个锁管理器会传递一个一致的结果组。但由于我们并不会同时锁上两个锁管理器,在我们询问完普通锁管理器后或者询问谓词锁管理器之前,锁可以被获得或者释放。

如果对此视图频繁地访问,对普通或者谓词锁管理器加锁可能会对数据库性能产生一定影响。虽然这些锁只会在最少的时间内被保持(足以从锁管理器获得数据),但这无法完全消除可能产生的性能影响。

2.10. sys_matviews

视图sys_matviews提供了关于数据库中每一个物化视图的信息。

表 2.10.1 sys_matviews列

名称

类型

引用

描述

schemaname

name

sys_namespace.nspname

包含物化视图的模式的名字

matviewname

name

sys_class.relname

物化视图的名字

matviewowner

name

sys_authid.rolname

物化视图拥有者的名字

tablespace

name

sys_tablespace.spcname

包含物化视图的表空间名(如使用数据库默认表空间则为空)

hasindexes

boolean

如果物化视图有(或者最近有过)任何索引,则此列为真

ispopulated

boolean

如果物化视图当前已被填充,则此列为真

definition

text

物化视图的定义(一个重构的SELECT查询)

2.11. sys_policies

视图sys_policies提供了有关数据库中行级 安全性策略的信息。

表 2.11.1 sys_policies列

名称

类型

引用

描述

schemaname

name

sys_namespace.nspname

包含策略所在表的模式的名称

tablename

name

sys_class.relname

策略所在表的名称

policyname

name

sys_policy.polname

策略名称

polpermissive

text

策略是宽容性的还是限制性的?

roles

name[]

这个策略适用的角色

cmd

text

这个策略适用的命令类型

qual

text

作为这个策略适用的查询的安全屏障条件增加的表达式

with_check

text

作为尝试向该表增加行的查询的 WITH CHECK 条件增加的表达式

2.12. sys_prepared_statements

sys_prepared_statements视图显示在当前会话中可用的所有预备语句。关于预备语句详见 PREPARE

sys_prepared_statements为每一个预备语句包含一行。当一个新的预备语句被创建时在此视图中会增加一行,反之当一个预备语句被释放时在此视图中会删除一行(例如,通过 DEALLOCATE 命令)。

表 2.12.1 sys_prepared_statements列

名字

类型

描述

name

text

预备语句的标识符

statement

text

客户端提交用于创建此预备语句的查询语句。对于通过SQL创建的预备语句,这里是由客户端提交的PREPARE语句。对于通过前端 /后端协议创建的预备语句,这里是预备语句本身的文本。

prepare_time

timestamptz

预备语句被创建的时间

parameter_types

regtype[]

预备语句期望的参数类型,以一个regtype数组的形式。这个数组中一个元素所对应的 OID可通过将regtype值转换为oid获得。

from_sql

boolean

如果预备语句通过SQL命令PREPARE 创建,则为true;如果预备语句通过前端/后端协议创建,则为false

sys_prepared_statements视图为只读。

2.13. sys_prepared_xacts

视图sys_prepared_xacts显示关于两阶段提交(详见 PREPARE TRANSACTION 的当前准备好事务的信息。

sys_prepared_xacts为每一个预备事务包含一行。当事务被提交或回滚时,相应的项将被移除。

表 2.13.1 sys_prepared_xacts列

名称

类型

引用

描述

transaction

xid

预备事务的数字事务标识符

gid

text

分配给事务的全局标识符

prepared

timestamp with time zone

此事务为提交准备好的时间

owner

name

sys_authid.rolname

执行此事务的用户名

database

name

sys_database.datname

执行此事务所在数据库的名字

sys_prepared_xacts视图被访问时,内部事务管理器数据结构被暂时地锁住,并为视图的显示产生一个副本。这确保了视图中是一组一致的结果,并且不会阻塞普通操作。不管怎样,当此视图被频繁访问时,会对数据库性能有所影响。

2.14. sys_publication_tables

视图sys_publication_tables提供publication与其所包含的表之间的映射信息。和底层的目录sys_publication_rel不同,这个视图展开了定义为FOR ALL TABLES的publication,这样对这类publication来说,每一个合格的表都有一行。

表 2.14.1 sys_publication_tables列

名称

类型

引用

描述

pubname

name

sys_publication.pubname

publication名称

schemaname

name

sys_namespace.nspname

包含表的方案名称

tablename

name

sys_class.relname

表名

2.15. sys_replication_origin_status

sys_replication_origin_status视图包含有关一个特定源已经重放了多少的信息。

表 2.15.1 sys_replication_origin_status列

名称

类型

引用

描述

local_id

oid

sys_replication_origin.roident

内部的节点标识符

external_id

text

sys_replication_origin.roname

外部的节点标识符

remote_lsn

sys_lsn

源节点的 LSN,到这个位置的数据都已经被复制。

local_lsn

sys_lsn

这个节点的 LSN,remote_lsn已经被复制到这里。使用异步提交时,在将数据持久化到磁盘前用它来刷入提交记录。

2.16. sys_replication_slots

sys_replication_slots视图提供了当前存在于数据库集簇上的所有复制槽的列表,其中也包括复制槽的当前状态。

表 2.16.1 sys_replication_slots列

名称

类型

引用

描述

slot_name

name

一个唯一的、集簇范围内的复制槽标识符

plugin

name

包含这个逻辑槽正在使用的输出插件的共享对象基础名称,这个列对于物理槽为空值。

slot_type

text

槽类型 - physical(物理)或者logical(逻辑)

datoid

oid

sys_database.oid

与这个槽相关的数据库的OID,或者为空值。只有逻辑槽具有相关的数据库。

database

text

sys_database.datname

与这个槽相关的数据库的名称,或者为空值。只有逻辑槽具有相关的数据库。

temporary

boolean

如果这是一个临时复制槽则为真。临时槽不会被保存在磁盘上并且会在出错或会话结束时自动被删除掉。

active

boolean

如果这个槽当前正在被使用则为真

active_pid

integer

如果槽当前正在被使用,则记录使用这个槽的会话的进程 ID。如果槽没有被使用则为 NULL

xmin

xid

这个槽要需要数据库保留的最旧事务。VACUUM不能移除被其后续事务删除的元组。

1catalog_xmin`

xid

这个槽要需要数据库保留的影响系统目录的最旧事务。VACUUM不能移除被其后续事务删除的目录元组。

restart_lsn

sys_lsn

可能仍被这个槽的消费者要求的最旧 WAL地址(LSN),并且因此不会在检查点期间自动被移除。如果这个槽的 LSN从未被保留过,则为 NULL

confirmed_flush_lsn

sys_lsn

代表逻辑槽的消费者已经确认接收数据到什么位置的地址(LSN )。比这个地址更旧的数据已经不再可用。对于物理槽这里是 NULL

2.17. sys_roles

视图sys_roles提供了关于数据库角色的信息。这是 sys_authid 的一个公共可读视图,它隐去了口令域。

此视图显示了低层表的OID列,因为需要它来和其他目录做连接。

表 2.17.1 sys_roles列

名称

类型

引用

描述

rolname

name

角色名

rolsuper

bool

角色是否具有超级用户权限?

rolinherit

bool

如果此角色是另一个角色的成员,角色是否能自动继承另一个角色的权限?

rolcreaterole

bool

角色能否创建更多角色?

rolcreatedb

bool

角色能否创建数据库?

rolcanlogin

bool

角色是否能登录?即此角色能否被作为初始会话授权标识符?

rolreplication

bool

角色是一个复制角色。复制角色可以开启复制连接并且创建和删除复制槽。

rolconnlimit

int4

对于一个可登录的角色,这里设置角色可以发起的最大并发连接数。 -1表示无限制。

rolpassword

text

不是口令(看起来是********

rolvaliduntil

timestamptz

口令失效时间(只用于口令认证),如果永不失效则为空

rolbypassrls

bool

绕过每一条行级安全性策略的角色

rolconfig

text[]

运行时配置变量的角色特定默认值

oid

oid

sys_authid.oid

角色的ID

2.18. sys_rules

视图sys_rules提供对查询重写规则的信息访问。

表 2.18.1 sys_rules列

名称

类型

引用

描述

schemaname

name

sys_namespace.nspname

包含表的模式名

tablename

name

sys_class.relname

规则适用的表名

rulename

name

sys_rewrite.rulename

规则名

definition

text

规则定义(创建命令的重构)

sys_rules视图排除了视图和物化视图的ON SELECT规则,它们可以在sys_viewssys_matviews中找到。

2.19. sys_seclabels

视图sys_seclabels提供对安全标签的信息访问。它是 sys_seclabel 目录的一个便于查询的版本。

表 2.19.1 sys_seclabels列

名称

类型

引用

描述

objoid

oid

any OID column

安全标签所属对象的OID

classoid

oid

sys_class.oid

对象出现的系统目录的OID

objsubid

int4

对于一个表列上的安全标签,这里是列号(objoidclassoid指表本身)。对于所有其他对象类型,此列为0。

objtype

text

此标签应用的对象类型,以文本方式。

objnamespace

oid

sys_namespace.oid

如果适用,为此对象的名字空间的 OID;否则为空。

objname

text

此标签应用的对象名,以文本形式。

provider

text

sys_seclabel.provider

与此标签相关的标签提供者。

label

text

sys_seclabel.label

应用于此对象的安全标签。

2.20. sys_sequences

视图sys_sequences提供对数据库中每个序列的信息的访问。

表 2.20.1 sys_sequences列

名称

类型

引用

描述

schemaname

name

sys_namespace.nspname

包含序列的方案名

sequencename

name

sys_class.relname

序列的名称

sequenceowner

name

sys_authid.rolname

序列的拥有者的名称

data_type

regtype

sys_type.oid

序列的数据类型

start_value

bigint

序列的起始值

min_value

bigint

序列的最小值

max_value

bigint

序列的最大值

increment_by

bigint

序列的增量值

cycle

boolean

序列是否循环

cache_size

bigint

序列的缓冲尺寸

last_value

bigint

最后一个被写入到磁盘的序列值。如果使用了缓冲,这个值可能比从序列中取出的最后一个值大。如果还没有从该序列读取过,则为空。此外,如果当前用户没有该序列上的USAGESELECT特权,则这个值为空。

2.21. sys_settings

视图sys_settings提供了对服务器上运行时参数的访问。它本质上是 SHOWSET 命令的可替换接口。它还提供了SHOW不能提供的关于每一个参数的一些现实,例如最大值和最小值。

表 2.21.1 sys_settings列

名字

类型

描述

name

text

运行时配置参数名

setting

text

参数的当前值

unit

text

参数的隐式单元

category

text

参数的逻辑组

short_desc

text

参数的简短描述

extra_desc

text

附加的参数的详细描述

context

text

要求设置此参数值的上下文

vartype

text

参数类型(boolenumintegerrealstring

source

text

当前参数值的来源

min_val

text

参数的最小允许值(对非数字值为空)

max_val

text

参数的最大允许值(对非数字值为空)

enumvals

text[]

一个枚举参数的允许值(对非数字值为空)

boot_val

text

如果参数没有被别的其他设置,此列为在服务器启动时设定的参数值

reset_val

text

在当前会话中, RESET将会设置的参数值

sourcefile

text

当前值被设置的配置文件(空值表示从非配置文件的其他来源设置,由不是超级用户也不是sys_read_all_settings成员的用户检查时也为空值),在配置文件中使用include指令时有用

sourceline

integer

当前值被设置的配置文件中的行号(空值表示从非配置文件的其他来源设置,由不是超级用户也不是sys_read_all_settings 成员的用户检查时也为空值)。

pending_restart

boolean

如果配置文件中修改了该值但需要重启,则为true,否则为false

对于context有多种可能的取值。为了降低改变设置的难度,它们是:

internal

这些设置不能被直接修改,它们反映了内部决定的值。某些可能在使用不同配置选项重建系统时或者改变initdb的选项时可以调整。

kingbase

这些设置只能在服务器启动时应用,因此任何修改都需要重启服务器。这些设置的值通常都存储在kingbase.conf文件中,或者在启动服务器时通过命令行传递。当然,具有更低context类型的设置也可以在服务器启动时间被设置。

sighup

对于这些设置的修改可以在kingbase.conf中完成并且不需要重启服务器。发送一个SIGHUP信号给kingbase会导致它重新读取kingbase.conf并应用修改。Kingbase将会把SIGHUP信号传递给它的孩子进程,这样它们也会获得新的值。

superuser-backend

对于这些设置的更改可以在kingbase.conf中进行而无需重启服务器。也可以在连接请求包(例如通过libkci 的KINGBASE_OPTIONS环境变量)中为一个特定的会话设定它们,但是只有在连接用户是超级用户时才能这样做。如果,在会话启动后这些设置就不会改变。如果你在kingbase.conf改变了它们, 向 kingbase 发送一个SIGHUP信号让 kingbase 重新读取kingbase.conf。新的值将只会影响后续启动的会话。

backend

对于这些设置的修改可以在kingbase.conf中完成并且不需要重启服务器。它们也可以在一个连接请求包(例如,通过libkci的KINGBASE_OPTIONS环境变量)中为一个特定会话设置,任何用户都可以为这个会话做这种修改。然而,这些设置在会话启动后永不变化。如果你在kingbase.conf中修改它们,可以向kingbase发送一个SIGHUP信号让它重读kingbase.conf。新值只会影响后续启动的会话。

superuser

这些设置可以从kingbase.conf设置,或者在会话中用SET命令设置。仅当没有通过SET设置会话本地值时,kingbase.conf中的改变才会影响现有的会话。

user

这些设置可以从kingbase.conf设置,或者在会话中用SET命令设置。任何用户都被允许修改它们的会话本地值。仅当没有通过SET设置会话本地值时,kingbase.conf中的改变才会影响现有的会话。

更多关于修改这些参数的方法的信息请见 设置参数

sys_settings视图不能被插入或者从中删除,但是它可以被更新。在sys_settings的一行上的一个UPDATE等价于在该参数上执行一个 SET 命令。修改将只会影响当前会话使用的值。如果一个UPDATE在一个后来中断的事务中被发出,UPDATE命令的效果也会随着事务的回滚而消失。一旦所在的事务被提交,效果将一直保持到会话结束,除非有其他UPDATESET重新修改它。

2.22. sys_shadow

视图sys_shadow的存在是为了向后兼容:它模拟了在KingbaseESV7版本之前的一个系统目录。它显示 sys_authid 中所有被标记为rolcanlogin的角色的属性。

由于这个表包含口令,所以不能是公众可读的,这也是采用sys_shadow这个名字的原因。 而 sys_usersys_shadow上的一个公共可读视图,它屏蔽了口令域。

表 2.22.1 sys_shadow列

名称

类型

引用

描述

usename

name

sys_authid.rolname

用户名

usesysid

oid

sys_authid.oid

用户的ID

usecreatedb

bool

用户能否创建数据库

usesuper

bool

用户是否为一个超级用户

userepl

bool

用户能否开启流复制并将系统设置或者取消备份模式。

usebypassrls

bool

用户能否绕过所有的行级安全性策略

passwd

text

口令(可能被加密),如果没有则为空。关于加密口令如何存储请参见 sys_authid

valuntil

timestamptz

口令过期时间(仅用于口令认证)

useconfig

text[]

运行时配置变量的会话默认值

2.23. sys_stats

视图sys_stats提供对存储在 sys_statistic 目录中信息的访问。此视图能访问sys_statistic行是有限制的,可访问行所对应的表必须是用户有读权限的。因此让所有用户都可以读此视图是安全的。

sys_stats也被设计为能以更适合阅读的格式显示底层目录的信息— 但代价是只要为sys_statistic定义了新的槽类型,就必须要扩展此视图的模式。

表 2.23.1 sys_stats列

名称

类型

引用

描述

schemaname

name

sys_namespace.nspname

包含表的模式名

tablename

name

sys_class.relname

表名

attname

name

sys_attribute.attname

被此行描述的列名

inherited

bool

如果为真,表示此行包括继承子列,不仅仅是指定表中的值

null_frac

real

列项中为空的比例

avg_width

integer

列项的平均字节宽度

n_distinct

real

如果大于零,表示列中可区分值的估计个数。如果小于零,是可区分值个数除以行数的负值(当ANALYZE认为可区分值的数量会随着表增长而增加时采用负值的形式,而如果认为列具有固定数量的可选值时采用正值的形式)。例如,-1表示一个唯一列,即其中可区分值的个数等于行数。

most_common_vals

anyarray

列中最常用值的一个列表(如果没有任何一个值看起来比其他值更常用,此列为空)

most_common_freqs

real[]

最常用值的频率列表,即每一个常用值的出现次数除以总行数(如果 most_common_vals为空,则此列为空)

histogram_bounds

anyarray

将列值划分成大小接近的组的值列表。如果存在most_common_vals,其中的值会被直方图计算所忽略(如果列类型没有一个<操作符或者most_common_vals等于整个值集合,则此列为空)

correlation

real

物理行顺序和列值逻辑顺序之间的统计关联。其范围从-1到+1。当值接近-1或+1时,在列上的一个索引扫描被认为比值接近0时的代价更低,因为这种情况减少了对磁盘的随机访问(如果列数据类型不具有一个<操作符,则此列为空)

most_common_elems

anyarray

在列值中,最经常出现的非空元素列表(对标度类型为空)

most_common_elem_freqs

real[]

最常用元素值的频度列表,即含有至少一个给定值实例的行的分数。在每个元素的频度之后有二至三个附加值,它们是每个元素频度的最小和最大值,以及可选的空元素的频度(如果most_common_elems为空,则此列为空)

elem_count_histogram

real[]

在列值中可区分非空元素值计数的一个直方图,后面跟随可区分非空元素的平均数(对于标度类型为空)

在数组域中项的最大数目可以使用ALTER TABLE SET STATISTICS命令控制,或者设置 default_statistics_target 运行时参数从全局上进行控制

2.24. sys_stats_ext

sys_stats_ext视图提供对存储在 sys_statistic_extsys_statistic_ext_data 目录的信息的访问。该视图只允许访问sys_statistic_extsys_statistic_ext_data中用户有权读取的表,因此允许公共访问读取这个视图是安全的。

sys_stats_ext也被设计成以比底层目录更可读的格式来表示信息--代价是每当向sys_statistic_ext添加新类型的扩展统计信息时,必须对其模式进行扩展。

表 2.24.1 sys_stats_ext列

名称

类型

引用

描述

schemaname

name

sys_namespace .nspname

包含表的模式名

tablename

name

sys_class.relname

表名

statistics _schemaname

name

sys_namespace .nspname

包含扩展统计的模式名

statistics_name

name

sys_statistic_ext .stxname

扩展统计名称

statistics_owner

oid

sys_authid.oid

扩展统计的所有者

attnames

name[]

sys_attribute .attname

定义扩展统计信息的列的名称

kinds

text[]

为记录启用的扩展统计信息类型

n_distinct

sys_ndistinct

对于列值的组合,有 n个不同的计数。如果远大于零,不同值的估计数目在组合中。如果小于0,则用不同值的负数除以根据行数。(使用否定形式,当ANALYZE认为不同值的数量可能会随着表的增长而增加; 当列似乎有固定数目的可能值时,使用正数形式)。例如,-1表示列的唯一组合,其中不同组合的数量与行数相同。

dependencies

sys_dependencies

函数相关统计数据

most_common_vals

anyarray

列中最常见的值组合的列表。(如果没有比其他任何组合更常见的组合,则为Null。)

most_common_val _nulls

anyarray

空标志最常见值组合的列表。(当 most_common_vals 时为Null。)

most_common _freqs

real[]

频率最常见组合的列表,即,每个的出现次数除以总行数。(当 most_common_vals 时为Null。)

most_common_base _freqs

real[]

基频率最常见组合的列表,即,per-value 频率的乘积。(当 most_common_vals 时为Null。)

可以使用ALTER TABLE SET STATISTICS指令,或者通过全局地设置 default_statistics_target 运行时参数,来按列控制数组字段中的最大条目数。

2.25. sys_tables

视图sys_tables提供了对数据库中每个表的有用信息的访问。

表 2.25.1 sys_tables列

名字

类型

引用

描述

schemaname

name

sys_namespace.nspname

包含表的模式名

tablename

name

sys_class.relname

表名

tableowner

name

sys_authid.rolname

表拥有者的名字

tablespace

name

sys_tablespace.spcname

包含表的表空间的名字(如果使用数据库的默认表空间,此列为空)

hasindexes

boolean

sys_class.relhasindex

如果表有(或最近有过)任何索引,此列为真

hasrules

boolean

sys_class.relhasrules

如果表有(或曾经有过)规则,此列为真

hastriggers

boolean

sys_class.relhastriggers

如果表有(或者曾经有过)触发器,此列为真

rowsecurity

boolean

sys_class.relrowsecurity

如果表上启用了行安全性则为真

2.26. sys_timezone_abbrevs

视图sys_timezone_abbrevs提供了对当前被时间输入例程识别的时区缩写的列表。当 timezone_abbreviations 运行时参数被修改,此视图的内容会发生变化。

表 2.26.1 sys_timezone_abbrevs列

名字

类型

描述

abbrev

text

时区缩写

utc_offset

interval

相对于UTC的偏移(正值表示格林威治东部)

is_dst

boolean

如果这是一个夏令时缩写,则为真

虽然大部分时区缩写表示从 UTC 开始的固定偏移,但是有一些在历史上有值的变化。在这种情况下,这个视图表示它们现在的含义。

2.27. sys_timezone_names

视图sys_timezone_names提供了一个被SET TIMEZONE识别的时区名字的列表,以及它们的相关缩写、UTC偏移和夏令时状态(从技术上来说,KingbaseES不使用UTC是因为闰秒没有被处理)。和 sys_timezone_abbrevs 中展示的缩写不同,这里很多名字隐含了一组夏令时转换日期规则。因此,相关信息在本地DST边界间变化。所显示的信息基于CURRENT_TIMESTAMP的当前值计算得来。

表 2.27.1 sys_timezone_names列

名字

类型

描述

name

text

时区名

abbrev

text

时区缩写

utc_offset

interval

相对于UTC的偏移(正值表示格林威治东部)

is_dst

boolean

如果当前保持为夏令时则为真

2.28. sys_user

视图sys_user提供关于数据库用户的信息。这是 sys_shadow 的一个公共可读的视图,它消除了口令域。

表 2.28.1 sys_user列

名字

类型

描述

usename

name

用户名

usesysid

oid

用户的ID

usecreatedb

bool

用户是否能创建数据库

usesuper

bool

用户是否为超级用户

userepl

bool

用户能否开启流复制以及将系统转入/转出备份模式。

usebypassrls

bool

用户能否绕过所有的行级安全性策略

passwd

text

不是口令(总是显示为********

valuntil

timestamptz

口令过期时间(只用于口令认证)

useconfig

text[]

运行时配置变量的会话默认值

2.29. sys_user_mappings

视图sys_user_mappings提供有关用户映射的信息。这是 sys_user_mapping 的一个公共可读视图,它对无权使用的用户省去了选项域。

表 2.29.1 sys_user_mappings列

名称

类型

引用

描述

umid

oid

sys_user_mapping.oid

用户映射的OID

srvid

oid

sys_foreign_server.oid

包含该映射的外部服务器的OID

srvname

name

sys_foreign_server.srvname

外部服务器名

umuser

oid

sys_authid.oid

将被映射的本地角色的 OID,如果用户映射是公共的则为0

usename

name

将被映射的本地用户名

umoptions

text[]

用户映射指定选项,以“keyword=value” 字符串的形式

为了保护存储为用户映射选项的口令信息,umoptions列将被读作空,除非满足下列情况之一:

  • 当前用户就是被映射的用户,并且拥有该服务器或者持有其上的USAGE特权

  • 当前用户是服务器的拥有者并且映射是用于PUBLIC

  • 当前用户是一个超级用户

2.30. sys_views

视图sys_views提供了数据库中每个视图的信息。

表 2.30.1 sys_views列

名称

类型

引用

描述

schemaname

name

sys_namespace.nspname

包含视图的模式名

viewname

name

sys_class.relname

视图名称

viewowner

name

sys_authid.rolname

视图拥有者的名字

definition

text

视图定义(一个重构的SELECT查询)

  • 23
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值