2. 系统视图¶
除系统目录外,KingbaseES提供了一些内建视图。一些系统视图为系统目录上一些常用查询提供了便利的访问。其他视图提供了对内部服务器状态的访问。
KingbaseES信息模式 提供了一组可供选择的视图,它和系统视图在功能上有所重叠。由于信息模式是SQL标准,而这里描述的视图是KingbaseES特有的,如果信息模式能提供你所需要的信息,通常最好使用它。
表 表 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 目录,它显示当前已安装的扩展。
名字 | 类型 | 描述 |
---|---|---|
|
| 扩展名 |
|
| 默认版本的名字,如果没有指定则为 |
|
| 当前已安装的扩展版本,如果没有安装则为 |
|
| 来自于扩展的控制文件的注释字符串 |
sys_available_extensions
视图是只读的。
2.2. sys_available_extension_versions¶
sys_available_extension_versions
视图列出了可用于安装的指定扩展版本。参见 sys_extension 目录,它显示当前已安装的扩展。
名字 | 类型 | 描述 |
---|---|---|
|
| 扩展名 |
|
| 版本名 |
|
| 如果此版本的扩展当前已安装则为真 |
|
| 如果只有超级用户被允许安装此扩展则为真 |
|
| 如果扩展能被重定位到另一个模式则为真 |
|
| 此扩展必须被安装到的模式名,如果此扩展是部分或者全部可以重定位的,此列为 |
|
| 先决条件扩展的名字,如果没有则为 |
|
| 来自于扩展的控制文件的注释字符串 |
sys_available_extension_versions
视图是只读的。
2.3. sys_config¶
视图sys_config
描述了当前安装的KingbaseES版本中的编译时配置参数。它存在的本意是用于那些要和KingbaseES交互的软件包,让它们能找到所需要的头文件和库。它提供了和 sys_config KingbaseES客户端应用相同的基本信息。
默认情况下,sys_config
视图只能由超级用户读取。
名称 | 类型 | 描述 |
---|---|---|
|
| 参数名 |
|
| 参数值 |
2.4. sys_cursors¶
sys_cursors
视图列出了当前可用的游标。游标可以以几种方式定义:
-
通过SQL中的 DECLARE 语句
-
通过前端/后端协议中的绑定消息
-
通过服务器编程接口(SPI),如 接口函数 中所描述的
sys_cursors
视图显示由任何这些方式创建的游标。视图只存在于定义它们的事务期间,除非声明了WITH HOLD
。因此非保持游标只在它们的创建事务结束前存在于这个视图中。
Note
视图用于在内部实现KingbaseES的某些部件,例如过程语言。因此,sys_cursors
视图可能包括那些不是由用户显式创建的游标。
名字 | 类型 | 描述 |
---|---|---|
|
| 游标名 |
|
| 提交用于定义此游标的查询语句 |
|
| 如果游标是可保持的(即,它可以在其定义事务提交后被访问)则为 |
|
| 如果游标被声明为 |
|
| 如果游标是可滚动的(即,允许以一种非顺序的方式检索行)则为 |
|
| 游标被声明的时间 |
sys_cursors
视图是只读的。
2.5. sys_file_settings¶
视图sys_file_settings
提供了服务器配置文件内容的概要。这个视图中的每一行表示配置文件中出现的一个 “name = value”项,还带有注解指示该值是否被成功地应用。在配置文件有问题时,有可能出现额外的行,它们没有相关的 “name = value”项,一个例子是配置文件中有语法错误。
这个视图有助于检查在配置文件中打算做的修改是否能工作,或者用来诊断之前的失败。注意这个视图报告的是配置文件的当前内容,而不是服务器最后应用的值(这些值通常查看 sys_settings 视图就够了)。
默认情况下,sys_file_settings
视图只有超级用户可读。
名称 | 类型 | 描述 |
---|---|---|
|
| 配置文件的完整路径名 |
|
| 该项在配置文件中出现的行号 |
|
| 项被处理的顺序(1..``n``) |
|
| 配置参数名 |
|
| 被赋予给参数的值 |
|
| 为真表示值已被成功应用 |
|
| 如果非空,表示一个错误消息,它说明为什么这个项不能被应用 |
如果配置文件包含语法错误或者非法参数名,服务器将不会尝试从其中应用任何设置,并且因此所有的applied
域都为假。在这种情况下,将会有一个或者多个行的error
域为非空,它们说明了为什么出问题。否则,将尽可能应用每个设置。如果一个设置不能被应用(例如非法值或者该设置不能在服务器开始后改变),会有一个合适的消息存储在它的error
域中。一个项的applied
域为假的另一种情况是它被后面一个具有相同参数名的项所覆盖,这种情况不会被认为是一种错误,因此在error
域中不会有 错误消息。
关于更改运行时参数的各种方法请见 设置参数 。
2.6. sys_group¶
视图sys_group
为向后兼容而存在:它模拟了存在于KingbaseES V7之前版本中的一个目录。它显式所有角色的名称和未被标记rolcanlogin
的成员,它是被用做组的角色集合的近似。
名称 | 类型 | 引用 | 描述 |
---|---|---|---|
|
|
| 组名 |
|
|
| 组ID |
|
|
| 包含此组中角色ID的一个数组 |
2.7. sys_hba_file_rules¶
视图sys_hba_file_rules
提供客户端认证配置文件sys_hba.conf
内容的摘要。该文件中每个非空、非注释行都会在这个视图中出现一行,行中还有标记表示该规则是否被成功地应用。
这个视图可用来检查认证配置文件中按计划的更改是否起作用,或者诊断之前的失败。注意这个视图报告的是该文件的当前内容,而不是服务器最后一次载入的内容。
默认情况下,只有超级用户可以读取sys_hba_file_rules
视图。
名称 | 列 | 描述 |
---|---|---|
|
| 这条规则在 |
|
| 连接类型 |
|
| 这条规则应用的数据库名列表 |
|
| 这条规则应用的用户及组名列表 |
|
| 主机名或IP地址,或者 |
|
| IP地址掩码,如果不适用则为空 |
|
| 认证方法 |
|
| 为认证方法指定的选项(如果有) |
|
| 如果非空,则是一个错误消息,它表示为什么这一行无法被处理 |
通常,反映一个不正确项的行只有line_number
和error
域中有值。
更多有关客户端认证配置的信息请参考 客户端认证 。
2.8. sys_indexes¶
视图sys_indexes
提供对于数据库中每一个索引信息的访问。
名称 | 类型 | 引用 | 描述 |
---|---|---|---|
|
|
| 包含表和索引的模式名 |
|
|
| 此索引的基表的名字 |
|
|
| 索引名 |
|
|
| 包含索引的表空间名(如果是数据库的默认值则为空) |
|
| 索引定义( |
2.9. sys_locks¶
视图sys_locks
提供了数据库服务器上活动进程中保持的锁的信息。
sys_locks
中对每一个活动可锁对象、请求锁模式和相关进程的组合都有一行。因此,如果多个进程持有或者正在等待一个可锁对象上的锁,同一个可锁对象可能出现很多次。但是,一个当前没有被锁的对象根本不会出现。
有多种不同类型的可锁对象:整个关系(如表)、关系的单个页、关系的单个元组、事务ID(包括虚拟和永久ID)和普通数据库对象(由类OID和对象OID标识,和sys_description
或sys_depend
中的相同方式)。扩展一个关系的权力也被表示为一个独立的可锁对象。“咨询”锁可以具有用户定义的意义。
名称 | 类型 | 引用 | 描述 |
---|---|---|---|
|
| 可锁对象的类型: | |
|
|
| 锁目标存在的数据库的OID,如果目标是一个共享对象则为0 ,如果目标是一个事务ID则为空 |
|
|
| 作为锁目标的关系的 OID,如果目标不是一个关系或者只是关系的一部分则此列为空 |
|
| 作为锁目标的页在关系中的页号,如果目标不是一个关系页或元组则此列为空 | |
|
| 作为锁目标的元组在页中的元组号,如果目标不是一个元组则此列为空 | |
|
| 作为锁目标的事务虚拟ID,如果目标不是一个虚拟事务ID则此列为空 | |
|
| 作为锁目标的事务ID,如果目标不是一个事务 ID则此列为空ID | |
|
|
| 包含锁目标的系统目录的OID ,如果目标不是一个普通数据库对象则此列为空 |
|
| 任意OID列 | 锁目标在它的系统目录中的 OID,如果目标不是一个普通数据库对象则为空 |
|
| 锁的目标列号( | |
|
| 保持这个锁或者正在等待这个锁的事务的虚拟ID | |
|
| 保持这个锁或者正在等待这个锁的服务器进程的P ID,如果此锁被一个预备事务所持有则此列为空 | |
|
| 此进程已持有或者希望持有的锁模式 | |
|
| 如果锁已授予则为真,如果锁被等待则为假 | |
|
| 如果锁通过快速路径获得则为真,通过主锁表获得则为假 |
一个行的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.11. sys_policies¶
视图sys_policies
提供了有关数据库中行级 安全性策略的信息。
名称 | 类型 | 引用 | 描述 |
---|---|---|---|
|
|
| 包含策略所在表的模式的名称 |
|
|
| 策略所在表的名称 |
|
|
| 策略名称 |
|
| 策略是宽容性的还是限制性的? | |
|
| 这个策略适用的角色 | |
|
| 这个策略适用的命令类型 | |
|
| 作为这个策略适用的查询的安全屏障条件增加的表达式 | |
|
| 作为尝试向该表增加行的查询的 WITH CHECK 条件增加的表达式 |
2.12. sys_prepared_statements¶
sys_prepared_statements
视图显示在当前会话中可用的所有预备语句。关于预备语句详见 PREPARE 。
sys_prepared_statements
为每一个预备语句包含一行。当一个新的预备语句被创建时在此视图中会增加一行,反之当一个预备语句被释放时在此视图中会删除一行(例如,通过 DEALLOCATE 命令)。
名字 | 类型 | 描述 |
---|---|---|
|
| 预备语句的标识符 |
|
| 客户端提交用于创建此预备语句的查询语句。对于通过SQL创建的预备语句,这里是由客户端提交的 |
|
| 预备语句被创建的时间 |
|
| 预备语句期望的参数类型,以一个 |
|
| 如果预备语句通过SQL命令 |
sys_prepared_statements
视图为只读。
2.13. sys_prepared_xacts¶
视图sys_prepared_xacts
显示关于两阶段提交(详见 PREPARE TRANSACTION 的当前准备好事务的信息。
sys_prepared_xacts
为每一个预备事务包含一行。当事务被提交或回滚时,相应的项将被移除。
名称 | 类型 | 引用 | 描述 |
---|---|---|---|
|
| 预备事务的数字事务标识符 | |
|
| 分配给事务的全局标识符 | |
|
| 此事务为提交准备好的时间 | |
|
|
| 执行此事务的用户名 |
|
|
| 执行此事务所在数据库的名字 |
当sys_prepared_xacts
视图被访问时,内部事务管理器数据结构被暂时地锁住,并为视图的显示产生一个副本。这确保了视图中是一组一致的结果,并且不会阻塞普通操作。不管怎样,当此视图被频繁访问时,会对数据库性能有所影响。
2.14. sys_publication_tables¶
视图sys_publication_tables
提供publication与其所包含的表之间的映射信息。和底层的目录sys_publication_rel
不同,这个视图展开了定义为FOR ALL TABLES
的publication,这样对这类publication来说,每一个合格的表都有一行。
名称 | 类型 | 引用 | 描述 |
---|---|---|---|
|
|
| publication名称 |
|
|
| 包含表的方案名称 |
|
|
| 表名 |
2.15. sys_replication_origin_status¶
sys_replication_origin_status
视图包含有关一个特定源已经重放了多少的信息。
名称 | 类型 | 引用 | 描述 |
---|---|---|---|
|
|
| 内部的节点标识符 |
|
|
| 外部的节点标识符 |
|
| 源节点的 LSN,到这个位置的数据都已经被复制。 | |
|
| 这个节点的 LSN, |
2.16. sys_replication_slots¶
sys_replication_slots
视图提供了当前存在于数据库集簇上的所有复制槽的列表,其中也包括复制槽的当前状态。
名称 | 类型 | 引用 | 描述 |
---|---|---|---|
|
| 一个唯一的、集簇范围内的复制槽标识符 | |
|
| 包含这个逻辑槽正在使用的输出插件的共享对象基础名称,这个列对于物理槽为空值。 | |
|
| 槽类型 - | |
|
|
| 与这个槽相关的数据库的OID,或者为空值。只有逻辑槽具有相关的数据库。 |
|
|
| 与这个槽相关的数据库的名称,或者为空值。只有逻辑槽具有相关的数据库。 |
|
| 如果这是一个临时复制槽则为真。临时槽不会被保存在磁盘上并且会在出错或会话结束时自动被删除掉。 | |
|
| 如果这个槽当前正在被使用则为真 | |
|
| 如果槽当前正在被使用,则记录使用这个槽的会话的进程 ID。如果槽没有被使用则为 | |
|
| 这个槽要需要数据库保留的最旧事务。 | |
1catalog_xmin` |
| 这个槽要需要数据库保留的影响系统目录的最旧事务。 | |
|
| 可能仍被这个槽的消费者要求的最旧 WAL地址( | |
|
| 代表逻辑槽的消费者已经确认接收数据到什么位置的地址( |
2.17. sys_roles¶
视图sys_roles
提供了关于数据库角色的信息。这是 sys_authid 的一个公共可读视图,它隐去了口令域。
此视图显示了低层表的OID列,因为需要它来和其他目录做连接。
名称 | 类型 | 引用 | 描述 |
---|---|---|---|
|
| 角色名 | |
|
| 角色是否具有超级用户权限? | |
|
| 如果此角色是另一个角色的成员,角色是否能自动继承另一个角色的权限? | |
|
| 角色能否创建更多角色? | |
|
| 角色能否创建数据库? | |
|
| 角色是否能登录?即此角色能否被作为初始会话授权标识符? | |
|
| 角色是一个复制角色。复制角色可以开启复制连接并且创建和删除复制槽。 | |
|
| 对于一个可登录的角色,这里设置角色可以发起的最大并发连接数。 -1表示无限制。 | |
|
| 不是口令(看起来是 | |
|
| 口令失效时间(只用于口令认证),如果永不失效则为空 | |
|
| 绕过每一条行级安全性策略的角色 | |
|
| 运行时配置变量的角色特定默认值 | |
|
|
| 角色的ID |
2.18. sys_rules¶
视图sys_rules
提供对查询重写规则的信息访问。
名称 | 类型 | 引用 | 描述 |
---|---|---|---|
|
|
| 包含表的模式名 |
|
|
| 规则适用的表名 |
|
|
| 规则名 |
|
| 规则定义(创建命令的重构) |
sys_rules
视图排除了视图和物化视图的ON SELECT
规则,它们可以在sys_views
和sys_matviews
中找到。
2.19. sys_seclabels¶
视图sys_seclabels
提供对安全标签的信息访问。它是 sys_seclabel 目录的一个便于查询的版本。
名称 | 类型 | 引用 | 描述 |
---|---|---|---|
|
| any OID column | 安全标签所属对象的OID |
|
|
| 对象出现的系统目录的OID |
|
| 对于一个表列上的安全标签,这里是列号( | |
|
| 此标签应用的对象类型,以文本方式。 | |
|
|
| 如果适用,为此对象的名字空间的 OID;否则为空。 |
|
| 此标签应用的对象名,以文本形式。 | |
|
|
| 与此标签相关的标签提供者。 |
|
|
| 应用于此对象的安全标签。 |
2.20. sys_sequences¶
视图sys_sequences
提供对数据库中每个序列的信息的访问。
名称 | 类型 | 引用 | 描述 |
---|---|---|---|
|
|
| 包含序列的方案名 |
|
|
| 序列的名称 |
|
|
| 序列的拥有者的名称 |
|
|
| 序列的数据类型 |
|
| 序列的起始值 | |
|
| 序列的最小值 | |
|
| 序列的最大值 | |
|
| 序列的增量值 | |
|
| 序列是否循环 | |
|
| 序列的缓冲尺寸 | |
|
| 最后一个被写入到磁盘的序列值。如果使用了缓冲,这个值可能比从序列中取出的最后一个值大。如果还没有从该序列读取过,则为空。此外,如果当前用户没有该序列上的 |
2.21. sys_settings¶
视图sys_settings
提供了对服务器上运行时参数的访问。它本质上是 SHOW 和 SET 命令的可替换接口。它还提供了SHOW
不能提供的关于每一个参数的一些现实,例如最大值和最小值。
名字 | 类型 | 描述 |
---|---|---|
|
| 运行时配置参数名 |
|
| 参数的当前值 |
|
| 参数的隐式单元 |
|
| 参数的逻辑组 |
|
| 参数的简短描述 |
|
| 附加的参数的详细描述 |
|
| 要求设置此参数值的上下文 |
|
| 参数类型( |
|
| 当前参数值的来源 |
|
| 参数的最小允许值(对非数字值为空) |
|
| 参数的最大允许值(对非数字值为空) |
|
| 一个枚举参数的允许值(对非数字值为空) |
|
| 如果参数没有被别的其他设置,此列为在服务器启动时设定的参数值 |
|
| 在当前会话中, |
|
| 当前值被设置的配置文件(空值表示从非配置文件的其他来源设置,由不是超级用户也不是 |
|
| 当前值被设置的配置文件中的行号(空值表示从非配置文件的其他来源设置,由不是超级用户也不是 |
|
| 如果配置文件中修改了该值但需要重启,则为 |
对于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
命令的效果也会随着事务的回滚而消失。一旦所在的事务被提交,效果将一直保持到会话结束,除非有其他UPDATE
或 SET
重新修改它。
2.22. sys_shadow¶
视图sys_shadow
的存在是为了向后兼容:它模拟了在KingbaseESV7版本之前的一个系统目录。它显示 sys_authid 中所有被标记为rolcanlogin
的角色的属性。
由于这个表包含口令,所以不能是公众可读的,这也是采用sys_shadow
这个名字的原因。 而 sys_user 是sys_shadow
上的一个公共可读视图,它屏蔽了口令域。
名称 | 类型 | 引用 | 描述 |
---|---|---|---|
|
|
| 用户名 |
|
|
| 用户的ID |
|
| 用户能否创建数据库 | |
|
| 用户是否为一个超级用户 | |
|
| 用户能否开启流复制并将系统设置或者取消备份模式。 | |
|
| 用户能否绕过所有的行级安全性策略 | |
|
| 口令(可能被加密),如果没有则为空。关于加密口令如何存储请参见 sys_authid | |
|
| 口令过期时间(仅用于口令认证) | |
|
| 运行时配置变量的会话默认值 |
2.23. sys_stats¶
视图sys_stats
提供对存储在 sys_statistic 目录中信息的访问。此视图能访问sys_statistic
行是有限制的,可访问行所对应的表必须是用户有读权限的。因此让所有用户都可以读此视图是安全的。
sys_stats
也被设计为能以更适合阅读的格式显示底层目录的信息— 但代价是只要为sys_statistic
定义了新的槽类型,就必须要扩展此视图的模式。
名称 | 类型 | 引用 | 描述 |
---|---|---|---|
|
|
| 包含表的模式名 |
|
|
| 表名 |
|
|
| 被此行描述的列名 |
|
| 如果为真,表示此行包括继承子列,不仅仅是指定表中的值 | |
|
| 列项中为空的比例 | |
|
| 列项的平均字节宽度 | |
|
| 如果大于零,表示列中可区分值的估计个数。如果小于零,是可区分值个数除以行数的负值(当 | |
|
| 列中最常用值的一个列表(如果没有任何一个值看起来比其他值更常用,此列为空) | |
|
| 最常用值的频率列表,即每一个常用值的出现次数除以总行数(如果 | |
|
| 将列值划分成大小接近的组的值列表。如果存在 | |
|
| 物理行顺序和列值逻辑顺序之间的统计关联。其范围从-1到+1。当值接近-1或+1时,在列上的一个索引扫描被认为比值接近0时的代价更低,因为这种情况减少了对磁盘的随机访问(如果列数据类型不具有一个 | |
|
| 在列值中,最经常出现的非空元素列表(对标度类型为空) | |
|
| 最常用元素值的频度列表,即含有至少一个给定值实例的行的分数。在每个元素的频度之后有二至三个附加值,它们是每个元素频度的最小和最大值,以及可选的空元素的频度(如果 | |
|
| 在列值中可区分非空元素值计数的一个直方图,后面跟随可区分非空元素的平均数(对于标度类型为空) |
在数组域中项的最大数目可以使用ALTER TABLE SET STATISTICS
命令控制,或者设置 default_statistics_target 运行时参数从全局上进行控制
2.24. sys_stats_ext¶
sys_stats_ext
视图提供对存储在 sys_statistic_ext 和 sys_statistic_ext_data 目录的信息的访问。该视图只允许访问sys_statistic_ext
和sys_statistic_ext_data
中用户有权读取的表,因此允许公共访问读取这个视图是安全的。
sys_stats_ext
也被设计成以比底层目录更可读的格式来表示信息--代价是每当向sys_statistic_ext
添加新类型的扩展统计信息时,必须对其模式进行扩展。
名称 | 类型 | 引用 | 描述 |
---|---|---|---|
|
|
| 包含表的模式名 |
|
|
| 表名 |
|
|
| 包含扩展统计的模式名 |
|
|
| 扩展统计名称 |
|
|
| 扩展统计的所有者 |
|
|
| 定义扩展统计信息的列的名称 |
|
| 为记录启用的扩展统计信息类型 | |
|
| 对于列值的组合,有 n个不同的计数。如果远大于零,不同值的估计数目在组合中。如果小于0,则用不同值的负数除以根据行数。(使用否定形式,当 | |
|
| 函数相关统计数据 | |
|
| 列中最常见的值组合的列表。(如果没有比其他任何组合更常见的组合,则为Null。) | |
|
| 空标志最常见值组合的列表。(当 | |
|
| 频率最常见组合的列表,即,每个的出现次数除以总行数。(当 | |
|
| 基频率最常见组合的列表,即,per-value 频率的乘积。(当 |
可以使用ALTER TABLE SET STATISTICS
指令,或者通过全局地设置 default_statistics_target 运行时参数,来按列控制数组字段中的最大条目数。
2.25. sys_tables¶
视图sys_tables
提供了对数据库中每个表的有用信息的访问。
名字 | 类型 | 引用 | 描述 |
---|---|---|---|
|
|
| 包含表的模式名 |
|
|
| 表名 |
|
|
| 表拥有者的名字 |
|
|
| 包含表的表空间的名字(如果使用数据库的默认表空间,此列为空) |
|
|
| 如果表有(或最近有过)任何索引,此列为真 |
|
|
| 如果表有(或曾经有过)规则,此列为真 |
|
|
| 如果表有(或者曾经有过)触发器,此列为真 |
|
|
| 如果表上启用了行安全性则为真 |
2.26. sys_timezone_abbrevs¶
视图sys_timezone_abbrevs
提供了对当前被时间输入例程识别的时区缩写的列表。当 timezone_abbreviations 运行时参数被修改,此视图的内容会发生变化。
名字 | 类型 | 描述 |
---|---|---|
|
| 时区缩写 |
|
| 相对于UTC的偏移(正值表示格林威治东部) |
|
| 如果这是一个夏令时缩写,则为真 |
虽然大部分时区缩写表示从 UTC 开始的固定偏移,但是有一些在历史上有值的变化。在这种情况下,这个视图表示它们现在的含义。
2.27. sys_timezone_names¶
视图sys_timezone_names
提供了一个被SET TIMEZONE
识别的时区名字的列表,以及它们的相关缩写、UTC偏移和夏令时状态(从技术上来说,KingbaseES不使用UTC是因为闰秒没有被处理)。和 sys_timezone_abbrevs 中展示的缩写不同,这里很多名字隐含了一组夏令时转换日期规则。因此,相关信息在本地DST边界间变化。所显示的信息基于CURRENT_TIMESTAMP
的当前值计算得来。
名字 | 类型 | 描述 |
---|---|---|
|
| 时区名 |
|
| 时区缩写 |
|
| 相对于UTC的偏移(正值表示格林威治东部) |
|
| 如果当前保持为夏令时则为真 |
2.28. sys_user¶
视图sys_user
提供关于数据库用户的信息。这是 sys_shadow 的一个公共可读的视图,它消除了口令域。
名字 | 类型 | 描述 |
---|---|---|
|
| 用户名 |
|
| 用户的ID |
|
| 用户是否能创建数据库 |
|
| 用户是否为超级用户 |
|
| 用户能否开启流复制以及将系统转入/转出备份模式。 |
|
| 用户能否绕过所有的行级安全性策略 |
|
| 不是口令(总是显示为 |
|
| 口令过期时间(只用于口令认证) |
|
| 运行时配置变量的会话默认值 |
2.29. sys_user_mappings¶
视图sys_user_mappings
提供有关用户映射的信息。这是 sys_user_mapping 的一个公共可读视图,它对无权使用的用户省去了选项域。
名称 | 类型 | 引用 | 描述 |
---|---|---|---|
|
|
| 用户映射的OID |
|
|
| 包含该映射的外部服务器的OID |
|
|
| 外部服务器名 |
|
|
| 将被映射的本地角色的 OID,如果用户映射是公共的则为0 |
|
| 将被映射的本地用户名 | |
|
| 用户映射指定选项,以“keyword=value” 字符串的形式 |
为了保护存储为用户映射选项的口令信息,umoptions
列将被读作空,除非满足下列情况之一:
-
当前用户就是被映射的用户,并且拥有该服务器或者持有其上的
USAGE
特权 -
当前用户是服务器的拥有者并且映射是用于
PUBLIC
-
当前用户是一个超级用户
2.30. sys_views¶
视图sys_views
提供了数据库中每个视图的信息。
名称 | 类型 | 引用 | 描述 |
---|---|---|---|
|
|
| 包含视图的模式名 |
|
|
| 视图名称 |
|
|
| 视图拥有者的名字 |
|
| 视图定义(一个重构的 |