KingbaseES数据库参考手册.pdf
KingbaseES 数据库参考手册 金仓数据库管理系统 KingbaseES 文档版本:V9(V009R001C001B0024) 发布日期:2023 年 10 月 12 日 北京人大金仓信息技术股份有限公司 目 目 录 录 第 1 章 前言 1 1.1 适用读者 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1.2 相关文档 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1.3 术语 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 1.4 手册约定 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 第 2 章 服务器配置参数 3 设置参数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 2.1.1 参数名称和值 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 2.1.2 通过配置文件设置参数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 2.1.3 通过 SQL 设置参数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 2.1.4 通过 Shell 设置参数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 2.1.5 管理配置文件内容 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 2.1.6 不同模式下参数差异 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 参数作用域 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 2.2.1 INTERNAL---内部级 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 2.2.2 KINGBASE---实例级 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 2.2.3 SIGHUP---会话级 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 2.2.4 SUPERUSER_BACKEND---超级用户后台级 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 2.2.5 BACKEND---后台级 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 2.2.6 SUPERUSER---超级用户级 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 2.2.7 USER---用户级 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 2.1 2.2 2.3 配置文件 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 2.4 连接和认证 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 2.4.1 连接设置 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 2.4.2 安全和认证 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 2.4.3 SSL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 2.5 资源消耗 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 2.5.1 内存 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 2.5.2 磁盘 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 2.5.3 内核资源使用 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 I 2.6 2.7 2.8 目 录 2.5.4 基于代价的清理延迟 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 2.5.5 后台写入器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 2.5.6 异步行为 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 2.5.7 全局临时表 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 预写式日志 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 2.6.1 设置 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 2.6.2 检查点 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 2.6.3 归档 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 2.6.4 归档文件恢复 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 2.6.5 恢复目标 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 复制 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 2.7.1 发送服务器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 2.7.2 主服务器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 2.7.3 后备服务器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 2.7.4 订阅者 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 查询规划 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 2.8.1 规划器方法配制 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 2.8.2 规划器代价常量 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 2.8.3 遗传查询优化 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 2.8.4 其他规划器选项 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73 错误报告和日志 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79 2.9.1 在哪里记录日志 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79 2.9.2 什么时候记录日志 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85 2.9.3 记录什么到日志 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87 2.9.4 使用 CSV 格式的日志输出 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94 2.9.5 进程标题 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96 2.10 运行时统计数据 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97 2.10.1 查询和索引统计收集器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97 2.10.2 统计监控 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99 2.9 2.11 自动清理 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100 2.12 客户端联接默认 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104 2.12.1 语句动作 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104 2.12.2 本地化和格式化 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113 2.12.3 共享库预先加载 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117 2.12.4 其他默认值 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119 2.13 锁管理 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120 2.14 版本和平台兼容性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122 2.14.1 KingbaseES 老版本 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122 2.14.2 平台和客户端兼容性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126 2.14.3 一般特性兼容性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126 2.15 错误处理 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132 2.16 预置选项 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133 II 目 2.17 定制选项 录 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138 2.18 开发者选项 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140 2.19 短选项 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148 2.20 控制文件 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149 2.20.1 控制文件多路备份 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149 2.21 函数别名作为列名 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150 2.22 数据库审计 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150 2.23 标记和强制访问控制 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152 第 3 章 静态数据词典视图 3.1 154 系统表 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154 3.1.1 sys_aggregate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158 3.1.2 sys_am . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160 3.1.3 sys_amop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160 3.1.4 sys_amproc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162 3.1.5 sys_anon_policy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162 3.1.6 sys_attrdef . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163 3.1.7 sys_attribute . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163 3.1.8 sys_audit_blocklog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166 3.1.9 sys_audit_userlog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167 3.1.10 sys_auth_members . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167 3.1.11 sys_authid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168 3.1.12 sys_cast . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169 3.1.13 sys_class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170 3.1.14 sys_collation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174 3.1.15 sys_constraint . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175 3.1.16 sys_constraint_status . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178 3.1.17 sys_context . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178 3.1.18 sys_conversion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179 3.1.19 sys_database . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179 3.1.20 sys_database_dblink . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181 3.1.21 sys_db_role_setting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182 3.1.22 sys_default_acl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182 3.1.23 sys_depend . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183 3.1.24 sys_description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185 3.1.25 sys_directory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185 3.1.26 sys_enum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186 3.1.27 sys_event_trigger . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186 3.1.28 sys_extension . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187 3.1.29 sys_foreign_data_wrapper . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188 3.1.30 sys_foreign_server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189 3.1.31 sys_foreign_table . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189 III 目 录 3.1.32 sys_index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190 3.1.33 sys_inherits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193 3.1.34 sys_init_privs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193 3.1.35 sys_language . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194 3.1.36 sys_largeobject . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195 3.1.37 sys_largeobject_metadata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196 3.1.38 sys_namespace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196 3.1.39 sys_object_status . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197 3.1.40 sys_opclass . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197 3.1.41 sys_operator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198 3.1.42 sys_opfamily . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199 3.1.43 sys_package . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200 3.1.44 sys_partitioned_table . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200 3.1.45 sys_pkgitem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201 3.1.46 sys_pltemplate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203 3.1.47 sys_policy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203 3.1.48 sys_privilege . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204 3.1.49 sys_proc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204 3.1.50 sys_protect . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209 3.1.51 sys_publication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210 3.1.52 sys_publication_rel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211 3.1.53 sys_pwdht_shadow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211 3.1.54 sys_query_mapping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211 3.1.55 sys_range . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212 3.1.56 sys_recyclebin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213 3.1.57 sys_replication_origin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213 3.1.58 sys_resauthid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213 3.1.59 sys_resgroup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214 3.1.60 sys_resgroupcapability . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214 3.1.61 sys_rewrite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215 3.1.62 sys_role_disable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216 3.1.63 sys_seclabel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216 3.1.64 sys_sequence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216 3.1.65 sys_shdepend . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217 3.1.66 sys_shdescription . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218 3.1.67 sys_shseclabel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219 3.1.68 sys_statistic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219 3.1.69 sys_statistic_ext . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221 3.1.70 sys_statistic_ext_data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222 3.1.71 sys_subpartition_table . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224 3.1.72 sys_subscription . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225 3.1.73 sys_subscription_rel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226 IV 目 录 3.1.74 sys_synonym . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226 3.1.75 sys_sysaudit_ids_setting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227 3.1.76 sys_sysaudit_setting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228 3.1.77 sys_sysprivilege . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228 3.1.78 sys_tablespace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229 3.1.79 sys_transform . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229 3.1.80 sys_trigger . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230 3.1.81 sys_ts_config . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232 3.1.82 sys_ts_config_map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232 3.1.83 sys_ts_dict . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233 3.1.84 sys_ts_parser . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233 3.1.85 sys_ts_template . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 234 3.1.86 sys_type . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 234 3.1.87 sys_user_mapping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 240 3.1.88 kdb_job . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241 3.1.89 sysmac_obj . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242 3.1.90 sysmac_column_label . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242 3.2 系统视图 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243 3.2.1 sys_available_extensions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245 3.2.2 sys_available_extension_versions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245 3.2.3 sys_config . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246 3.2.4 sys_cursors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246 3.2.5 sys_depends . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247 3.2.6 sys_file_settings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248 3.2.7 sys_grant_privileges . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249 3.2.8 sys_group . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250 3.2.9 sys_hba_file_rules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250 3.2.10 sys_indexes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 251 3.2.11 sys_locks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252 3.2.12 sys_matviews . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255 3.2.13 sys_policies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255 3.2.14 sys_prepared_statements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 256 3.2.15 sys_prepared_xacts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257 3.2.16 sys_publication_tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257 3.2.17 sys_pwdht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 258 3.2.18 sys_replication_origin_status . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 258 3.2.19 sys_replication_slots . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 258 3.2.20 sys_resource_groups . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 260 3.2.21 sys_roles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 260 3.2.22 sys_rules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262 3.2.23 sys_seclabels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262 3.2.24 sys_sequences . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263 V 目 录 3.2.25 sys_session . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264 3.2.26 sys_settings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264 3.2.27 sys_shadow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 266 3.2.28 sys_stats . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267 3.2.29 sys_stats_ext . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269 3.2.30 sys_tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271 3.2.31 sys_timezone_abbrevs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 272 3.2.32 sys_timezone_names . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 272 3.2.33 sys_triggers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273 3.2.34 sys_user . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274 3.2.35 sys_users . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274 3.2.36 sys_user_mappings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275 3.2.37 sys_views . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 276 3.2.38 recyclebin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 276 3.2.39 user_any_privs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 276 3.2.40 sysaudit_record_sao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 277 3.2.41 sysaudit_record_sso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278 3.2.42 sysaudit.all_audit_rules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278 3.2.43 sysaudit.all_ids_rules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 279 3.2.44 anon.all_policy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 280 3.2.45 src_restrict.show_rules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 280 3.2.46 sysencrypt.show_encrypt_device . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 281 3.2.47 sysencrypt.sys_table_encrypt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 281 3.3 兼容 Oracle 视图 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 282 3.3.1 all_all_tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 287 3.3.2 all_arguments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 291 3.3.3 all_col_comments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293 3.3.4 all_col_privs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293 3.3.5 all_cons_columns . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 294 3.3.6 all_constraints . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 294 3.3.7 all_db_links . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 296 3.3.8 all_directories . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 296 3.3.9 all_ind_columns . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 297 3.3.10 all_indexes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 298 3.3.11 all_objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 301 3.3.12 all_part_tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 302 3.3.13 all_sequences . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 304 3.3.14 all_source . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 304 3.3.15 all_synonyms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 305 3.3.16 all_tab_cols . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 306 3.3.17 all_tab_columns . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 306 3.3.18 all_tab_comments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 306 VI 目 录 3.3.19 all_tab_partitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 306 3.3.20 all_tab_privs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 308 3.3.21 all_tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 309 3.3.22 all_trigger_cols . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 312 3.3.23 all_triggers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 312 3.3.24 all_types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 313 3.3.25 all_users . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 314 3.3.26 all_views . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 315 3.3.27 db_files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 316 3.3.28 dba_all_tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 316 3.3.29 dba_arguments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 316 3.3.30 dba_col_comments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 316 3.3.31 dba_col_privs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 316 3.3.32 dba_cons_columns . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 316 3.3.33 dba_constraints . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 316 3.3.34 dba_db_links . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 317 3.3.35 DBA_DIRECTORIES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 317 3.3.36 dba_free_space . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 317 3.3.37 dba_ind_columns . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 318 3.3.38 dba_indexes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 318 3.3.39 dba_objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 318 3.3.40 dba_part_tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 319 3.3.41 dba_role_privs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 319 3.3.42 dba_roles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 320 3.3.43 dba_sequences . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 320 3.3.44 dba_source . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 320 3.3.45 dba_synonyms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 320 3.3.46 dba_tab_cols . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 320 3.3.47 dba_tab_columns . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 322 3.3.48 dba_tab_comments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 324 3.3.49 dba_tab_partitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 325 3.3.50 dba_tab_privs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 325 3.3.51 dba_tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 325 3.3.52 dba_tablespace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 328 3.3.53 dba_tablespaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 328 3.3.54 dba_trigger_cols . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 329 3.3.55 dba_triggers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 329 3.3.56 dba_types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 329 3.3.57 dba_users . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 329 3.3.58 dba_views . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 330 3.3.59 user_all_tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 330 3.3.60 user_arguments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 330 VII 目 录 3.3.61 user_col_comments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 331 3.3.62 user_col_privs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 331 3.3.63 user_cons_columns . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 331 3.3.64 user_constraints . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 331 3.3.65 user_db_links . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 331 3.3.66 user_directories . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 331 3.3.67 user_free_space . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 331 3.3.68 user_ind_columns . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 331 3.3.69 user_indexes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 331 3.3.70 user_objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 332 3.3.71 user_part_tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 332 3.3.72 user_role_privs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 332 3.3.73 user_sequences . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 333 3.3.74 user_source . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 333 3.3.75 user_synonyms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 333 3.3.76 user_tab_cols . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 333 3.3.77 user_tab_columns . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 333 3.3.78 user_tab_comments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 333 3.3.79 user_tab_partitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 334 3.3.80 user_tab_privs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 334 3.3.81 user_table_cols . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 334 3.3.82 user_tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 336 3.3.83 user_tablespace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 336 3.3.84 user_tablespaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 336 3.3.85 user_trigger_cols . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 336 3.3.86 user_triggers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 337 3.3.87 user_types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 337 3.3.88 user_users . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 337 3.3.89 user_views . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 337 3.3.90 V$CONTEXT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 337 3.3.91 V$DATABASE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 338 3.3.92 V$INSTANCE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 339 3.3.93 V$LOCK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 340 3.3.94 V$LOCKED_OBJECT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 341 3.3.95 V$PARAMETER . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 342 3.3.96 V$SESSION . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 342 3.3.97 V$SYSSTAT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 346 3.3.98 recyclebin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 346 第 4 章 动态性能视图 347 4.1 sys_stat_activity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 347 4.2 sys_stat_all_indexes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 350 VIII 目 录 4.3 sys_stat_all_tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 351 4.4 sys_stat_archiver . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 352 4.5 sys_stat_bgwriter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 353 4.6 sys_stat_cached_plans . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 353 4.7 sys_stat_database . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 354 4.8 sys_stat_database_conflicts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 356 4.9 sys_stat_gssapi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 356 4.10 sys_stat_instevent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 357 4.11 sys_stat_instio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 357 4.12 sys_stat_instlock . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 358 4.13 sys_stat_msgaccum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 359 4.14 sys_stat_progress_cluster . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 359 4.15 sys_stat_progress_create_index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 360 4.16 sys_stat_progress_vacuum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 361 4.17 sys_stat_replication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 362 4.18 sys_stat_shmem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 365 4.19 sys_stat_sqlio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 365 4.20 sys_stat_sqltime . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 366 4.21 sys_stat_sqlwait . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 367 4.22 sys_stat_ssl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 367 4.23 sys_stat_subscription . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 368 4.24 sys_stat_sys_indexes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 369 4.25 sys_stat_sys_tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 369 4.26 sys_stat_user_functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 369 4.27 sys_stat_user_indexes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 370 4.28 sys_stat_user_tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 370 4.29 sys_stat_wal_buffer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 370 4.30 sys_stat_wal_receiver . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 371 4.31 sys_stat_xact_all_tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 372 4.32 sys_stat_xact_sys_tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 373 4.33 sys_stat_xact_user_functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 373 4.34 sys_stat_xact_user_tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 373 4.35 sys_stat_all_indexes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 374 4.36 sys_statio_all_sequences . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 374 4.37 sys_statio_all_tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 375 4.38 sys_stat_sys_indexes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 375 4.39 sys_statio_sys_sequences . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 375 4.40 sys_statio_sys_tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 376 4.41 sys_stat_user_indexes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 376 4.42 sys_statio_user_sequences . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 376 4.43 sys_statio_user_tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 376 IX 目 第 5 章 等待事件 录 377 5.1 LWLock . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 377 5.2 Lock . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 380 5.3 BufferPin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 381 5.4 Activity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 381 5.5 Client . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 382 5.6 Extension . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 383 5.7 IPC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 383 5.8 Timeout . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 386 5.9 IO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 386 第 6 章 KingbaseES 信息模式 390 6.1 模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 390 6.2 数据类型 6.3 information_schema_catalog_name . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 391 6.4 administrable_role_authorizations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 391 6.5 applicable_roles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 391 6.6 attributes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 392 6.7 character_sets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 395 6.8 check_constraint_routine_usage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 397 6.9 check_constraints . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 390 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 397 6.10 collations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 397 6.11 collation_character_set_applicability . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 398 6.12 column_domain_usage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 398 6.13 column_options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 399 6.14 column_privileges . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 399 6.15 column_udt_usage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 400 6.16 columns . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 401 6.17 constraint_column_usage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 406 6.18 constraint_table_usage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 406 6.19 data_type_privileges . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 407 6.20 domain_constraints . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 408 6.21 domain_udt_usage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 408 6.22 domains . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 409 6.23 element_types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 412 6.24 enabled_roles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 414 6.25 foreign_data_wrapper_options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 415 6.26 foreign_data_wrappers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 415 6.27 foreign_server_options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 416 6.28 foreign_servers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 416 6.29 foreign_table_options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 417 6.30 foreign_tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 418 X 目 录 6.31 key_column_usage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 418 6.32 parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 419 6.33 referential_constraints . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 421 6.34 role_column_grants . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 422 6.35 role_package_grants . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 423 6.36 role_routine_grants . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 424 6.37 role_table_grants . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 424 6.38 role_udt_grants . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 425 6.39 role_usage_grants . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 426 6.40 routine_privileges . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 427 6.41 routines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 427 6.42 schemata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 435 6.43 sequences . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 436 6.44 sql_features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 437 6.45 sql_languages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 438 6.46 sql_packages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 438 6.47 sql_parts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 439 6.48 sql_sizing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 439 6.49 sql_sizing_profiles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 440 6.50 table_constraints . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 440 6.51 table_privileges . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 441 6.52 tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 442 6.53 transforms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 443 6.54 triggered_update_columns . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 444 6.55 triggers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 445 6.56 udt_privileges . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 447 6.57 usage_privileges . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 448 6.58 user_defined_types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 448 6.59 user_mapping_options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 451 6.60 user_mappings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 451 6.61 view_column_usage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 452 6.62 view_routine_usage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 452 6.63 view_table_usage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 453 6.64 views . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 453 第 7 章 附录 7.1 455 数据库限制 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 455 版权声明 457 服务周期承诺 458 XI 第 1 章 前言 1 第 章 前言 本文档描述了有关数据库初始化参数的参考信息,静态数据词典视图,动态性能视图,信息模式,数据库等待事 件和数据库限制,这都是 KingbaseES 数据库的一部分。 前言部分包含以下主题: • 适用读者 • 相关文档 • 术语 • 手册约定 1.1 适用读者 KingbaseES 数据库数库参考手册面向所有使用 KingbaseES 的用户,主要是数据库管理员和应用程序开发人员。 在开始阅读本文档之前,您需要了解以下内容: • KingbaseES 数据库概念 • 您的操作系统环境 1.2 相关文档 有关 KingbaseES 数据库管理的更多信息,请参阅以下资源: • 《KingbaseES 数据库概念》,全面介绍本手册中使用的概念和术语 • 《数据库管理员指南》,了解有关管理 KingbaseES 数据库的信息 • 《版本升级最佳实践》,用于将以前版本的 KingbaseES 升级到新版本的过程 • 《SQL 语言》,用于了解 KingbaseES sql 命令和函数的信息 • 《KStudio 快速开发手册》,了解有关在 KingbaseES 数据库中开发数据库应用的信息 1 第 1 章 前言 1.3 术语 1.4 手册约定 本文档中可能出现“注意、提示、警告、另请参阅”等标志,它们所代表的含义如下: 注意: 用于突出重要/关键信息、最佳实践等。 提示: 用于突出小窍门、捷径等。 警告: 用于传递设备或环境安全警示信息,若不避免,可能会导致设备损坏、数据丢失、设备性能降低或其 它不可预知的结果。 另请参阅: 用于突出参考、参阅等。 以下程序代码书写约定适用于本文档: 符号 说明 [] 表示包含一个或多个可选项。不需要输入中括号本身。 {} 表示包含两个以上(含两个)的候选,必须在其中选取一个。不需要输入花括号本身。 | 分割中括号或者花括号中的两个或两个以上选项。不需要输入“|”本身。 ... 表示其之前的元素可以被重复。 斜体 表示占位符或者需要提供特定值的变量。 大写 表示系统提供的元素,以便与用户定义的元素相互区分。除出现在方括号中的元素外,应当按 照顺序逐字输入。当然,部分元素在系统中是大小写不敏感的,因此用户可以根据系统说明以 小写形式输入。 小写 表示由用户提供的元素。 2 第 2 章 服务器配置参数 2 第 章 服务器配置参数 本部分提供了影响数据库系统行为的配置参数的完整参考信息,包含参数的配置方法。 2.1 设置参数 KingbaseES 服务器的配置主要通过设置配置文件中参数完成。在 KingbaseES V9 数据库中,数据库管理员可以 通过以下三种方式来设置配置文件参数,从而配置服务器: • 通过配置文件设置参数 。 • 通过 SQL 设置参数 。 • 通过 Shell 设置参数 。 2.1.1 参数名称和值 KingbaseES 中参数名大小写是不敏感的。参数类型可以为:布尔、字符串、整数、浮点数或枚举。参数类型决 定了设置该参数的语法: 布尔 值可以被写成 on, off, true, false, yes, no, y, n, 1, 0 (都是大小写不敏感的)。 字符串 通常值被包括在单引号内,值内部的任何单引号都需要被双写。不过,如果值是一个简单数字或者标识符, 引号通常可以被省略。(匹配 SQL 关键字的值在某些上下文中需要引用。) 数字(整数和浮点) 数值参数可以指定为常见的整数和浮点格式; 如果参数是整数类型,则将小数四舍五入为最接近 的整数。整数参数还接受十六进制输入 (以 0x 开头) 和八进制输入 (以 0 开头),但是这些格式不能有分数。不 要使用千位分隔符。除十六进制输入外,不需要引号。 带单位的数字 一些数字参数具有隐含单位,因为它们描述内存或时间量。单位可能是字节、千字节、块(通常是 8KB)、毫秒、秒或分钟。这些设置之一的一个未修饰的数字值将使用该设置的默认单位,默认单位可以通 过引用 sys_settings.unit 来找到。为了方便,也可以显式地指定一个不同的单位,例如时间值可以是'120 ms',并且它们将被转换到参数的实际单位。要使用这个特性,注意值必须被写成一个字符串(带有引号)。单 位名称是大小写敏感的,并且在数字值和单位之间可以有空白。 3 第 2 章 服务器配置参数 可用的内存单位是 B(字节)、kB(千字节)、MB(兆字节)和 GB(吉字节)。内存单位的乘数是 1024 而不 是 1000。 可用的时间单位是 us (微秒)、ms(毫秒)、s(秒)、min(分钟)、h(小时)和 d(天)。 如果一个分数值是用一个单位所指定,它将四舍五入为下一个较小单位的倍数(如果有下一个较小的单位)。 例如,30.1 GB 将被转换为 30822 MB 而非 32319628902 B。如果参数是整数类型,则在进行任何单位转换之 后,舍入到整数。 枚举 枚举类型的参数以与字符串参数相同的方式指定,但被限制到一组有限的值。这样一个参数可用的值可以在 sys_settings.“enumvals“中找到。枚举参数值是大小写无关的。 2.1.2 通过配置文件设置参数 kingbase.conf 文件通常被保存在数据目录中(当数据库集簇目录被初始化时,将默认拷贝 kingbase.conf 文 件至数据目录,为数据集簇提供了默认值)。直接编辑 kingbase.conf 文件是设置配置参数的最基本的方式。 以下为一个 kingbase.conf 文件的示例: # This is a comment log_connections = yes log_destination = 'syslog' search_path = '"$user", public' shared_buffers = 128MB 每一行指定一个参数。名称和值之间的等号是可选的。空白无意义(除了在一个引号引用的参数值内)并且空行 被忽略。井号(#)指示该行的剩余部分是一个注释。非简单标识符或者数字的参数值必须用单引号包围。要在参数 值里嵌入单引号,要么写两个单引号(首选)或者在引号前放反斜线。如果文件包含相同参数名的多个条目,则最后 一个条目的设置覆盖之前所有同名条目的设置。 以这种方式设定的参数为集簇提供了默认值。除非这些设置被覆盖,活动会话看到的就是这些设置。下面的小节 描述了管理员或用户覆盖这些默认值的方法。 主服务器进程每次收到 SIGHUP 信号(最简单的方法是从命令行运行 sys_ctl reload 或调用 SQL 函数 sys_reload_conf() 来发送这个信号)后都会重新读取这个配置文件。主服务器进程还会把这个信号传播给所有正 在运行的服务器进程,这样现有的会话也能采用新值(要等待它们完成当前正在执行的客户端命令之后才会发生)。 另外,可以直接向一个单一服务器进程发送该信号。有些参数只能在服务器启动时设置,在配置文件中对这些条目的 修改将被忽略,直到下次服务器重启。配置文件中的非法参数设置也会在 SIGHUP 处理过程中被忽略(但是会记录 日志)。 除 kingbase.conf 之外,KingbaseES 数据目录还包含一个文件 kingbase.auto.conf,它和 kingbase.conf 具有相同的格式但不能被编辑。此文件保存了通过 ALTER SYSTEM 命令提供的设置。每当 kingbase.conf 被读 取时,该文件也将被自动读取,并且其设置会以同样的方式生效。kingbase.auto.conf 中的设置会覆盖 kingbase. conf 中的设置。 外部工具也可以修改 kingbase.auto.conf。不建议在服务器运行时执行此操作,因为并发的 ALTER SYSTEM 命 令可能会覆盖这些更改。这些工具可能只是简单地在末尾附加新的设置,或者它们可能选择删除重复的设置和/或注 4 第 2 章 服务器配置参数 释 (如 ALTER SYSTEM)。 系统视图sys_file_settings 可以有助于对配置文件中的更改进行提前测试,或者在 SIGHUP 信号没有达到预期效 果时用来诊断问题。 2.1.3 通过 SQL 设置参数 KingbaseES 提供了三个 SQL 命令来建立配置默认值。 • ALTER SYSTEM 命令提供了一种改变全局默认值的从 SQL 可访问的方法,等效于直接编辑 kingbase. conf。 • ALTER DATABASE 命令允许针对一个数据库覆盖其全局设置。 • ALTER ROLE 命令允许用用户指定的值来覆盖全局设置和数据库设置。 只有当开始一个新的数据库会话时,用 ALTER DATABASE 和 ALTER ROLE 设置的值才会被应用。它们会覆盖从配 置文件或服务器命令行获得的值,并且作为该会话后续的默认值。注意某些设置在服务器启动后不能被更改,并且因 此不能被这些命令(或者下文列举的命令)设置。 当客户端连接到数据库,KingbaseES 会提供两个额外的 SQL 命令(以及等效的函数)用以影响会话本地的配置 设置: • SHOW 命令允许察看所有参数的当前值。对应的函数是 current_setting(setting_name text)。 • SET 命令允许修改对于一个会话可以本地设置的参数的当前值,它对其他会话没有影响。对应的函数是 set_config(setting_name, new_value, is_local) 。 此外,系统视图sys_settings 可以被用来查看和改变会话本地的值: • 查询这个视图与使用 SHOW ALL 相似,但是可以提供更多细节。它也更加灵活,因为可以为它指定过滤条件或 者把它与其他关系进行连接。 • 在这个视图上使用 UPDATE 并且指定更新 setting``列,其效果等同于发出\ ``SET 命令。例如,下面的命 令 SET configuration_parameter TO DEFAULT; 等效于: UPDATE sys_settings SET setting = reset_val WHERE name = 2.1.4 'configuration_parameter'; 通过 Shell 设置参数 除了在数据库或者角色层面上设置全局默认值或者进行覆盖,还可以通过 shell 工具把设置传递给 KingbaseES。 服务器和 libkci 客户端库都能通过 shell 接受参数值。 • 在服务器启动期间,可通过-c 命令行参数把参数设置传递给 kingbase 命令。例如: 5 第 2 章 服务器配置参数 kingbase -c log_connections=yes -c log_destination='syslog' 这种方式提供的设置会覆盖通过 kingbase.conf 或者 ALTER SYSTEM 提供的设置,因此除了重启服务器 之外无法从全局上改变它们。 • 当通过 libkci 启动一个客户端会话时,可以使用 KINGBASE_OPTIONS 环境变量指定参数设置。这种方式建立的 设置构成了会话生存期间的默认值,但是不会影响其他的会话。由于历史原因,KINGBASE_OPTIONS 的格式和启 动 kingbase 命令时用到的相似,特别是-c 标志必须被指定。例如: env KINGBASE_OPTIONS="-c geqo=off -c statement_timeout=5min" ksql 通过 shell 或者其他方式,其他客户端和库可能提供它们自己的机制,以便允许用户在不直接使用 SQL 命 令的前提下修改会话设置。 2.1.5 管理配置文件内容 KingbaseES 提供了一些特性用于把复杂的 “kingbase.conf“文件分解成子文件。这些特性在管理多个具有相关但 不完全相同配置的服务器时,特别有用。 除了单个参数设置,kingbase.conf 文件可以包含包括指令,它指定要读入和处理的另一个文件,就好像该文件 被插入到配置文件的这个点。此特性允许一个配置文件被划分成物理上独立的部分。包括指令看起来像: include 'filename' 如果文件名不是一个绝对路径,它将作为包含引用配置文件的目录的相对位置。包括可以被嵌套。 也有一个 include_if_exists 指令,它的作用和 include 指令一样,不过当被引用的文件不存在或者无法被读 取时其行为不同。一个通常的 include 将认为这是一个错误情况,而 include_if_exists 仅仅记录一个消息并且继 续处理引用配置文件。 kingbase.conf 文件也可以包含 include_dir 指令,它指定要被包含的配置文件的一整个目录。它的用法类 似: include_dir 'directory' 非绝对目录名被当做包含引用配置文件的目录的相对路径。在该指定目录中,只有以后缀名 .conf 结尾的非目录 文件才会被包括。以. 字符开头的文件名也会被忽略,因为在某些平台上它们是隐藏文件。一个包括目录中的多个文 件被以文件名顺序处理(根据 C 区域规则排序,即数字在字母之前并且大写字母在小写字母之前)。 包括文件或目录可以被用来在逻辑上分隔数据库配置的各个部分,而不是用一个很大的 kingbase.conf 文件。 考虑一个有两台数据库服务器的公司,每一个都有不同的内存量。很可能配置的元素都会被共享,例如用于日志的参 数。但是两者关于内存的参数将会不同。并且还可能会有服务器相关的自定义。一种管理这类情况的方法是将站点的 自定义配置修改分成三个文件。把下面的内容加入到 kingbase.conf 文件末尾来包括它们: 6 第 2 章 服务器配置参数 include 'shared.conf' include 'memory.conf' include 'server.conf' 所有的系统将会有相同的 shared.conf。每个有特定内存量的服务器可以共享相同的 memory.conf。可能 8GB 内存的服务器有一个,而 16GB 内存的服务器有另一个。并且 server.conf 可以装有真正服务器相关的配置信息。 另一种可能性是创建一个配置文件目录并把这个信息放到其中的文件里。例如,一个 conf.d 目录可以在 kingbase.conf 的末尾被引用: include_dir 'conf.d' 然后命名 conf.d 目录中的文件如下所示: 00shared.conf 01memory.conf 02server.conf 这种命名习惯建立了这些文件被载入的清晰顺序。这是很重要的,因为在服务器读取配置文件时,对于一个特定 的参数只有最后碰到的一个设置才会被使用。在这个例子中,conf.d/02server.conf 设置的东西将会覆盖在 conf. d/01memory.conf 中相同参数的值。 还可以使用这种配置目录方法,在命名文件时更有描述性: 00shared.conf 01memory-8GB.conf 02server-foo.conf 这种形式的安排为每个配置文件变体给定了一个唯一的名称。当多个服务器把它们的配置全部存储在一个位置 (例如在一个版本控制仓库中)时,这可以帮助消除歧义(在版本控制下存储数据库配置文件是另一个值得考虑的好 方法)。 2.1.6 不同模式下参数差异 KingbaseES 数据库有两种模式,分别是 oracle 模式和 pg 模式。在 pg 模式下,以下参数默认为 off 状态,且禁 止将其打开。 7 第 2 章 服务器配置参数 表 2.1.1: 两种模式差异 ora_forbid_func_polymorphism 是否是否禁用多态 on 表示开启禁用多态,同模式下不能创建 同名的函数或存储过程。 off(默认), 则表示启用多态 ora_input_emptystr_isnull 输入空字符串时的处理措施。 on 表示将输入的空字符串作为 null 值处理。 off 表示不处理 ora_numop_style 是否将 integers 操作符当做 numeric 操作符 ora_statement_level_rollback 是否启用语句级回滚 ora_style_nls_date_format 这个变量设置为 on 时,日期时间的 隐式输入与输出字符串格式 才会使用参数 nls_date_format、 nls_timestamp_format 和 nls_timestamp_tz_format 的配置 2.2 参数作用域 2.2.1 INTERNAL---内部级 只读参数,其中部分参数是 KingBase 程序确定,或者使用一些不同的编辑选项确定的;有些参数是数据库实例 初始化时就确定了的,之后就不能再改变此参数值了。这类参数值不能配置在 kingbase.conf 中,因为它们是由 KingBase 程序和在初始化实例时确定的。 2.2.2 KINGBASE---实例级 此类参数的改变需要重启 KingBase 实例。在 kingbase.conf 改变此类参数后,需要重启 KingBase 实例才能生 效。 2.2.3 SIGHUP---会话级 在 kingbase.conf 文件中可改变这些参数的值,不需要重启数据库,只需要向 KingBase 进程发送 SIGHUP 信 号,让其读取新的参数值。KingBase 进程收到 SIGHUP 信号后,也会向它的子进程发送 SIGUP 信号,让新的参数 在所有的进程中都生效。 8 第 2 章 服务器配置参数 2.2.4 SUPERUSER_BACKEND---超级用户后台级 在 kingbase.conf 文件中可改变这些参数的值,不需要重启数据库,只需要向 KingBase 进程发送 SIGHUP 信 号,让其读取新的参数值。新的配置只会出现在这之后的新连接中,在已有的连接中,这些参数的值不会改变。这些 参数的值也可以在由超级用户建立新连接时,由连接的一些参数改变。 2.2.5 BACKEND---后台级 在 kingbase.conf 文件中可改变这些参数的值,不需要重启数据库,只需要向 KingBase 进程发送 SIGHUP 信 号,让其读取新的参数值。新的配置只会出现在这之后的新连接中,在已有的连接中,这些参数的值不会改变。 2.2.6 SUPERUSER---超级用户级 此类参数可以由超级用户使用 set 来改变。而超级用户改变参数值时,只会影响自身的连接配置,不会影响其他 用户。向 KingBase 进程发送 SIGHUP 信号,也只会影响后续建立的连接,不会影响现在的连接。 2.2.7 USER---用户级 普通用户可使用 set 命令通过此类参数来改变本连接中的配置值。除了普通用户都可以改变外,这类参数与 SUSET 类参数没有区别。 2.3 配置文件 KingbaseES 主服务器的配置主要通过修改配置文件 kingbase.conf 完成。而配置文件 sys_hba.conf 和 sys_ident.conf 主要用于控制 强身份验证。当数据库集簇目录被初始化时,上述三个配置文件将被默认拷贝在数 据目录(通常为/opt/Kingbase/ES/V9/data)中。本节描述的参数允许配置文件存放在其他位置(可以简化管理, 配置文件被独立放置时,更易于保证它得到恰当的备份)。 data_directory 属性 描述 类型 string 默认值 ConfigDir 级别 KINGBASE---实例级 指定用于数据存储的目录。这个选项只能在服务器启动时设置。 9 第 2 章 服务器配置参数 config_file 属性 描述 类型 string 默认值 ConfigDir 级别 KINGBASE---实例级 指定主服务器配置文件(kingbase.conf)。此参数只能在 kingbase 命令行上设置。 hba_file 属性 描述 类型 string 默认值 ConfigDir/sys_hba.conf 级别 KINGBASE---实例级 指定基于主机认证配置文件(sys_hba.conf)。此参数只能在服务器启动的时候设置。 ident_file 属性 描述 类型 string 默认值 ConfigDir/ident_file.conf 级别 KINGBASE---实例级 指定用于用户名称映射的配置文件(sys_ident.conf)。此参数只能在服务器启动的时候设置。另见 用户名映 射。 external_pid_file 属性 描述 类型 string 默认值 ’’ 级别 KINGBASE---实例级 10 第 2 章 服务器配置参数 指定可被服务器创建的用于管理程序的额外进程 ID(PID)文件。此参数只能在服务器启动的时候设置。 数据库在默认安装时不会显式设置以上参数。而是由命令行参数-D 或者环境变量 KINGBASE_DATA 指定数据目 录,上述的配置文件均能在数据目录中找到。 如 果 想 把 配 置 文 件 放 在 别 的 地 方 而 不 是 数 据 目 录 中, 那 么 kingbase`' '`-D 命令行选项或者环境变量 KINGBASE_DATA 必须指向包含配置文件的目录,并且 kingbase.conf 中(或者命令行上)的 data_directory 参数必须显示数据目录实际存放的地方。请注意,data_directory 将覆盖-D 和 KINGBASE_DATA 指定的数据目录位 置,但是不覆盖配置文件的位置。 可使用选项 config_file、hba_file 和/或 ident_file 单独指定配置文件名称和位置。config_file 只能在 kingbase 命令行上指定,但是其他文件可以在主配置文件中设置。如果所有三个参数外加 data_directory 被显式 地设置,则不必指定-D 或 KINGBASE_DATA。 在设置这些参数时,相对路径将被认为是相对于 kingbase 启动路径的路径。 2.4 连接和认证 2.4.1 连接设置 listen_addresses 属性 描述 类型 string 默认值 * 级别 KINGBASE---实例级 指定服务器在哪些 TCP/IP 地址上监听客户端连接。值的形式是一个逗号分隔的主机名和/或数字 IP 地址列 表。特殊项 * 对应所有可用 IP 接口。”0.0.0.0” 允许监听所有 IPv4 地址,”::” 允许监听所有 IPv6 地址。如果 列表为空,服务器将根本不会监听任何 IP 接口,在这种情况中只能使用 Unix 域套接字来连接它。默认值是 localhost,它只允许建立本地 TCP/IP “环回”连接。虽然客户端认证(强身份验证)允许细粒度地控制谁能 访问服务器,listen_addresses 控制哪些接口接受连接尝试,这能帮助在不安全网络接口上阻止重复的恶意连 接请求。这个参数只能在服务器启动时设置。 port 11 第 2 章 服务器配置参数 属性 描述 类型 integer 默认值 54321 级别 KINGBASE---实例级 服务器监听的 TCP 端口;默认是 54321 。请注意服务器会同一个端口号监听所有的 IP 地址。这个参数只能在 服务器启动时设置。 max_connections 属性 描述 类型 integer 默认值 100 级别 KINGBASE---实例级 决定数据库的最大并发连接数。默认值通常是 100 个连接,但是如果内核设置不支持(initdb 时决定),可能 会比这个数少。这个参数只能在服务器启动时设置。 当运行一个后备服务器时,必须设置这个参数等于或大于主服务器上的参数。否则,后备服务器上可能无法允 许查询。 superuser_reserved_connections 属性 描述 类型 integer 默认值 3 级别 KINGBASE---实例级 决定为 KingbaseES 超级用户连接而保留的连接“槽”数。同时活跃的并发连接最多 max_connections 个。任 何时候,活跃的并发连接数最多为 max_connections 减去 superuser_reserved_connections,新连接就只能 由超级用户发起了,并且不会有新的复制连接被接受。 默认值是 3 。这个值必须小于 max_connections 的值。这个参数只能在服务器启动时设置。 unix_socket_directories 12 第 2 章 服务器配置参数 属性 描述 类型 string 默认值 /tmp 级别 KINGBASE---实例级 指定服务器用于监听来自客户端应用的连接的 Unix 域套接字目录。通过列出用逗号分隔的多个目录可以建立 多个套接字。项之间的空白会被忽略,因此,如果需要在名字中包括空白或逗号,需要在目录名周围放上双引 号。空值表示在任何 Unix 域套接字上都不会被监听,在这种情况中只能使用 TCP/IP 套接字来连接到服务 器。默认值通常是/tmp,但是在编译时可以被改变。这个参数只能在服务器启动时设置。 除了套接字文件本身(名为.s.KINGBASE.nnnn,其中 “nnnn“是服务器的端口号),一个名为.s.KINGBASE. nnnn.lock 的普通文件会在每一个 unix_socket_directories 目录中被创建。任何一个都不应该被手工移除。 Windows 下没有 Unix 域套接字,因此这个参数与 Windows 无关。 unix_socket_group 设置 Unix 属性 描述 类型 string 默认值 ’’ 级别 KINGBASE---实例级 域 套 接 字 的 所 属 组 (套 接 字 的 所 属 用 户 总 是 启 动 服 务 器 的 用 户)。 可 以 与 选 项 unix_socket_permissions 一起用于对 Unix 域连接进行访问控制。默认是一个空字符串,表示服务器用 户的默认组。这个参数只能在服务器启动时设置。 Windows 下没有 Unix 域套接字,因此这个参数与 Windows 无关。 unix_socket_permissions 属性 描述 类型 integer 默认值 0777 级别 KINGBASE---实例级 设置 Unix 域套接字的访问权限。Unix 域套接字使用普通的 Unix 文件系统权限集。这个参数值应该是数字的形 式,也就是系统调用 chmod 和 umask 接受的形式(如果使用自定义的八进制格式,数字必须以一个 0(零) 开头)。 13 第 2 章 服务器配置参数 默认的权限是 0777,意思是任何人都可以连接。合理的候选是 0770(只有用户和同组的人可以访问,又见 unix_socket_group)和 0700(只有用户自己可以访问)(请注意,对于 Unix 域套接字,只有写权限有麻 烦,因此没有对读取和执行权限的设置和收回)。 这个访问控制机制与 强身份验证中的用户认证没有关系。 这个参数只能在服务器启动时设置。 这个参数与完全忽略套接字权限的系统无关,尤其是自版本 10 以上的 Solaris。在那些系统上,可以通过把 unix_socket_directories 指向一个把搜索权限限制给指定用户的目录来实现相似的效果。因为 Windows 下 没有 Unix 域套接字,因此这个参数也与 Windows 无关。 bonjour 属性 描述 类型 boolean 默认值 off 级别 KINGBASE---实例级 通过 Bonjour 广告服务器的存在。默认值是关闭。这个参数只能在服务器启动时设置。 bonjour_name 属性 描述 类型 string 默认值 ’’ 级别 KINGBASE---实例级 指定 Bonjour 服务名称。空字符串''(默认值)表示使用计算机名。如果编译时没有打开 Bonjour 支持那么将 忽略这个参数。这个参数只能在服务器启动时设置。 tcp_keepalives_idle 属性 描述 类型 integer 默认值 0 级别 USER---用户级 指定不活动多少秒之后通过 TCP 向客户端发送一个 keepalive 消息。0 值表示使用默认值。这个参数只有在支 14 第 2 章 服务器配置参数 持 TCP_KEEPIDLE 或等效套接字选项的系统或 Windows 上才可以使用。在其他系统上,它必须为零。在通过 Unix 域套接字连接的会话中,这个参数被忽略并且总是读作零。 注意: 在 Windows 上,值若为 0,系统会将该参数设置为 2 小时,因为 Windows 不支持读取系统默认值。 tcp_keepalives_interval 属性 描述 类型 integer 默认值 0 级别 USER---用户级 指定在多少秒之后重发一个还没有被客户端告知已收到的 TCP keepalive 消息。0 值表示使用系统默认值。这个 参数只有在支持 TCP_KEEPINTVL 或等效套接字选项的系统或 Windows 上才可以使用。在其他系统上,必须为 零。在通过 Unix 域套接字连接的会话中,这个参数被忽略并总被读作零。 注意: 在 Windows 上,值若为 0,系统会将该参数设置为 1 秒,因为 Windows 不支持读取系统默认值。 tcp_keepalives_count 属性 描述 类型 integer 默认值 0 级别 USER---用户级 指定与客户端的服务器连接被认为死掉之前允许丢失的 TCP keepalive 数量。0 值表示使用系统默认值。这个参 数只有在支持 TCP_KEEPCNT 或等效套接字选项的系统上才可以使用。在其他系统上,必须为零。在通过 Unix 域套接字连接的会话中,这个参数被忽略并总被读作零。 注意: Windows 不支持该参数,且必须为零。 tcp_user_timeout 15 第 2 章 服务器配置参数 属性 描述 类型 integer 默认值 0 级别 USER---用户级 在强制关闭连接之前,指定传输的数据可能保持未确认的毫秒数。值 0 使用系统默认值。此参数仅支持 TCP_USER_TIMEOUT;在其他系统上,它必须是零。在通过 unix 域套接字连接的会话中,此参数将被忽略,并 且始终读取为零。 注意: 在 Windows 和 Linux 2.6.36 或更早版本的 Linux 中不支持此参数。 client_idle_timeout 属性 描述 类型 integer 默认值 0 级别 USER---用户级 指定客户端空闲多少秒之后断开与服务器的连接。0 值表示关闭这个功能,大于 0 的值表示开启这个功能并设 置自动断开连接的空闲时间。连接断开后需要重新连接数据库,建议不要设置的时间太短。 注意: 该值的最大范围是 1800 秒,超出范围后会报错提示。 connections_limit_per_user 属性 描述 类型 boolean 默认值 true 级别 USER---用户级 参数 connections_limit_per_user 设置为 true 时,普通用户默认连接数限制为 5,超级用户默认连接数限制为 8。connections_limit_per_user 设置为 false 时,所有用户默认的最大连接限制均为-1,并且超级用户不受连接 数限制。 16 第 2 章 服务器配置参数 注意: 注意这个限制仅针对于普通连接,预备事务和后台工作者连接都不受这一限制管辖。 2.4.2 安全和认证 authentication_timeout 属性 描述 类型 integer 默认值 1min 级别 SIGHUP---会话级 完成客户端认证的最长时间,以秒计。如果一个客户端没有在这段时间里完成认证协议,服务器将关闭连接。 这样就避免了出问题的客户端无限制地占有一个连接。默认值是 1 分钟(1m)。这个参数只能在服务器命令行 上或者在 kingbase.conf 文件中设置。 password_encryption 属性 描述 类型 enum 默认值 md5 级别 USER---用户级 当在 CREATE ROLE 或者 ALTER ROLE 中指定了口令时,这个参数决定用于加密该口令的算法。默认值是 scram-sha-256。目前支持的口令加密算法有 scram-sha-256 、md5 、sm3 、scram-sm3 、sm4 。 注意老的客户端可能缺少对 SCRAM 认证机制的支持,因此无法使用用 SCRAM-SHA-256 加密的口令。详情请 参考 口令加密认证。 krb_server_keyfile 属性 描述 类型 string 默认值 ’’ 级别 SIGHUP---会话级 17 第 2 章 服务器配置参数 设置 Kerberos 服务器密钥文件的位置。详情请参考 GSSAPI 认证。这个参数只能在 kingbase.conf 文件中或 者服务器命令行上设置。 krb_caseins_users 属性 描述 类型 boolean 默认值 off 级别 SIGHUP---会话级 设置是否应该以大小写不敏感的方式对待 GSSAPI 用户名。默认值是 off(大小写敏感)。这个参数只能在 kingbase.conf 文件中或者服务器命令行上设置。 db_user_namespace 属性 描述 类型 boolean 默认值 off 级别 SIGHUP---会话级 这个参数启用针对每个数据库的用户名。这个参数默认是关掉的。这个参数只能在 kingbase.conf 文件中或者 服务器命令行上设置。 如果这个参数为打开, 应该把用 户创建成 “username@dbname“的形式。当一 个连接客户端传来 “user- name“时,@ 和数据库实例名会被追加到用户名并且服务器会查找这个与数据库相关的用户名。注意在 SQL 环 境中用含有 @ 的名称创建用户时,需要把用户名放在引号内。 在这个参数被启用时,仍然可以创建平常的全局用户。而在客户端中指定这种用户时只需要简单地追加 @,例 如 joe@。在服务器查找该用户名之前,@ 会被剥离掉。 db_user_namespace 会导致客户端和服务器的用户名表达形式不同。认证检查总是会以服务器的用户名表达形 式来完成,因此认证方法必须针对服务器用户名而不是客户端用户名来配置。由于 md5 方法在客户端和服务器 两端都使用用户名作为 salt,md5 不能与 db_user_namespace 同时使用。 注意: 这种特性的目的是在找到完整的解决方案之前提供一种临时的措施。在找到完整解决方案时,这个选项 将被去除。 ca_cert_file 18 第 2 章 服务器配置参数 属性 描述 类型 string 默认值 ’’ 级别 KINGBASE---实例级 证书认证时,用于指定 ca 证书的名字。 cert_type 属性 描述 类型 string 默认值 ’’ 级别 KINGBASE---实例级 证书认证时,用于指定证书登录算法,取值:rsa、sm2。 2.4.3 SSL 有关设置 SSL 的更多信息请参考 传输加密。 ssl 属性 描述 类型 boolean 默认值 off 级别 SIGHUP---会话级 启用 SSL 连接。这个参数只能在 kingbase.conf 文件中或者服务器命令行上设置。默认值是 off。 ssl_ca_file 19 第 2 章 服务器配置参数 属性 描述 类型 string 默认值 ’’ 级别 SIGHUP---会话级 指定包含 SSL 服务器证书颁发机构(CA)的文件名。相对路径是相对于数据目录的。这个参数只能在 kingbase.conf 文件中或者服务器命令行上设置。默认值为空,表示没有载入 CA 文件,并且客户端证书验证 没有被执行。 ssl_cert_file 属性 描述 类型 string 默认值 server.crt 级别 SIGHUP---会话级 指定包含 SSL 服务器证书的文件名。相对路径是相对于数据目录的。这个参数只能在 kingbase.conf 文件中 或者服务器命令行上设置。默认值是 server.crt。 ssl_crl_file 属性 描述 类型 string 默认值 ’’ 级别 SIGHUP---会话级 指定包含 SSL 服务器证书撤销列表(CRL)的文件名。其中的相对路径是相对于数据目录的。这个参数只能在 kingbase.conf 文件中或者服务器命令行上设置。默认值是空,表示没有载入 CRL 文件。 ssl_key_file 属性 描述 类型 string 默认值 server.key 级别 SIGHUP---会话级 20 第 2 章 服务器配置参数 指定包含 SSL 服务器私钥的文件名。相对路径是相对于数据目录。这个参数只能在 kingbase.conf 文件中或 者服务器命令行上设置。默认值是 server.key。 ssl_ciphers 属性 描述 类型 string 默认值 HIGH:MEDIUM:+3DES:!aNULL 级别 SIGHUP---会话级 指定一个 SSL 密码列表,用于安全连接。这个设置的语法和所支持的值列表可以参见 OpenSSL 包中的 ciphers 手册页。这个参数只能在 kingbase.conf 文件中或者服务器命令行上设置。默认值是 HIGH:MEDIUM:+3DES:! aNULL。默认值通常是一种合理的选择,除非用户有特定的安全性需求。 默认值的解释: HIGH 使用来自 HIGH 组的密码的密码组(例如 AES, Camellia, 3DES) MEDIUM 使用来自 MEDIUM 组的密码的密码组(例如 RC4, SEED) +3DES OpenSSL 对 HIGH 的默认排序是有问题的,因为它认为 3DES 比 AES128 更高。这是错误的,因为 3DES 提供的安全性比 AES128 低,并且它也更加慢。+3DES 把它重新排序在所有其他 HIGH 和 MEDIUM 密码之后。 !aNULL 禁用不做认证的匿名密码组。这类密码组容易收到中间人攻击,因此不应被使用。 可用的密码组细节可能会随着 OpenSSL 版本变化。可使用命令 openssl ciphers -v 'HIGH:MEDIUM:+3DES: !aNULL'来查看当前安装的 OpenSSL 版本的实际细节。注意这个列表是根据服务器密钥类型在运行时过滤过 的。 ssl_prefer_server_ciphers 属性 描述 类型 boolean 默认值 on 级别 SIGHUP---会话级 指定是否使用服务器的 SSL 密码首选项,而不是用客户端的。这个参数只能在 kingbase.conf 文件中或者服 务器命令行上设置。默认值是 on。 老的 KingbaseES 版本没有这个设置并且总是使用客户端的首选项。这个设置主要用于与那些版本的向后兼容 性。使用服务器的首选项通常会更好,因为服务器更可能会被合适地配置。 ssl_ecdh_curve 21 第 2 章 服务器配置参数 属性 描述 类型 string 默认值 prime256v1 级别 SIGHUP---会话级 指定用在 ECDH 密钥交换中的曲线名称。它需要被所有连接的客户端支持。它不需要与服务器椭圆曲线密钥使 用的曲线相同。这个参数只能在 kingbase.conf 文件中或者服务器命令行上设置。默认值是 prime256v1。 OpenSSL 命名了最常见的曲线:prime256v1 (NIST P-256)、secp384r1 (NIST P-384)、secp521r1 (NIST P521)。openssl ecparam -list_curves 命令可以显示可用曲线的完整列表。不过并不是所有的都在 TLS 中可 用。 ssl_min_protocol_version 属性 描述 类型 enum 默认值 TLSv1 级别 SIGHUP---会话级 设置要使用的最小 SSL/ TLS 协议版本。当前的有效值是:TLSv1、TLSv1.1、TLSv1.2、TLSv1.3。老版本的 OpenSSL 不支持所有的值; 如果选择不支持的设置,将引发错误。TLS 1.0 之前的协议版本 (即 SSL 版本 2 和 3) 总是禁用的。 默认值是 TLSv1,主要支持旧版本的 OpenSSL 库。如果所有软件组件都支持较新的协议版本,则需要将该值 设置为较高的值。 ssl_max_protocol_version 属性 描述 类型 enum 默认值 ’’ 级别 SIGHUP---会话级 设置要使用的最大 SSL/TLS 协议版本。有效值为 ssl_min_protocol_version , 添加一个空字符串,允许任何协 议版本。默认允许任何版本。设置最大协议版本主要用于测试,或者如果某个组件在使用较新的协议时出现问 题,则设置最大协议版本非常有用。 ssl_dh_params_file 22 第 2 章 服务器配置参数 属性 描述 类型 string 默认值 ’’ 级别 SIGHUP---会话级 指定含有用于 SSL 密码的所谓临时 DH 家族的 Diffie-Hellman 参数的文件名。默认值为空,这种情况下将使用 内置的默认 DH 参数。使用自定义的 DH 参数可以降低攻击者破解众所周知的内置 DH 参数的风险。可以用命 令 openssl dhparam -out dhparams.pem 2048 创建自己的 DH 参数文件。这个参数只能在 kingbase.conf 文件中或服务器命令行上进行设置。 ssl_passphrase_command 属性 描述 类型 string 默认值 ’’ 级别 SIGHUP---会话级 设置当需要一个密码(例如一个私钥)来解密 SSL 文件时会调用的一个外部命令。默认情况下,这个参数为 空,表示使用内建的提示机制。 该命令必须将密码打印到标准输出并且以代码 0 退出。在该参数值中,%p 被替换为一个提示字符串(要得到文 字%,应该写成%%)。注意该提示字符串将可能含有空格,因此要确保加上适当的引号。如果输出的末尾有单一 的新行,它会被剥离掉。 该命令实际上并不一定要提示用户输入一个密码。它可以从文件中读取密码、从钥匙链得到密码等等。确保选 中的机制足够安全是用户的责任。 这个参数只能在 kingbase.conf 文件中或服务器命令行上进行设置。 ssl_passphrase_command_supports_reload 属性 描述 类型 boolean 默认值 off 级别 SIGHUP---会话级 这个参数决定在配置重载期间如果一个密钥文件需要口令时,是否也调用 ssl_passphrase_command 设置的密 码命令。如果这个参数为 off (默认),那么在重载期间将忽略 ssl_passphrase_command,如果在此期间需 23 第 2 章 服务器配置参数 要密码则 SSL 配置将不会被重载。对于要求一个 TTY(当服务器正在运行时可能是不可用的)来进行提示的 命令,这种设置是合适的。例如,如果密码是从一个文件中得到的,将这个参数设置为 on 可能是合适的。 这个参数只能在 kingbase.conf 文件中或者服务器命令行上设置。 2.5 资源消耗 2.5.1 内存 shared_buffers 属性 描述 类型 integer 默认值 128MB 级别 KINGBASE---实例级 设置数据库服务器将使用的共享内存缓冲区量。默认通常是 128 兆字节(128MB),但是如果内核设 置不支持(在 initdb 时决定),那么可以会更少。这个设置必须至少为 128 千字节(BLCKSZ 的非默 认值将改变最小值, 最小值为 BLCKSZ 的 16 倍)。不过为了更好的性能,通常会使用明显高于最小 值的设置。 如果有一个专用的 1GB 或更多内存的数据库服务器,一个合理的 shared_buffers 开始值是系统内 存的 25%。即使更大的 shared_buffers 有效,也会造成一些工作负载,但因为 KingbaseES 同样依 赖操作系统的高速缓冲区,将 shared_buffers 设置为超过 40% 的 RAM 不太可能比一个小点值工作 得更好。为了能把对写大量新的或改变的数据的处理分布在一个较长的时间段内,shared_buffers 更大的设置通常要求对 max_wal_size 也做相应增加。 如果系统内存小于 1GB,一个较小的 RAM 百分数是合适的,这样可以为操作系统留下足够的空间。 huge_pages 属性 描述 类型 enum 默认值 try 级别 KINGBASE---实例级 控制是否为主共享内存区域请求巨型页。有效值是 try(默认)、on 以及 off。如果 huge_pages 被设 置为 try,则服务器将尝试请求巨型页,但是如果失败会退回到默认的方式。如果为 on,请求巨型页失 24 第 2 章 服务器配置参数 败将使得服务器无法启动。如果为 off,则不会请求巨型页。 当前,只有 Linux 和 Windows 上支持这个设置。在其他系统上这个参数被设置为 try 时,它会被忽略。 巨型页面的使用会导致更小的页面表以及花费在内存管理上的 CPU 时间更少,从而提高性能。 巨型页在 Windows 上被称为大页面。要使用大页面,需要为运行 KingbaseES 的 Windows 用户账号分 配 Lock Pages in Memory 的用户权限。可以使用 Windows 的组策略工具(gpedit.msc)来分配用户权限 Lock Pages in Memory。为了在命令窗口以单进程(而不是 Windows 服务)的方式启动数据库服务器,命 令窗口必须以管理员身份运行或者禁用用户访问控制(UAC)。当 UAC 被启用时,普通的命令窗口会在 启动时收回用户权限 Lock Pages in Memory。 注意这种设置仅影响主共享内存区域。Linux、FreeBSD 以及 Illumos 之类的操作系统也能为普通内存分 配自动使用巨型页(也被称为“超级”页或者“大”页面),而不需要来自 KingbaseES 的显式请求。在 Linux 上,这被称为“transparent huge pages”(THP,透明巨型页)。已知这种特性对某些 Linux 版本 上的某些用户会导致 KingbaseES 的性能退化,因此当前并不鼓励使用它(与 huge_pages 的显式使用不 同)。 temp_buffers 属性 描述 类型 integer 默认值 8MB 级别 USER---用户级 设置每个数据库会话使用的临时缓冲区的最大数目。这些都是会话的本地缓冲区,只用于访问临时表。默认是 8 兆字节(8MB)。这个设置可以在独立的会话内部被改变,但是只有在会话第一次使用临时表之前才能改变; 在会话中随后企图改变该值是无效的。 一个会话将按照 temp_buffers 给出的限制根据需要分配临时缓冲区。如果在一个并不需要大量临时缓冲区的 会话里设置一个大的数值,其开销只是一个缓冲区描述符,或者说 temp_buffers 每增加一则增加大概 64 字 节。不过,如果一个缓冲区被实际使用,那么它就会额外消耗 8192 字节(或者 BLCKSZ 字节)。 max_prepared_transactions 属性 描述 类型 integer 默认值 0 级别 KINGBASE---实例级 设置可以同时处于“prepared”状态的事务的最大数目。把这个参数设置为零(这是默认设置)将禁用预备事 务特性。这个参数只能在服务器启动时设置。 25 第 2 章 服务器配置参数 如果不使用预备事务,可以把这个参数设置为零来防止意外创建预备事务。如果正在使用预备事务,需要把 max_prepared_transactions 至少设置为 max_connections 一样大,因此每一个会话可以有一个预备事务待 处理。 当运行一个后备服务器时,这个参数必须至少与主服务器上的一样大。否则,后备服务器上将不会执行查询。 work_mem 属性 描述 类型 integer 默认值 4MB 级别 USER---用户级 指定在写到临时磁盘文件之前被内部排序操作和哈希表使用的内存量。该值默认为四兆字节(4MB)。注意对于 一个复杂查询,可能会并行运行好几个排序或者哈希操作;每个操作都会被允许使用这个参数指定的内存量, 然后才会开始写数据到临时文件。同样,几个正在运行的会话可能并发进行这样的操作。因此被使用的总内存 可能是 work_mem 值的好几倍,在选择这个值时一定要记住这一点。ORDER BY、DISTINCT 和归并连接都要用到 排序操作。哈希连接、基于哈希的聚集以及基于哈希的 IN 子查询处理中都要用到哈希表。 maintenance_work_mem 属性 描述 类型 integer 默认值 64MB 级别 USER---用户级 指定在维护性操作(例如 VACUUM、CREATE INDEX 和 ALTER TABLE ADD FOREIGN KEY)中使用的最大的内存 量。其默认值是 64 兆字节(64MB)。因为在一个数据库会话中,一个时刻只有一个这样的操作可以被执行, 并且一个数据库安装通常不会有太多这样的操作并发执行,把这个数值设置得比 work_mem 大很多是安全的。 更大的设置可以改进清理和恢复数据库转储的性能。 注意当自动清理运行时,可能会分配最多达这个内存的 autovacuum_max_workers 倍,因此要小心不要把该默 认值设置得太高。通过独立地设置 autovacuum_work_mem 可能会对控制这种情况有所帮助。 autovacuum_work_mem 26 第 2 章 服务器配置参数 属性 描述 类型 integer 默认值 -1 级别 SIGHUP---会话级 指定每个自动清理工作者进程能使用的最大内存量。其默认值为 -1,表示转而使用 maintenance_work_mem 的值。当运行在其他上下文环境中时,这个设置对 VACUUM 的行为没有影响。 max_stack_depth 属性 描述 类型 integer 默认值 2MB 级别 SUPERUSER---超级用户级 指定服务器的执行堆栈的最大安全深度。这个参数的理想设置是由内核强制的实际栈尺寸限制(ulimit -s 所 设置的或者本地等价物),减去大约一兆字节的安全边缘。需要这个安全边缘是因为在服务器中并非所有例程 都检查栈深度,只是在关键的可能递规的例程中才进行检查。默认设置是两兆字节(2MB),这个值相对比较小 并且不可能导致崩溃。但是,这个值可能太小了,以至于无法执行复杂的函数。只有超级用户可以修改这个设 置。 把 max_stack_depth 参数设置得高于实际的内核限制将意味着一个失控的递归函数可能会导致一个独立的后端 进程崩溃。在 KingbaseES 能够检测内核限制的平台上,服务器将不允许把这个参数设置为一个不安全的值。 不过,并非所有平台都能提供该信息,因此要小心设置此值。 shared_memory_type 属性 描述 类型 enum 默认值 mmap 级别 KINGBASE---实例级 指定服务器应该用于主共享内存区域的共享内存实现,该区域包含 KingbaseES 的共享缓冲区和其他共享数 据。可能的值是 mmap (为匿名共享内存分配使用 mmap),sysv (为系统 V 分配共享内存 shmget) 和 windows (为 Windows 共享内存)。并非所有平台都支持所有值;第一个受支持的选项是该平台的默认选项。使用 sysv 选项在任何平台上都不是默认的,这通常是不鼓励的,因为它通常需要非默认的内核设置来允许大量的分配 (参 考 系统全局区配置). 27 第 2 章 服务器配置参数 dynamic_shared_memory_type 属性 描述 类型 enum 默认值 posix 级别 SUPERUSER---超级用户级 指定服务器应该使用的动态共享内存实现。可能的值是 posix(用于使用 shm_open 分配的 POSIX 共享内 存)、sysv (用于通过 shmget 分配的 System V 共享内存)、windows(用于 Windows 共享内存)、mmap (使用存储在数据目录中的内存映射文件模拟共享内存)。并非所有平台上都支持所有值,平台上第一个支持 的选项就是其默认值。在任何平台上 mmap 选项都不是默认值,通常不鼓励使用它,因为操作系统会反复地把 修改过的页面写回到磁盘上,从而增加了系统的 I/O 负载。不过当 sys_dynshmem 目录被存储在一个 RAM 盘 时或者没有其他共享内存功能可用时,它还是有用的。 copy_buffered_bytes 属性 描述 类型 integer 默认值 65535B 级别 USER---用户级 设置 Copy From 刷新缓冲区的大小。如果存储的元组的大小超过设置的缓冲区大小,则刷新缓冲区,将数据写 入相应的表中。 2.5.2 磁盘 temp_file_limit 属性 描述 类型 integer 默认值 -1 级别 SUPERUSER---超级用户级 指定一个进程能用于临时文件(如排序和哈希临时文件,或者用于保持游标的存储文件)的最大磁盘空间量。 一个试图超过这个限制的事务将被取消。这个值以千字节计,并且-1(默认值)意味着没有限制。只有超级用 户能够修改这个设置。 28 第 2 章 服务器配置参数 这个设置约束着一个给定 KingbaseES 进程在任何瞬间所使用的所有临时文件的总空间。应该注意的是,与在 查询执行中在幕后使用的临时文件相反,显式临时表所用的磁盘空间不被这个设置所限制。 2.5.3 内核资源使用 max_files_per_process 属性 描述 类型 integer 默认值 1000 级别 KINGBASE---实例级 设置每个服务器子进程允许同时打开的最大文件数目。默认是 1000 个文件。如果内核强制一个安全的针对每个 进程的限制,则不需要设置此值。但是在一些平台上(特别是大多数 BSD 系统),如果很多进程都尝试打开很 多文件,内核将允许独立进程打开比个系统真正可以支持的数目大得多得文件数。如果返回“Too many open files”这样的失败提示信息,可尝试减小这个设置。这个参数只能在服务器启动时设置。 2.5.4 基于代价的清理延迟 在 VACUUM 和 ANALYZE 命令的执行过程中,系统维持着一个内部计数器来跟踪各种被执行的 I/ O 操作的估算开销。当累计的代价达到一个限制(由 vacuum_cost_limit 指定),执行这些操作的进程将按照 vacuum_cost_delay 所指定的休眠一小段时间。然后它将重置计数器并继续执行。 这个特性的出发点是允许管理员降低这些命令对并发的数据库活动产生的 I/O 影响。在很多情况下,VACUUM 和 ANALYZE 等维护命令能否快速完成并不重要,而非常重要的是这些命令不会对系统执行其他数据库操作的能力产生显 著的影响。基于代价的清理延迟提供了一种方式让管理员能够保证这一点。 对于手动发出的 VACUUM 命令,该特性默认被禁用。要启用它,只要把 vacuum_cost_delay 变量设为一个非零 值。 vacuum_cost_delay 属性 描述 类型 real 默认值 0 级别 USER---用户级 29 第 2 章 服务器配置参数 进程超过代价限制后将休眠的时间长度,以毫秒计。其默认值为 0,这将禁用基于代价的清理延迟特性。正值 将启用基于代价的清理。 在 使 用 基 于 代 价 的 清 理 时,vacuum_cost_delay 的 合 适 值 通 常 很 小, 可 能 不 到 1 毫 秒。 虽 然 可 以 将 vacuum_cost_delay 设置为毫秒级的值,但是在较老的平台上可能无法准确地测量这种延迟。在这样的 平台上,增加 VACUUM 的节流资源消耗超过 1ms 需要改变其他的真空成本参数。尽管如此,也应该保持 vacuum_cost_delay 的大小与平台一致;大的延迟是没有帮助的。 vacuum_cost_page_hit 属性 描述 类型 integer 默认值 1 级别 USER---用户级 清理一个在共享缓存中找到的缓冲区的估计代价。它表示锁住缓冲池、查找共享哈希表和扫描页内容的代价。 默认值为 1。 vacuum_cost_page_miss 属性 描述 类型 integer 默认值 10 级别 USER---用户级 清理一个必须从磁盘上读取的缓冲区的代价。它表示锁住缓冲池、查找共享哈希表、从磁盘读取需要的块以及 扫描其内容的代价。默认值为 10。 vacuum_cost_page_dirty 属性 描述 类型 integer 默认值 20 级别 USER---用户级 当清理修改一个之前干净的块时需要花费的估计代价。它表示再次把脏块刷出到磁盘所需要的额外 I/O。默认 值为 20。 30 第 2 章 服务器配置参数 vacuum_cost_limit 属性 描述 类型 integer 默认值 200 级别 USER---用户级 将导致清理进程休眠的累计代价。默认值为 200。 注意: 有些操作会保持关键性的锁,这样可以尽快完成。基于代价的清理延迟在这类操作期间不会发生。因此有可能 代价会累计至大大超过指定的限制。 2.5.5 后台写入器 有一个独立的服务器进程,叫做后台写入器,它的功能就是发出写“脏”(新的或修改过的)共享缓冲区的命 令。它写出共享缓冲区,这样让处理用户查询的服务器进程很少或者永不等待写动作的发生。不过,后台写入器确实 会增加 I/O 的总负荷,因为虽然在每个检查点间隔中一个重复弄脏的页面可能只会写出一次,但在同一个间隔中后台 写入器可能会把它写出好几次。在这一小节讨论的参数可以被用于调节本地需求的行为。 bgwriter_delay 属性 描述 类型 integer 默认值 200ms 级别 SIGHUP---会话级 指定后台写入器活动轮次之间的延迟。在每个轮次中,写入器都会为一定数量的脏缓冲区发出写操作(可以用 下面的参数控制)。然后它就休眠 bgwriter_delay 毫秒,然后重复动作。默认值是 200 毫秒(200ms)。注意 在许多系统上,休眠延迟的有效解析度是 10 毫秒;因此,为 bgwriter_delay 设置一个不是 10 的倍数的值与 把它设置为下一个更高的 10 的倍数是一样的效果。这个选项只能在服务器命令行上或者在 kingbase.conf 文 件中设置。 bgwriter_lru_maxpages 31 第 2 章 服务器配置参数 属性 描述 类型 integer 默认值 100 级别 SIGHUP---会话级 在每个轮次中,不超过这么多个缓冲区将被后台写入器写出。把这个参数设置为零可禁用后台写出(注意被一 个独立、专用辅助进程管理的检查点不受影响)。默认值是 100 个缓冲区。这个参数只能在 kingbase.conf 文 件中或在服务器命令行上设置。 bgwriter_lru_multiplier 属性 描述 类型 real 默认值 2.0 级别 SIGHUP---会话级 每一轮次要写的脏缓冲区的数目基于最近几个轮次中服务器进程需要的新缓冲区的数目。最近所需的平均值乘 以 bgwriter_lru_multiplier 可以估算下一轮次中将会需要的缓冲区数目。脏缓冲区将被写出直到有很多干 净可重用的缓冲区(然而,每一轮次中写出的缓冲区数不超过 bgwriter_lru_maxpages)。因此,设置为 1.0 表示一种“刚刚好的”策略,这种策略会写出正好符合预测值的数目的缓冲区。更大大的值可以为需求高峰 提供某种缓冲,而更小的值则需要服务进程来处理一些写出操作。默认值是 2.0。这个参数只能在 kingbase. conf 文件中或在服务器命令行上设置。 bgwriter_flush_after 属性 描述 类型 integer 默认值 8KB 级别 SIGHUP---会话级 不管何时 bgwriter 写入了超过 bgwriter_flush_after 字节,尝试强制 OS 把这些写发送到底层存储上。这样 做将限制内核页缓存中脏数据的量,降低了在检查点末尾发出一个 fsync 时或者 OS 在后台大批量写回数据时卡 住的可能性。那常常会导致大幅度压缩的事务延迟,但是也有一些情况(特别是负载超过 shared_buffers 但小 于 OS 页面高速缓存)的性能会降低。这种设置可能会在某些平台上没有效果。合法的范围在 0(禁用受控写 回)和 2MB 之间。Linux 上的默认值是 8kB,其他平台上是 0(如果 BLCKSZ 不是 8kB,则默认值和最大值会 按比例缩放至这个值)。这个参数只能在 kingbase.conf 文件中或者服务器命令行上设置。 32 第 2 章 服务器配置参数 较小的 bgwriter_lru_maxpages 和 bgwriter_lru_multiplier 可以降低由后台写入器造成的额外 I/O 开销。 但更可能的是,服务器进程将必须自己发出写入操作,这会延迟交互式查询。 2.5.6 异步行为 effective_io_concurrency 属性 描述 类型 integer 默认值 1 级别 USER---用户级 设置 KingbaseES 可以同时被执行的并发磁盘 I/O 操作的数量。调高这个值,可以增加任何单个 KingbaseES 会话试图并行发起的 I/O 操作的数目。允许的范围是 1 到 1000,或 0 表示禁用异步 I/O 请求。当前这个设置 仅影响位图堆扫描。 对于磁盘驱动器,这个设置的一个很好的出发点是组成一个被用于该数据库的 RAID 0 条带或 RAID 1 镜像的 独立驱动器数量(对 RAID 5 而言,校验驱动器不计入)。但是,如果数据库经常忙于在并发会话中发出的多 个查询,较低的值可能足以使磁盘阵列繁忙。比保持磁盘繁忙所需的值更高的值只会造成额外的 CPU 开销。 SSD 以及其他基于内存的存储常常能处理很多并发请求,因此它们的最佳值可能是数百。 异步 I/O 依赖于一个有效的 posix_fadvise 函数(一些操作系统可能没有)。如果不存在这个函数,将这个 参数设置为除 0 之外的任何东西将导致错误。在一些操作系统上(如 Solaris)虽然提供了这个函数,但它不会 做任何事情。 在支持的系统上默认值为 1,否则为 0。对于一个特定表空间中的表,可以通过设定该表空间的同名参数(见 ALTER TABLESPACE )可以覆盖这个值。 max_worker_processes 属性 描述 类型 integer 默认值 8 级别 KINGBASE---实例级 设置系统能够支持的后台进程的最大数量。这个参数只能在服务器启动时设置。默认值为 8。 在运行一个后备服务器时,必须把这个参数设置为等于或者高于主控服务器上的值。否则,后备服务器上可能 不会允许查询。 33 第 2 章 服务器配置参数 在 更 改 这 个 值 时, 考 虑 也 对 max_parallel_workers 、max_parallel_maintenance_workers 以及 max_parallel_workers_per_gather 进行调整。 max_parallel_workers_per_gather 设 置 单 个 Gather 属性 描述 类型 integer 默认值 2 级别 USER---用户级 或 者 Gather Merge 节 点 能 够 开 始 的 工 作 者 的 最 大 数 量。 并 行 工 作 者 会 从 max_worker_processes 建立的进程池中取得,数量由 max_parallel_workers 限制。注意所要求的工作者 数量在运行时可能实际无法被满足。如果这种事情发生,该计划将会以比预期更少的工作者运行,这可能会不 太高效。默认值是 2。把这个值设置为 0 将会禁用并行查询执行。 注意并行查询可能消耗比非并行查询更多的资源,因为每一个工作者进程时一个完全独立的进程,它对系统产 生的影响大致和一个额外的用户会话相同。在为这个设置选择值时,以及配置其他控制资源利用的设置(例如 work_mem)时,应该把这个因素考虑在内。work_mem 之类的资源限制会被独立地应用于每一个工作者,这意 味着所有进程的总资源利用可能会比单个进程时高得多。例如,一个使用 4 个工作者的并行查询使用的 CPU 时 间、内存、I/O 带宽可能是不使用工作者时的 5 倍之多。 max_parallel_maintenance_workers 属性 描述 类型 integer 默认值 2 级别 USER---用户级 设置单一工具性命令能够启动的并行工作者的最大数目。当前,唯一一种支持使用并行工作者的工具性命令是 CREATE INDEX,并且只有在构建 B-树索引时才能并行。并行工作者从由 max_worker_processes 创建的进程池 中取出,数量由 max_parallel_workers 控制。注意实际在运行时所请求数量的工作者可能不可用。如果发生这 种情况,工具性操作将使用比预期数量少的工作者运行。默认值为 2。将这个值设置为 0 可以禁用工具性命令 对并行工作者的使用。 注意并行工具性命令不应该消耗比同等数量非并行操作更多的内存。这种策略与并行查询不同,并行查询的资 源限制通常是应用在每个工作者进程上。并行工具性命令把资源限制 maintenance_work_mem 当作对整个工具 性命令的限制,而不管其中用到了多少个并行工作者进程。不过,并行工具性命令实际上可能仍会消耗更多的 CPU 资源和 I/O 带宽。 max_parallel_workers 34 第 2 章 服务器配置参数 属性 描述 类型 integer 默认值 8 级别 USER---用户级 设置系统为并行操作所支持的工作者的最大数量。默认值为 8。在增加或者减小这个值时,也要考虑对 max_parallel_maintenance_workers 以及 max_parallel_workers_per_gather 进行调整。此外,要注意将这个 值设置得大于 max_worker_processes 将不会产生效果,因为并行工作者进程都是从 max_worker_processes 所 建立的工作者进程池中取出来的。 backend_flush_after 属性 描述 类型 integer 默认值 0 级别 USER---用户级 只要一个后端写入了超过 backend_flush_after 字节,就会尝试强制 OS 把这些写发送到底层存储。这样做 将会限制内核页高速缓存中的脏数据数量,降低在检查点末尾发出 fsync 时或者 OS 在后台大批写回数据时卡 住的可能性。这常常会导致极大降低的事务延迟,但是也有一些情况中(特别是负载超过 shared_buffers 但低 于 OS 的页面高速缓存时),性能可能会下降。这个设置可能在某些平台上没有效果。合法的范围位于 0(禁 用受控写回)和 2MB 之间。默认是 0(即没有强制写回)。(如果 BLCKSZ 不是 8kB,最大值会按比例缩放到 它)。 old_snapshot_threshold 属性 描述 类型 integer 默认值 -1 级别 KINGBASE---实例级 设置在使用快照时,一个快照可以被使用而没有发生 snapshot too old 错误风险的最小时间。这个参数只能 在服务器启动时设置。 如果超过该阈值,旧数据将被清理掉。这可以有助于阻止长时间使用的快照造成的快照膨胀。为了阻止由于本 来对该快照可见的数据被清理导致的不正确结果,当快照比这个阈值更旧并且该快照被用来读取一个该快照建 立以来被修改过的页面时,将会产生一个错误。 35 第 2 章 服务器配置参数 值为-1 会禁用这个特性,并且这个值是默认值。对于生产工作有用的值可能从几个小时到几天。该设置将被转 换成分钟粒度,并且小数字(例如 0 或者 1min)被允许只是因为它们有时对于测试有用。虽然允许高达 60d 的设置,但是请注意很多负载情况下,很短的时间帧里就可能发生极大的膨胀或者事务 ID 回卷。 当 这 个 特 性 被 启 用 时, 关 系 末 尾 的 被 清 出 的 空 间 不 能 被 释 放 给 操 作 系 统, 因 为 那 可 能 会 移 除 用 于 检 测 snapshot too old 情况所需的信息。所有分配给关系的空间还将与该关系关联在一起便于重用,除非它 们被显式地释放(例如,用 VACUUM FULL)。 这个设置不会尝试保证在任何特殊情况下都会生成错误。事实上,如果(例如)可以从一个已经物化了一个结 果集的游标中生成正确的结果,即便被引用表中的底层行已经被清理掉也不会生成错误。某些表不能被过早地 安全清除,并且因此将不受这个设置的影响,例如系统目录。对于这些表,这个设置将不能降低膨胀,也不能 降低在扫描时产生 snapshot too old 错误的可能性。 2.5.7 全局临时表 max_pending_gtfiles_per_backend 属性 描述 类型 integer 默认值 32 级别 KINGBASE---实例级 设置一个会话内最多允许的全局临时表数据和索引的最大文件数量,默认值为 32,最小值为 1,最大值为 1024。这个文件数量并不是实际磁盘看到的文件数目,而是一些依附于这个表的扩展关系文件,比如索引、大 对象等。一般情况下,一个全局临时表只会占用参数中一个配额,如果为创建临时表创建了索引,或者全局临 时表中包含了大对象列,则会占用多个配额,具体取决于索引和大对象的数量。这个参数只能在服务器启动时 设置。设置过大会造成资源浪费。 2.6 预写式日志 2.6.1 设置 wal_level 36 第 2 章 服务器配置参数 属性 描述 类型 enum 默认值 replica 级别 KINGBASE---实例级 wal_level 决定多少信息写入到 WAL 中。默认值是 replica,它会写入足够的数据以支持 WAL 归档和复制, 包括在后备服务器上运行只读查询。minimal 会去掉除从崩溃或者立即关机中进行恢复所需的信息之外的所有 记录。最后,logical 会增加支持逻辑解码所需的信息。每个层次包括所有更低层次记录的信息。 在 minimal 级别中,某些批量操作的 WAL 日志可以被安全地跳过,这可以使那些操作更快。这种优化可以应 用的操作包括: CREATE TABLE AS CREATE INDEX CLUSTER COPY 到在同一个事务中被创建或截断的表中 但最少的 WAL 不会包括足够的信息来从基础备份和 WAL 日志中重建数据,因此,要启用 WAL 归档 (archive_mode )和流复制,必须使用 replica 或更高级别。 在 logical 层,与 replica 相同的信息会被记录,外加上允许从 WAL 抽取逻辑修改集所需的信息。使用级别 logical 将增加 WAL 容量,特别是如果为了 REPLICA IDENTITY FULL 配置了很多表并且执行了很多 UPDATE 和 DELETE 语句时。 在 V8R2 之前的版本中,这个参数也允许值 archive 和 hot_standby。现在仍然接受这些值,但是它们会被 映射到 replica。 这个参数可以在服务器启动时设置,也可以在线设置。使用在线设置时,此参数只能在 replica 和 logical 两个级别之间切换。如果 old_snapshot_threshold >= 0 或逻辑复制槽存在,不允许在线设置此参数。 fsync 属性 描述 类型 boolean 默认值 on 级别 SIGHUP---会话级 如果打开这个参数,KingbaseES 服务器将尝试确保更新被物理地写入到磁盘,做法是发出 fsync() 系统调用 37 第 2 章 服务器配置参数 或者使用多种等价的方法(见 wal_sync_method )。这保证了数据库集簇在一次操作系统或者硬件崩溃后能 恢复到一个一致的状态。 虽然关闭 fsync 常常可以得到性能上的收益,但当发生断电或系统崩溃时可能造成不可恢复的数据损坏。因 此,只有在能很容易地从外部数据中重建整个数据库时才建议关闭 fsync。 能安全关闭 fsync 的环境的例子包括从一个备份文件中初始加载一个新数据库集簇、使用一个数据库集簇来在 数据库被删掉并重建之后处理一批数据,或者一个被经常重建并却不用于失效备援的只读数据库克隆。单独的 高质量硬件不足以成为关闭 fsync 的理由。 当把 fsync 从关闭改成打开时,为了可靠的恢复,需要强制在内核中的所有被修改的缓冲区进入持久化存储。 这可以在多个时机来完成:在集簇被关闭时或在 fsync 因为运行 initdb --sync-only 而打开时、运行 sync 时、卸载文件系统时或者重启服务器时。 在很多情况下,为不重要的事务关闭 synchronous_commit 可以提供很多关闭 fsync 的潜在性能收益,并不会 有的同时,关闭 fsync 可以提供很多潜在的性能优势,而不会有伴随着的数据损坏风险。 fsync 只 能 在 kingbase.conf 文 件 中 或 在 服 务 器 命 令 行 上 设 置。 如 果 关 闭 这 个 参 数, 请 也 考 虑 关 闭 full_page_writes 。 synchronous_commit 属性 描述 类型 enum 默认值 on 级别 USER---用户级 指定在命令返回“success”指示给客户端之前,一个事务是否需要等待 WAL 记录被写入磁盘。合法的值是 on、remote_apply、remote_write、local 和 off。默认的并且安全的设置是 on。当设置为 off 时,在向 客户端报告成功和真正保证事务不会被服务器崩溃威胁之间会有延迟(最大的延迟是 wal_writer_delay 的三 倍)。不同于 fsync ,将这个参数设置为 off 不会产生数据库不一致性的风险:一个操作系统或数据库崩溃可 能会造成一些最近据说已提交的事务丢失,但数据库状态是一致的,就像这些事务已经被干净地中止。因此, 当性能比完全确保事务的持久性更重要时,关闭 synchronous_commit 可以作为一个有效的代替手段。 如果 synchronous_standby_names 为非空,这个参数也控制事务提交是否将等待它们的 WAL 记录被复制到后 备服务器上。当这个参数被设置为 on 时,直到来自于当前同步的后备服务器的回复指示它们已经收到了事务 的提交记录并将其刷入了磁盘,主服务器上的事务才会提交。这保证事务将不会被丢失,除非主服务器和所有 同步后备都遭受到了数据库存储损坏的问题。当被设置为 remote_apply 时,提交将会等待,直到来自当前的 同步后备的回复指示它们已经收到了该事务的提交记录并且已经应用了该事务,这样该事务才变得对后备上的 查询可见。当这个参数被设置为 remote_write 时,提交将等待,直到来自当前的同步后备的回复指示它们已 经收到了该事务的提交记录并且已经把该记录写出到它们的操作系统,这种设置足以保证数据在后备服务器的 KingbaseES 实例崩溃时得以保存,但是不能保证后备服务器遭受操作系统级别崩溃时数据能被保持,因为数据 不一定必须要在后备机上达到稳定存储。最后,设置 local 会导致提交等待本地刷写到磁盘而不是复制完成。 在使用同步复制时这通常不是我们想要的效果,但是为了完整性,还是提供了这样一个选项。 38 第 2 章 服务器配置参数 如果 synchronous_standby_names 为空,设置 on、remote_apply、remote_write 和 local 都提供了同样的 同步级别:事务提交只等待本地刷写磁盘。 这个参数可以随时被修改;任何一个事务的行为由其提交时生效的设置决定。因此,可以同步提交一些事务, 同时异步提交其他事务。例如,当默认是相反时,实现一个单一多语句事务的异步提交,在事务中发出 SET LOCAL synchronous_commit TO OFF。 wal_sync_method 属性 描述 类型 enum 默认值 fsync 级别 SIGHUP---会话级 用来向强制 WAL 更新到磁盘的方法。如果 fsync 是关闭的,那么这个设置就不相关,因为 WAL 文件更新将 根本不会被强制。可能的值是: • open_datasync(用 open() 选项 O_DSYNC 写 WAL 文件) • fdatasync(在每次提交时调用 fdatasync()) • fsync(在每次提交时调用 fsync()) • fsync_writethrough(在每次提交时调用 fsync(),强制任何磁盘写高速缓存的直通写) • open_sync(用 open() 选项 O_SYNC 写 WAL 文件) open_* 选项也可以使用 O_DIRECT(如果可用)。不是在所有平台上都能使用所有这些选择。默认值是列表中 第一个被平台支持的那个,不过 fdatasync 是 Linux 中的默认值。默认值不一定是最理想的;有可能需要修 改这个设置或系统配置的其他方面来创建一个崩溃-安全的配置,或达到最佳性能。这个参数只能在 kingbase. conf 文件中或在服务器命令行上设置。 full_page_writes 属性 描述 类型 boolean 默认值 on 级别 SIGHUP---会话级 当这个参数为打开时,KingbaseES 服务器在一个检查点之后的页面的第一次修改期间将每个页面的全部内容 写到 WAL 中。这么做是因为在操作系统崩溃期间正在处理的一次页写入可能只有部分完成,从而导致在一个 磁盘页面中混合有新旧数据。在崩溃后的恢复期间,通常存储在 WAL 中的行级改变数据不足以完全恢复这样 一个页面。存储完整的页面映像可以保证页面被正确存储,但代价是增加了必须被写入 WAL 的数据量(因为 39 第 2 章 服务器配置参数 WAL 重放总是从一个检查点开始,所以在检查点后每个页面的第一次改变时这样做就够了。因此,一种减小全 页面写开销的方法是增加检查点间隔参数值)。 把这个参数关闭会加快正常操作,但是在系统失败后可能导致不可恢复的数据损坏,或者静默的数据损坏。其 风险类似于关闭 fsync,但是风险较小。并且只有在可关闭 fsync 的情况下才应该关闭它。 关闭这个选项并不影响用于时间点恢复(PITR)的 WAL 归档使用。 这个参数只能在 kingbase.conf 文件中或在服务器命令行上设置。默认值是 on。 wal_log_hints 属性 描述 类型 boolean 默认值 off 级别 KINGBASE---实例级 当这个参数为 on 时,KingbaseES 服务器一个检查点之后页面被第一次修改期间把该磁盘页面的整个内容都写 入 WAL,即使对所谓的提示位做非关键修改也会这样做。 如果启用了数据校验和,提示位更新总是会被 WAL 记录并且这个设置会被忽略。可以使用这个设置测试如果 数据库启用了数据校验和,会有多少额外的 WAL 记录发生。 这个参数只能在服务器启动时设置。默认值是 off。 wal_compression 属性 描述 类型 boolean 默认值 off 级别 SUPERUSER---超级用户级 当这个参数为 on 时,如果 full_page_writes 为打开或者处于基础备份期间,KingbaseES 服务器会压缩写入到 WAL 中的完整页面镜像。压缩页面镜像将在 WAL 重放时被解压。默认值为 off。只有超级用户可以更改这个 设置。 打开这个参数可以减小 WAL 所占的空间且无需承受不可恢复的数据损坏风险,但是代价是需要额外的 CPU 开 销以便在 WAL 记录期间进行压缩以及在 WAL 重放时解压。 wal_buffers 40 第 2 章 服务器配置参数 属性 描述 类型 integer 默认值 -1 级别 KINGBASE---实例级 用于还未写入磁盘的 WAL 数据的共享内存量。默认值 -1 选择等于 shared_buffers 的 1/32 的尺寸(大约 3%),但是不小于 64kB 也不大于 WAL 段的尺寸(通常为)。如果自动的选择太大或太小可以手工设置该 值,但是任何小于 32kB 的正值都将被当作 32kB。这个参数只能在服务器启动时设置。 在每次事务提交时,WAL 缓冲区的内容被写出到磁盘,因此极大的值不可能提供显著的收益。不过,把这个值 设置为几个兆字节可以在一个繁忙的服务器(其中很多客户端会在同一时间提交)上提高写性能。由默认设置 -1 选择的自动调节将在大部分情况下得到合理的结果。 wal_writer_delay 属性 描述 类型 integer 默认值 200ms 级别 SIGHUP---会话级 指定 WAL 写入器刷写 WAL 的频繁程度。在刷写 WAL 之后它会睡眠 wal_writer_delay 毫秒,除非被一个 异步提交事务唤醒。假如上一次刷写发生在少于 wal_writer_delay 毫秒以前并且从上一次刷写发生以来产生 了少于 wal_writer_flush_after 字节的 WAL,则 WAL 将只被写入到操作系统而不是被刷到磁盘。默认值 是 200 毫秒(200ms)。注意在很多系统上,有效的睡眠延迟粒度是 10 毫秒,把 wal_writer_delay 设置为 一个不是 10 的倍数的值,其效果和把它设置为大于该值的下一个 10 的倍数产生的效果相同。这个参数只能在 kingbase.conf 文件中或者服务器命令行上设置。 wal_writer_flush_after 属性 描述 类型 integer 默认值 1MB 级别 KINGBASE---实例级 指定 WAL 写入器刷写 WAL 的频繁程度。如果上一次刷写发生在少于 wal_writer_delay 毫秒以前并且从上 一次刷写发生以来产生了少于 wal_writer_flush_after 字节的 WAL,则 WAL 将只被写入到操作系统而不 41 第 2 章 服务器配置参数 是被刷到磁盘。如果 wal_writer_flush_after 被设置为 0,则 WAL 数据会被立即刷写。默认是 1MB。这个 参数只能在 kingbase.conf 文件中或者服务器命令行上设置。 commit_delay 属性 描述 类型 integer 默认值 0 级别 SUPERUSER---超级用户级 在一次 WAL 刷写被发起之前,commit_delay 增加一个时间延迟,以微妙计。如果系统负载足够高,使得在一 个给定间隔内有额外的事务准备好提交,那么通过允许更多事务通过一个单次 WAL 刷写来提交能够提高组提 交的吞吐量。但是,它也把每次 WAL 刷写的潜伏期增加到了最多 commit_delay 微秒。因为如果没有其他事 务准备好提交,就会浪费一次延迟,只有在当一次刷写将要被发起时有至少 commit_siblings 个其他活动事务 时,才会执行一次延迟。另外,如果 fsync 被禁用,则将不会执行任何延迟。默认的 commit_delay 是零(无 延迟)。只有超级用户才能修改这个设置。 在 KingbaseES 的 V8R2 发布之前,commit_delay 的行为不同并且效果更差:它只影响提交,而不是所有 WAL 刷写,并且即使在 WAL 刷写马上就要完成时也会等待一整个配置的延迟。从 KingbaseES V8R2 中开始,第一 个准备好刷写的进程会等待配置的间隔,而后续的进程只等到领先者完成刷写操作。 commit_siblings 属性 描述 类型 integer 默认值 5 级别 USER---用户级 在执行 commit_delay 延迟时,要求的并发活动事务的最小数目。大一些的值会导致在延迟间隔期间更可能有 至少另外一个事务准备好提交。默认值是五个事务。 enable_xlog_insert_lock_free 属性 描述 类型 boolean 默认值 off 级别 USER---用户级 42 第 2 章 服务器配置参数 是否开启 WAL 插入的无锁化优化。开启此参数后,后端进程不在刷写 WAL ,而是等待 WAL 写入器刷写对应 的 WAL 完成。同时,wal_insert 等待事件会变为 wal_flush_wait 等待事件。开启无锁化优化后,WAL 写入器 将会更加积极的刷写,后端进程也会在完成日志复制后,第一时间通知刷写。此参数默认值是 off。这个参数只 能在 kingbase.conf 文件中设置,通过重启生效。启用此参数,将会使 commit_delay,commit_siblings, wal_writer_flush_after 等参数失效。 wal_writer_idle_flush_before_sleep 属性 描述 类型 integer 默认值 200 级别 KINGBASE---实例级 指定 WAL 写入器在多少次空闲刷写后,进入睡眠状态,它会睡眠 wal_writer_delay 毫秒,除非当日志复 制结束后被唤醒。当开启 enable_xlog_insert_lock_free 时才有意义。默认是 200 次。这个参数只能在 kingbase.conf 文件中或者服务器命令行上设置。 2.6.2 检查点 checkpoint_timeout 属性 描述 类型 integer 默认值 5min 级别 SIGHUP---会话级 自动 WAL 检查点之间的最长时间,以秒计。合理的范围在 30 秒到 1 天之间。默认是 5 分钟(5min)。增加 这个参数的值会增加崩溃恢复所需的时间。这个参数只能在 kingbase.conf 文件中或在服务器命令行上设置。 checkpoint_completion_target 属性 描述 类型 real 默认值 0.5 级别 SIGHUP---会话级 43 第 2 章 服务器配置参数 指定检查点完成的目标,作为检查点之间总时间的一部分。默认是 0.5。这个参数只能在 kingbase.conf 文件 中或在服务器命令行上设置。 checkpoint_flush_after 属性 描述 类型 integer 默认值 256KB 级别 SIGHUP---会话级 在执行检查点时,只要有 checkpoint_flush_after 字节被写入,就尝试强制 OS 把这些写发送到底层存 储。这样做将会限制内核页面高速缓存中的脏数据数量,降低在检查点末尾发出 fsync 或者 OS 在后台大 批量写回数据时被卡住的可能性。那常常会导致大幅度压缩的事务延迟,但是也有一些情况(特别是负载超过 shared_buffers 但小于 OS 页面高速缓存)的性能会降低。这种设置可能会在某些平台上没有效果。合法的范围 在 0(禁用强制写回)和 2MB 之间。Linux 上的默认值是 256kB,其他平台上是 0(如果 BLCKSZ 不是 8kB, 则默认值和最大值会按比例缩放到它)。这个参数只能在 kingbase.conf 文件中或者服务器命令行上设置。 checkpoint_warning 属性 描述 类型 integer 默认值 30s 级别 SIGHUP---会话级 如果由于填充 WAL 段文件导致的检查点之间的间隔低于这个参数表示的秒数,那么就向服务器日志写一个消 息(它建议增加 max_wal_size 的值)。默认值是 30 秒(30s)。零则关闭警告。如果 checkpoint_timeout 低于 checkpoint_warning,则不会有警告产生。这个参数只能在 kingbase.conf 文件中或在服务器命令行上 设置。 max_wal_size 属性 描述 类型 integer 默认值 1GB 级别 SIGHUP---会话级 在自动 WAL 检查点之间允许 WAL 增长到的最大尺寸。这是一个软限制,在特殊的情况下 WAL 尺寸可能会 超过 max_wal_size,例如在重度负荷下、archive_command 失败或者高的 wal_keep_segments 设置。默认为 44 第 2 章 服务器配置参数 1 GB。增加这个参数可能导致崩溃恢复所需的时间。这个参数只能在 kingbase.conf 或者服务器命令行中设 置。 min_wal_size 属性 描述 类型 integer 默认值 80MB 级别 SIGHUP---会话级 只要 WAL 磁盘用量保持在这个设置之下,在检查点时旧的 WAL 文件总是被回收以便未来使用,而不是直接 被删除。这可以被用来确保有足够的 WAL 空间被保留来应付 WAL 使用的高峰,例如运行大型的批处理任务。 默认是 80 MB。这个参数只能在 kingbase.conf 或者服务器命令行中设置。 2.6.3 归档 archive_mode 属性 描述 类型 enum 默认值 off 级别 KINGBASE---实例级 当启用 archive_mode 时,可以通过设置 archive_command 命令将完成的 WAL 段发送到归档存储。除用于 禁用的 off 之外,还有两种模式:on 和 always。在普通操作期间,这两种模式之间没有区别,但是当设置为 always 时,WAL 归档器在归档恢复或者后备模式下也会被启用。在 always 模式下,所有从归档恢复的或者 用流复制传来的文件将被(再次)归档。 archive_mode 和 archive_command 是 独 立 的 变 量, 这 样 可 以 在 不 影 响 归 档 模 式 的 前 提 下 修 改 archive_command。这个参数只能在服务器启动时设置。当 wal_level 被设置为 minimal 时,archive_mode 不能被启用。 archive_command 45 第 2 章 服务器配置参数 属性 描述 类型 string 默认值 ’’ 级别 SIGHUP---会话级 本地 shell 命令被执行来归档一个完成的 WAL 文件段。字符串中的任何%p 被替换成要被归档的文件的路径名, 而%f 只被文件名替换(路径名是相对于服务器的工作目录,即集簇的数据目录)。如果要在命令里嵌入一个真 正的% 字符,可以使用%%。有一点很重要,该命令只在成功时返回一个零作为退出状态。 这个参数只能在 kingbase.conf 文件中或在服务器命令行上设置。除非服务器启动时启用了 archive_mode, 否则它会被忽略。如果 archive_mode 被启用时,archive_command 是一个空字符串(默认),WAL 归档会 被临时禁用,但服务器仍会继续累计 WAL 段文件,期待着一个命令被提供。将 archive_command 设置为一个 只返回真但不做任何事的命令(例如/bin/true 或 Windows 上的 REM)实际上会禁用归档,也会打破归档恢复 所需的 WAL 文件链,因此只有在极少数情况下才能用。 archive_timeout 属性 描述 类型 integer 默认值 0 级别 KINGBASE---实例级 archive_command 仅在已完成的 WAL 段上调用。因此,如果服务器只产生很少的 WAL 流量(或产生流量的 周期很长),那么在事务完成和它被安全地记录到归档存储之间将有一个很长的延迟。为了限制未归档数据存 在的时间,可以设置 archive_timeout 来强制服务器来周期性地切换到一个新的 WAL 段文件。当这个参数被 设置为大于零时,只要从上次段文件切换后过了参数所设置的那么多秒并且已经有过任何数据库活动(包括一 个单一检查点),服务器将切换到一个新的段文件(如果没有数据库活动则会跳过检查点)。注意,由于强制 切换而提早关闭的被归档文件仍然与完整的归档文件长度相同。因此,使用非常短的 archive_timeout 是不明 智的—它将占用巨大的归档存储。一分钟左右的 archive_timeout 设置通常比较合理。如果希望数据能被更快 地从主服务器上复制下来,应该考虑使用流复制而不是归档。这个参数只能在 kingbase.conf 文件中或在服务 器命令行上设置。 2.6.4 归档文件恢复 本节描述仅在恢复期间适用的设置。如果希望执行任何后续恢复,则必须重置它们。 “Recovery”包括将服务器用作备用服务器或用于执行目标恢复。通常,备用模式用于提供高可用性和/或读可 伸缩性,而目标恢复用于从数据丢失中恢复。 46 第 2 章 服务器配置参数 要在备用模式下启动服务器,请在数据目录中创建一个名为 standby.signal 的备用文件。服务器将开始 恢复,不会停止恢复时的 WAL 归档,但是将继续尝试通过连接到发送服务器来进行恢复,具体方法是通过 primary_conninfo 设置或使用 restore_command 来获取新的 WAL 段。对于这种模式,本节中的参数是有意义的。 来自恢复目标 的参数也将被应用,但通常在此模式下并不有用。 若 要 以 目 标 恢 复 模 式 启 动 服 务 器, 请 在 数 据 目 录 中 创 建 一 个 名 为 recovery.signal 件 standby.signal 和 recovery.signal 都 被 创 建, 备 用 模 式 优 先。 当 WAL 的 文 件。 如 果 文 归 档 完 全 重 播, 或 者 达 到 recovery_target 时,目标恢复模式结束。在此模式下,来自本节和恢复目标 的参数将被应用。 restore_command 属性 描述 类型 string 默认值 ’’ 级别 KINGBASE---实例级 执行本地 shell 命令来检索 WAL 文件系列的归档段。此参数对于存档恢复是必需的,但对于流式复制是可选 的。字符串中的任何%f 都将被从存档中检索的文件名称替换,而任何%p 都将被服务器上的复制目标路径名称替 换。(路径名相对于当前工作目录,即,集群的数据目录。) 任何%r 都将被包含最后一个有效重启点的文件名称 所代替。这是为了允许恢复可重新启动而必须保留的最早的文件,因此可以使用此信息将存档截断为支持从当 前恢复重新启动所需的最小值。%r 通常只用于温备配置。写%% 将嵌入一个实际的 % 字符。 只有在成功时,命令才返回零退出状态,这一点很重要。命令将被要求提供档案中不存在的文件名; 当这样请求 时,它必须返回非零。示例: restore_command = 'cp /mnt/server/archivedir/%f "%p"' restore_command = 'copy "C:\\server\\archivedir\\%f" "%p"' # Windows 一个例外是, 如果命令终止了一个信号 (除了 SIGTERM, 它用作数据库服务器关闭的一部分) 或者一个错误的外 壳 (如命令未找到),然后恢复将中止,服务器将不会启动。 此参数只能在服务器启动时设置。 archive_cleanup_command 属性 描述 类型 string 默认值 ’’ 级别 SIGHUP---会话级 此可选参数指定将在每个重新开始点执行的 shell 命令。archive_cleanup_command 的目的是提供一种机 47 第 2 章 服务器配置参数 制来清理备用服务器不再需要的旧的归档 WAL 文件。任意%r 用包含最后一个有效重新启动点的文件的名 称替换。这是最早的文件,必须是保持以允许恢复至重新启动,因此,所有%r 之前的文件都可以被安全删 除。此信息可用于将存档截断为支持从当前还原重新启动所需的最小值。sys_archivecleanup 模块通常用于 archive_cleanup_command 对于 single-standby 的配置,例如: archive_cleanup_command = 'sys_archivecleanup /mnt/server/archivedir %r' 但是请注意,如果多个备用服务器从相同的存档目录恢复,则需要确保在任何服务器不再需要 WAL 文件之前 不会删除它们。archive_cleanup_command 通常在温备配置中使用。编写% %,在命令中嵌入一个实际的% 字 符。 如果该命令返回非零退出状态,则将写入警告日志消息。一个例外是,如果命令因一个信号或 shell 错误 (例如 命令未找到) 而终止,将引发一个致命错误。 此参数只能在 kingbase.conf 文件或在服务器命令行中设置。 recovery_end_command 属性 描述 类型 string 默认值 ’’ 级别 SIGHUP---会话级 此参数指定仅在恢复结束时执行一次的 shell 命令。这个参数是可选的。recovery_end_command 的目 的是为复制或恢复后的清理提供一种机制。任何%r 都被包含最后一个有效重启点的文件名称替换,就像 archive_cleanup_command 。 如果该命令返回非零退出状态,则将写入一条警告日志消息,数据库将继续启动。一个例外是,如果命令因信 号或 shell 错误 (例如未找到命令) 而终止,数据库将无法继续启动。 此参数只能在 kingbase.conf 文件或在服务器命令行中设置。 2.6.5 恢复目标 默认情况下,恢复将恢复到 WAL 日志的末尾。以下参数可用于指定较早的停止点。至多 recovery_target、 recovery_target_lsn、recovery_target_name、recovery_target_time 或 recovery_target_xid 中的一个可以 被使用;如果在配置文件中指定了其中一个以上,则会引发错误。这些参数只能在服务器启动时设置。 recovery_target 48 第 2 章 服务器配置参数 属性 描述 类型 string 默认值 immediate 级别 KINGBASE---实例级 此参数指定一旦达到一致状态,即越早恢复越好。从联机备份恢复时,这意味着备份结束的时间点。 从技术上讲,这是一个字符串参数,但是'immediate'是当前唯一允许的值。 recovery_target_name 属性 描述 类型 string 默认值 ’’ 级别 KINGBASE---实例级 此参数指定将执行恢复的指定恢复点 (使用 sys_create_restore_point() 创建)。 recovery_target_time 属性 描述 类型 string 默认值 timestamp 级别 KINGBASE---实例级 此参数指定将进行恢复的时间戳。精确的停止点也会受到 recovery_target_inclusive 影响。 recovery_target_xid 属性 描述 类型 string 默认值 ’’ 级别 KINGBASE---实例级 此参数指定将进行恢复的事务 ID。请记住,虽然在事务开始时按顺序分配事务 id,但事务可以按不同的数 49 第 2 章 服务器配置参数 字顺序完成。将被恢复的事务是那些在指定事务之前提交的事务 (可选包括)。精确的停止点也会受到 recovery_target_inclusive 影响。 recovery_target_lsn 属性 描述 类型 string 默认值 ’’ 级别 KINGBASE---实例级 此参数指定将进行恢复的写前日志位置的 LSN。精确的停止点也会受到 recovery_target_inclusive 影响。使用 系统数据类型 sys_lsn 解析此参数。 以下选项进一步指定恢复目标,并影响到达目标时的情况: recovery_target_inclusive 属性 描述 类型 boolean 默认值 on 级别 KINGBASE---实例级 指定是否仅在指定的恢复目标之后停止 (on), 或者就在恢复目标之前 (off)。适用于当 recovery_target_lsn 、recovery_target_time 或 recovery_target_xid 都是确定的。此设置控制是否将分别具有目标 WAL 位置 (LSN)、提交时间或事务 ID 的事务包含在恢复中。默认是 on。 recovery_target_timeline 属性 描述 类型 string 默认值 latest 级别 KINGBASE---实例级 指定恢复到特定时间线。该值可以是数字时间线 ID 或特殊值。值 current 在执行基本备份时的当前时间线上 恢复。值 latest 恢复到存档中找到的最新时间轴,这在备用服务器中非常有用。latest 是默认的。 通常只需要在复杂的重新恢复情况下设置此参数,在这种情况下,需要返回到在某个时间点恢复之后达到的状 态。 50 第 2 章 服务器配置参数 recovery_target_action 属性 描述 类型 enum 默认值 pause 级别 KINGBASE---实例级 指定服务器到达恢复目标后应采取的操作。默认的是 pause,这意味着恢复将被暂停。promote 表示恢复过程 结束,服务器开始接受连接。最后,shutdown 将在达到恢复目标后停止服务器。 使用 pause 设置的目的是允许对数据库执行查询,以检查这个恢复目标是否是最需要的恢复点。使用 sys_wal_replay_resume() 命令可以恢复暂停状态,然后导致复苏结束。如果此恢复目标不是所需的停止点, 则关闭服务器,将恢复目标设置更改为稍后的目标并重新启动以继续恢复。 shutdown 设置对于在需要的确切重播点准备好实例非常有用。实例仍然能够重播更多的 WAL 记录 (实际上, 在下一次启动它时,必须重播上一次检查点之后的 WAL 记录)。 注意,当 recovery_target_action 被设置为 shutdown 时,recovery.signal 将不会被删除,除非改变配置 或者 recovery.signal 文件被手动删除。 如果没有设置恢复目标,则此设置无效。如果 hot_standby 未启用,则 pause 将执行与 shutdown 相同的设 置。 2.7 复制 这些设置控制内建流复制特性的行为。服务器将可以是主控服务器或后备服务器。主控机能发送数据,而后备机 总是被复制数据的接收者。当使用级联复制时,后备服务器也可以是发送者,同时也是接收者。这些参数主要用于发 送服务器和后备服务器,尽管某些只在主服务器上有意义。如果有必要,设置可以在集群中变化而不出问题。 2.7.1 发送服务器 这些参数可以在任何发送复制数据给一个或多个后备服务器的服务器上设置。主控机总是一个发送服务器,因此 这些参数总是要在主控机上设置。这些参数的角色和含义不会在一个后备机变成主控机后改变。 max_wal_senders 51 第 2 章 服务器配置参数 属性 描述 类型 integer 默认值 10 级别 KINGBASE---实例级 指定来自后备服务器或流式基础备份客户端的并发连接的最大数量(即同时运行 WAL 发送进程的最大数)。 默认值是 10。值 0 意味着禁用复制。突然的流客户端断开连接可能留下一个孤立连接槽(知道达到超时), 因此这个参数应该设置得略高于最大客户端连接数,这样断开连接的客户端可以立刻重新连接。这个参数只能 在服务器启动时被设置。此外,wal_level 必须设置为 replica 或更高级别以允许来自后备服务器的连接。 在运行备用服务器时,必须将此参数设置为与主服务器相同或更高的值。否则,备用服务器将不允许查询。 max_replication_slots 属性 描述 类型 integer 默认值 10 级别 KINGBASE---实例级 指定服务器可以支持的复制槽最大数量。默认值为 10。这个参数只能在服务器启动时设置。将它设置为一个比 当前已有复制槽要少的值会阻碍服务器启动。此外,要允许使用复制槽,wal_level 必须被设置为 replica 或 更高。 wal_keep_segments 属性 描述 类型 integer 默认值 0 级别 SIGHUP---会话级 指定在后备服务器需要为流复制获取日志段文件的情况下,sys_wal 目录下所能保留的过去日志文件段的最小 数目。每个段通常是 16 兆字节。如果一个连接到发送服务器的后备服务器落后了超过 wal_keep_segments 个段,发送服务器可以移除一个后备机仍然需要的 WAL 段,在这种情况下复制连接将被中断。最终结果是 下行连接也将最终失败(不过,如果在使用 WAL 归档,后备服务器可以通过从归档获取段来恢复)。只设置 sys_wal 中保留的文件段的最小数目;系统可能需要为 WAL 归档或从一个检查点恢复保留更多段,更多的空 间来存放 WAL 归档或从一个检查点恢复。如果 wal_keep_segments 是零(缺省),系统不会为后备目的保留 52 第 2 章 服务器配置参数 任何多余的段,因此后备服务器可用的旧 WAL 段的数量是一个上个检查点位置和 WAL 归档状态的函数。这 个参数只能在 kingbase.conf 文件中或在服务器命令行上设置。 wal_init_zero 属性 描述 类型 boolean 默认值 on 级别 SUPERUSER---超级用户级 如果设置为 on(默认值),这个选项会导致新的 WAL 文件被填满 0。在某些文件系统上,这可以确保在需要写 入 WAL 记录之前分配空间。但是,Copy-On-Write (COW) 文件系统可能不会受益于这种技术,因此可以选择 跳过不必要的工作。如果设置为 off,则在创建文件时只写入最后一个字节,使其具有预期的大小。 wal_recycle 属性 描述 类型 boolean 默认值 on 级别 SUPERUSER---超级用户级 如果设置为 on(默认值),这个选项会通过重命名使 WAL 文件被回收,从而避免了创建新文件的需要。在 COW 文件系统上,创建新文件系统可能更快,因此提供了禁用此行为的选项。 wal_sender_timeout 属性 描述 类型 integer 默认值 60s 级别 USER---用户级 中断那些停止活动超过指定毫秒数的复制连接。这对发送服务器检测一个后备机崩溃或网络中断有用。零值将 禁用该超时机制。默认值是 60 秒。对于分布在多个地理位置的集群,每个位置使用不同的值可以为集群管理带 来更大的灵活性。对于具有低延迟网络连接的备用服务器,较小的值有助于更快地进行故障检测; 对于具有高延 迟网络连接的远程服务器,较大的值有助于更好地判断备用服务器的健康状况。 track_commit_timestamp 53 第 2 章 服务器配置参数 属性 描述 类型 boolean 默认值 off 级别 KINGBASE---实例级 记录事务的提交时间。这个参数只能在 kingbase.conf 文件中或在服务器命令行上设置。默认值是 off。 2.7.2 主服务器 这些参数可以在发送复制数据给一个或多个后备服务器的主控/主要服务器上设置。注意除了这些参数之外,在 主控服务器上必须设置合适的 wal_level ,并且也启用可选的 WAL 归档,这些参数值与后备服务器无关。 synchronous_standby_names 属性 描述 类型 string 默认值 ’’ 级别 SIGHUP---会话级 这个参数指定一个支持同步复制的后备服务器的列表。可能会有一个或者多个活动的同步后备服务器,在这些 后备服务器确认收到它们的数据之后,等待提交的事务将被允许继续下去。同步后备服务器是那些名字出现在 这个列表前面,并且当前已连接并且正在实时流传输数据的服务器。指定多于一台同步后备可以得到非常高的 可用性并且能防止数据丢失。 用于这一目的的后备服务器的名称是其 application_name 设置,它在后备服务器的连接信息中设置。在物理 复制后备的情况下,应该在 primary_conninfo 设置中设置;默认设置是 cluster_name (如果设置),否则为 walreceiver。对于逻辑复制,可以在订阅的连接信息中设置。对于其他复制流消费者,请参考其文档。 这个参数使用下面的语法之一来指定一个后备服务器列表: [FIRST] num_sync ( standby_name [, ...] ) ANY num_sync ( standby_name [, ...] ) standby_name [, ...] 其中 “num_sync“是事务需要等待其回复的同步后备服务器的数量,“standby_name“是一个后备服务器的名 称。FIRST 以及 ANY 指定从所列服务器中选取同步后备的方法。 关键词 FIRST 加上 “num_sync“指定一种基于优先的同步复制,并且会让事务提交等待,直到它们的 WAL 记 录被复制到基于优先级选择的 “num_sync“台同步后备上为止。例如,设置 FIRST 3 (s1, s2, s3, s4) 将导 54 第 2 章 服务器配置参数 致每次提交都等待来自三台较高优先级的后备机的答复,这三台后备机将从后备服务器 s1、s2、s3 以及 s4 中选出。在该列表中出现较早的后备服务器将被给予较高的优先级,并且将被考虑为同步后备。列表中出现的 其他后备服务器表示潜在的同步后备。如果当前的任何同步后备因为某种原因断开连接,它将立刻被下一个最 高优先级的后备服务器替代。关键词 FIRST 是可选的。 关键词 ANY 加上 “num_sync“指定一种基于规定数量的同步复制,并且会让事务提交等待,直到它们的 WAL 记录被复制到所列出后备服务器中的至少 “num_sync“台上为止。例如,设置 ANY 3 (s1, s2, s3, s4) 将导 致每次提交会在收到 s1、s2、s3 以及 s4 中任意三台后备服务器的回答后立刻继续下去。 FIRST 和 ANY 是大小写不敏感的。如果这些关键词被用作后备服务器的名字,其 “standby_name“必须被放在 双引号内。 KingbaseES 版本 V8R2 之前使用过第三种语法,目前也仍然支持。它和 FIRST 和 “num_sync“等于 1 的第一 种语法相同。例如,FIRST 1 (s1, s2) 和 s1, s2 具有相同的含义:s1 或者 s2 会被选中作为同步后备服务 器。 特殊项 * 匹配任意后备名称。 没有机制强制后备服务器名称的唯一性。在出现重复的情况下,匹配的后备之一将被认为是较高优先级,不过 无法弄清到底是哪一个。 注意: 每一个 “standby_name“都应该具有合法 SQL 标识符的形式,除非它是 *。如果必要可以使用双引号。 但是注意在比较 “standby_name“和后备机应用程序名称时是大小写不敏感的(不管有没有双引号)。 如果这里没有指定同步后备机名称,那么同步复制不能被启用并且事务提交将不会等待复制。这是默认的配 置。即便当同步复制被启用时,个体事务也可以被配置为不等待复制,做法是将 synchronous_commit 参数设 置为 local 或 off。 这个参数只能在 kingbase.conf 文件中或在服务器命令行上设置。 vacuum_defer_cleanup_age 属性 描述 类型 integer 默认值 0 级别 SIGHUP---会话级 指定 VACUUM 和 HOT 更新在清除死亡行版本之前,应该推迟多久(以事务数量计)。默认值是零个事务,表 示死亡行版本将被尽可能快地清除,即当它们不再对任何打开的事务可见时尽快清除。在一个支持热后备服务 器的主服务器上,可以把这个参数设置为一个非零值。这允许后备机上的查询有更多时间来完成而不会由于先 前的行清除产生冲突。但是,由于该值是用在主服务器上发生的写事务的数目衡量的,很难预测对后备机查询 可用的附加时间到底是多少。这个参数只能在 kingbase.conf 文件中或在服务器命令行上设置。 可以通过设置后备服务器上的 hot_standby_feedback 来作为使用这个参数的一种替代方案。 55 第 2 章 服务器配置参数 这无法阻止已经达到 old_snapshot_threshold 所指定年龄的死亡行被清除。 2.7.3 后备服务器 这些设置空值接收复制数据的一个后备服务器的行为。它们的值与主服务器无关。 primary_conninfo 属性 描述 类型 string 默认值 ’’ 级别 KINGBASE---实例级 指定用于备用服务器与发送服务器连接的连接字符串。如果该字符串中有未指定的选项,则选中相应的环境变 量。如果环境变量也没有设置,则使用默认值。 连接字符串应该指定发送服务器的主机名 (或地址),以及端口号 (如果它与备用服务器的默认端口号不 同)。还要指定与发送服务器上具有适当特权的角色对应的用户名。如果发送方需要口令身份验证,还需要提 供口令。它可以在 primary_conninfo 字符串中提供,或是备用服务器上的单独的 ~/.kbpass 文件(使用 replication 作为数据库名称)。不要在 primary_conninfo 字符串中指定数据库名称。 此参数只能在服务器启动时设置。如果服务器没有处于备用模式,则此设置无效。 primary_slot_name 属性 描述 类型 string 默认值 ’’ 级别 KINGBASE---实例级 可选地指定在通过流复制连接到发送服务器以控制上游节点上的资源删除时使用的现有复制槽。此参数只能在 服务器启动时设置。如果没有设置 primary_conninfo,则此设置无效。 promote_trigger_file 56 第 2 章 服务器配置参数 属性 描述 类型 string 默认值 ’’ 级别 SIGHUP---会话级 指定一个触发器文件,该文件的存在将结束备用系统中的恢复。即使未设置此值,仍然可以促进备用使用 sys_ctl promote,或者调用 sys_promote。此参数只能在 kingbase.conf 文件或在服务器命令行中设置。 hot_standby 属性 描述 类型 boolean 默认值 on 级别 KINGBASE---实例级 指定在恢复期间,是否能够连接并运行查询。默认值是 on。这个参数只能在服务器启动时设置。它只在归档恢 复期间或后备机模式下才有效。 max_standby_archive_delay 属性 描述 类型 integer 默认值 30s 级别 SIGHUP---会话级 当 热 后 备 机 处 于 活 动 状 态 时, 这 个 参 数 决 定 取 消 那 些 与 即 将 应 用 的 前, 后 备 服 务 器 应 该 等 待 多 久。 当 WAL 数据被从 WAL WAL 项冲突的后备机查询之 归 档 (并 且 因 此 不 是 当 前 的 WAL) 时, max_standby_archive_delay 可以应用。默认值是 30 秒。如果没有指定,衡量单位是毫秒。值 -1 允许 后备机一直等到冲突查询结束。这个参数只能在 kingbase.conf 文件中或在服务器命令行上设置。 注意,max_standby_archive_delay 与取消之前一个查询能够运行的最长时间不同;它表示应用任何一个 WAL 段数据能够被允许的最长总时间。因此,如果一个查询早于 WAL 段导致了显著的延迟,后续冲突查询 将只有更少的时间。 max_standby_streaming_delay 57 第 2 章 服务器配置参数 属性 描述 类型 integer 默认值 30s 级别 SIGHUP---会话级 当热后备机处于活动状态时,这个参数决定取消那些与即将应用的 WAL 项冲突的后备机查询之前,后备服 务器应该等待多久。当 WAL 数据正在通过流复制被接收时,max_standby_streaming_delay 可以应用。默 认值是 30 秒。如果没有指定,衡量单位是毫秒。值 -1 允许后备机一直等到冲突查询结束。这个参数只能在 kingbase.conf 文件中或在服务器命令行上设置。 注意,max_standby_streaming_delay 与取消之前一个查询能够运行的最长时间不同;它表示在从主服务器接 收到 WAL 数据并立刻应用它能够被允许的最长总时间。因此,如果一个查询导致了显著的延迟,后续冲突查 询将只有更少的时间,直到后备服务器再次赶上进度。 wal_receiver_status_interval 属性 描述 类型 integer 默认值 10s 级别 SIGHUP---会话级 指定在后备机上的 WAL 接收者进程向主服务器或上游后备机发送有关复制进度的信息的最小频度,可以使 用 sys_stat_replication 视图看到。后备机将报告它已经写入的上一个预写式日志位置、它已经刷到磁盘的 上一个位置以及它已经应用的最后一个位置。这个参数的值是报告之间的最大间隔,以秒计。每次写入或刷出 位置改变时会发送状态更新,或者至少按这个参数的指定的频度发送。因此,应用位置可能比真实位置略微滞 后。将这个参数设置为零将完全禁用状态更新。这个参数只能在 kingbase.conf 文件中或在服务器命令行上设 置。默认值是 10 秒。 hot_standby_feedback 属性 描述 类型 boolean 默认值 off 级别 SIGHUP---会话级 指定一个热后备机是否将会向主服务器或上游后备机发送有关于后备机上当前正被执行的查询的反馈。这个参 数可以被用来排除由于记录清除导致的查询取消,但是可能导致在主服务器上用于某些负载的数据库膨胀。反 58 第 2 章 服务器配置参数 馈消息的发送频度不会高于每个 wal_receiver_status_interval 周期发送一次。默认值是 off。这个参数只 能在 kingbase.conf 文件中或在服务器命令行上设置。 如果使用级联复制,反馈将被向上游传递直到它最后到达主服务器。后备机在接收到反馈之后除了传递给上游 不会做任何其他操作。 这个设置不会覆盖主服务器上的 old_snapshot_threshold 的行为,后备服务器上一个超过了主服务器年龄阈 值的快照可能会变得不可用,导致后备服务器上事务的取消。这是因为 old_snapshot_threshold 是为了对死 亡行能够存在的时间给出一个绝对限制,不然就会因为一个后备服务器的配置而被违背。 wal_receiver_timeout 属性 描述 类型 integer 默认值 60s 级别 SIGHUP---会话级 中止处于非活动状态超过指定毫秒数的复制链接。这对于正在接收的后备服务器检测主服务器崩溃或网络断开 有用。值零会禁用超时机制。这个参数只能在 kingbase.conf 文件中或在服务器命令行上设置。默认值是 60 秒。 wal_retrieve_retry_interval 属性 描述 类型 integer 默认值 5s 级别 SIGHUP---会话级 指定当从任何来源(流复制、本地 sys_wal 或者 WAL 归档)都得不到 WAL 数据时,后备服务器应该等待多 久才去重新尝试获取 WAL 数据。这个参数只能在 kingbase.conf 文件或者服务器命令行中设置。默认值是 5 秒。如果没有指定,则单位是毫秒。 这个参数对恢复中的节点需要为新 WAL 数据可用等待多少时间的配置有用。例如,在归档恢复中,通过减小 这个参数的值可以让恢复更积极地检测新的 WAL 日志文件。在一个 WAL 活动较低的系统上,增加这个参数 的值可以减少访问 WAL 归档所必需的请求数量,这对于例如云环境是有用的,在其中对于基础设施的访问时 间也是被考虑的。 recovery_min_apply_delay 59 第 2 章 服务器配置参数 属性 描述 类型 integer 默认值 0 级别 SIGHUP---会话级 默认情况下,备用服务器将尽快从发送服务器恢复 WAL 记录。拥有一个延迟的数据副本可能会很有用,这为 纠正数据丢失错误提供了机会。此参数允许恢复延迟一段固定的时间 (如果没有指定单元,则以毫秒为单位)。 例如,5min,那么只有当备用系统的时间比主系统报告的提交时间至少晚 5 分钟时,备用系统才会重新执行每 个事务提交。 服务器之间的复制延迟可能超过此参数的值,在这种情况下不添加延迟。请注意,延迟是在主服务器上写的 WAL 时间戳和备用服务器上的当前时间之间计算的。由于网络延迟或级联复制配置而导致的传输延迟可能会 显著减少实际的等待时间。如果主备系统上的时钟不同步,则可能导致应用记录的恢复比预期的要早; 但这不是 一个主要问题,因为此参数的有用设置比服务器之间的典型时间偏差大得多。 延迟只发生在事务提交的 WAL 记录上。其他记录会尽可能快地重放,这不是问题,因为 MVCC 可见性规则确 保它们的效果在应用相应的提交记录之前是不可见的。 当处于恢复状态的数据库达到一致状态时,直到提升或触发备用数据库时,才会发生延迟。之后,备用服务器 将结束恢复,不再等待。 此参数用于流式复制部署; 但是,如果指定了参数,则在所有情况下都将使用该参数。hot_standby_feedback 将延迟使用此功能,这可能会导致主机膨胀; 两者一起使用时要小心。 警告: 同步复制将被影响当 synchronous_commit 被设置为 remote_apply;每个 COMMIT 需要等待应 用。 此参数只能在 kingbase.conf 文件或在服务器命令行中设置。 2.7.4 订阅者 这些设置控制逻辑复制订阅者的行为。它们在发布者上的值与此无关。 注 意, 配 置 参 数 wal_receiver_timeout、wal_receiver_status_interval 以 及 wal_retrieve_retry_interval 也影响逻辑复制工作者。 max_logical_replication_workers 60 第 2 章 服务器配置参数 属性 描述 类型 int 默认值 4 级别 KINGBASE---实例级 指定逻辑复制工作者的最大数目。这同时包括应用工作者和表同步工作者。 逻辑复制工作者是从 max_worker_processes 定义的池中取出的。 max_sync_workers_per_subscription 属性 描述 类型 integer 默认值 2 级别 SIGHUP---会话级 每个订阅的同步工作者的最大数目。这个参数控制订阅初始化期间或者新表增加时的初始数据拷贝的并行度。 当前,每个表只能有一个同步工作者。 同步工作者是从 max_logical_replication_workers 定义的池中取出的。 2.8 查询规划 2.8.1 规划器方法配制 这些配置参数提供了影响查询优化器选择查询规划的原始方法。如果优化器为特定的查询选择的缺省规划并不是 最优,那么我们就可以通过使用这些配置参数强制优化器选择一个更好的规划来 temporary 解决这个问题。不过, 永久地关闭这些设置几乎从不是个好主意。更好的改善优化器选择规划的方法包括更频繁运行 ANALYZE、增大配置 参数 default_statistics_target 的值、使用 ALTER TABLE SET STATISTICS 为某个字段增加收集的统计信息。这 些配置参数影响查询优化器选择查询计划的暴力方法。如果优化器为一个特定查询选择的默认计划不是最优的,一种 临时解决方案是使用这些配置参数之一来强制优化器选择一个不同的计划。提高优化器选择的计划质量的更好的方式 包括调整规划器的代价常数、手工运行 ANALYZE 、增加 default_statistics_target 配置参数的值以及使用 ALTER TABLE SET STATISTICS 增加为特定列收集的统计信息量。 enable_bitmapscan 61 第 2 章 服务器配置参数 属性 描述 类型 boolean 默认值 on 级别 USER---用户级 允许或禁止查询规划器使用位图扫描计划类型。默认值是 on。 enable_gathermerge 属性 描述 类型 boolean 默认值 on 级别 USER---用户级 启用或者禁用查询规划器对收集归并计划类型的使用。默认值是 on。 enable_hashagg 属性 描述 类型 boolean 默认值 on 级别 USER---用户级 允许或禁用查询规划器使用哈希聚集计划类型。默认值是 on。 enable_hashjoin 属性 描述 类型 boolean 默认值 on 级别 USER---用户级 允许或禁止查询规划器使用哈希连接计划类型。默认值是 on。 enable_indexscan 62 第 2 章 服务器配置参数 属性 描述 类型 boolean 默认值 on 级别 USER---用户级 允许或禁止查询规划器使用索引扫描计划类型。默认值是 on。 enable_indexonlyscan 属性 描述 类型 boolean 默认值 on 级别 USER---用户级 允许或禁止查询规划器使用只用索引扫描计划类型(见 concept 数据访问 ‘中的索引扫描)。默认值是 “on‘。 enable_material 属性 描述 类型 boolean 默认值 on 级别 USER---用户级 允许或者禁止查询规划器使用物化。它不可能完全禁用物化,但是关闭这个变量将阻止规划器插入物化节点, 除非为了保证正确性。默认值是 on。 enable_mergejoin 属性 描述 类型 boolean 默认值 on 级别 USER---用户级 允许或禁止查询规划器使用归并连接计划类型。默认值是 on。 63 第 2 章 服务器配置参数 enable_nestloop 属性 描述 类型 boolean 默认值 on 级别 USER---用户级 允许或禁止查询规划器使用嵌套循环连接计划。它不可能完全禁止嵌套循环连接,但是关闭这个变量将使得规 划器尽可能优先使用其他方法。默认值是 on。 enable_parallel_append 属性 描述 类型 boolean 默认值 on 级别 USER---用户级 允许或禁止查询规划器使用并行追加计划类型。默认值是 on。 enable_parallel_hash 属性 描述 类型 boolean 默认值 on 级别 USER---用户级 允许或禁止查询规划器对并行哈希使用哈希连接计划类型。如果哈希连接计划也没有启用,这个参数没有效 果。默认值是 on。 enable_partition_pruning 属性 描述 类型 boolean 默认值 on 级别 USER---用户级 64 第 2 章 服务器配置参数 允许或者禁止查询规划器从查询计划中消除一个分区表的分区。这也控制着规划器产生允许执行器在查询执行 期间移除(忽略)分区的查询计划的能力。默认值是 on。详情请参考 管理分区表。 enable_partitionwise_join 属性 描述 类型 boolean 默认值 off 级别 USER---用户级 允许或者禁止查询规划器使用面向分区的连接,这使得分区表之间的连接以连接匹配的分区的方式来执行。面 向分区的连接当前只适用于连接条件包括所有分区键的情况,连接条件必须是相同的数据类型并且子分区集合 要完全匹配。由于面向分区的连接规划在规划期间会使用可观的 CPU 时间和内存,所以默认值为 off。 enable_partitionwise_aggregate 属性 描述 类型 boolean 默认值 off 级别 USER---用户级 允许或者禁止查询规划器使用面向分区的分组或聚集,这使得在分区表上的分组或聚集可以在每个分区上分别 执行。如果 GROUP BY 子句不包括分区键,只有部分聚集能够以基于每个分区的方式执行,并且 finalization 必 须最后执行。由于面向分区的分组或聚集在规划期间会使用可观的 CPU 时间和内存,所以默认值为 off。 enable_seqscan 属性 描述 类型 boolean 默认值 on 级别 USER---用户级 允许或禁止查询规划器使用顺序扫描计划类型。它不可能完全禁止顺序扫描,但是关闭这个变量将使得规划器 尽可能优先使用其他方法。默认值是 on。 enable_sort 65 第 2 章 服务器配置参数 属性 描述 类型 boolean 默认值 on 级别 USER---用户级 允许或禁止查询规划器使用显式排序步骤。它不可能完全禁止显式排序,但是关闭这个变量将使得规划器尽可 能优先使用其他方法。默认值是 on。 enable_tidscan 属性 描述 类型 boolean 默认值 on 级别 USER---用户级 允许或禁止查询规划器使用 TID 扫描计划类型。默认值是 on。 enable_aggregate_pullup 属性 描述 类型 boolean 默认值 on 级别 USER---用户级 允许或禁止查询规划器提升聚集函数层级。对于子查询中引用了外层查询变量的聚集函数,当开启变量时,聚 集函数将被提升到外层查询计算;当关闭变量时,聚集函数保留在子查询中计算。该参数仅在 oracle 模式下有 效。默认值是 on。 2.8.2 规划器代价常量 这一节中描述的代价变量可以按照任意尺度衡量。我们只关心它们的相对值,将它们以相同的因子缩放不会影响 规划器的选择。默认情况下,这些代价变量是基于顺序页面获取的代价的,即 seq_page_cost 被设置为 1.0 并且其 他代价变量都参考它来设置。不过可以使用不同尺度,例如在一个特定机器上的真实执行时间。 注意: 不幸的是,没有一种良好的方法来决定代价变量的理想值。因此,它们最好是被作为某个特定安装的查询的平 66 第 2 章 服务器配置参数 均值来对待。这也意味着,参照少数的测试值来改变它们是有较大风险的。 seq_page_cost 属性 描述 类型 real 默认值 1.0 级别 USER---用户级 设置规划器计算一次顺序磁盘页面抓取的开销。默认值是 1.0。通过设置同名的表空间参数,这个值可以重写 为一个特定的表空间。参阅 ALTER TABLESPACE。设置规划器对一系列顺序磁盘页面获取中的一次的代价 估计。默认值是 1.0。通过把表和索引放在一个特殊的表空间(要设置该表空间的同名参数)中可以覆盖这个值 (见 ALTER TABLESPACE )。 random_page_cost 属性 描述 类型 real 默认值 4.0 级别 USER---用户级 设置规划器对一次非顺序获取磁盘页面的代价估计。默认值是 4.0。通过把表和索引放在一个特殊的表空间(要 设置该表空间的同名参数)中可以覆盖这个值(见 ALTER TABLESPACE )。 减少这个值(相对于 seq_page_cost)将导致系统更倾向于索引扫描;提高它将让索引扫描看起来相对更昂 贵。可以一起提高或降低两个值来改变磁盘 I/O 代价相对于 CPU 代价的重要性,后者由下列参数描述。 对磁盘存储的随机访问通常比顺序访问要贵不止四倍。但是,由于对磁盘的大部分随机访问(例如被索引的读 取)都被假定在高速缓冲中进行,所以使用了一个较低的默认值(4.0)。默认值可以被想成把随机访问建模为 比顺序访问慢 40 倍,而期望 90% 的随机读取会被缓存。 90% 的缓冲率对负载是一个不正确的假设,可以增加 random_page_cost 来更好的反映随机存储读取的 真正代价。相应地,如果数据可以完全放在高速缓存中(例如当数据库小于服务器总内存时),降低 random_page_cost 可能是合适的。为具有很低的随机读取代价的存储(例如固态驱动器)采用较低的 random_page_cost 值可能更好。 提示: 虽然允许将 random_page_cost 设置的比 seq_page_cost 小,但是物理上的实际情况并不受此影响。然 而当所有数据库都位于内存中时,两者设置为相等是非常合理的,因为在此情况下,乱序抓取并不比顺序抓取 开销更大。同样,在缓冲率很高的数据库上,应当相对于 CPU 开销同时降低这两个值,因为获取内存中的页 67 第 2 章 服务器配置参数 比通常情况下的开销小许多。尽管系统可以把 random_page_cost 设置得小于 seq_page_cost,但是实际上没 有意义。不过,如果数据库被整个缓存在 RAM 中,将它们设置为相等是有意义的,因为在那种情况中不按顺 序访问页面是没有惩罚值的。同样,在一个高度缓存化的数据库中,应该相对于 CPU 参数降低这两个值,因为 获取一个已经在 RAM 中的页面的代价要远小于通常情况下的代价。 cpu_tuple_cost 属性 描述 类型 real 默认值 0.01 级别 USER---用户级 设置规划器对一次查询中处理每一行的代价估计。默认值是 0.01。 cpu_index_tuple_cost 属性 描述 类型 real 默认值 0.005 级别 USER---用户级 设置规划器对一次索引扫描中处理每一个索引项的代价估计。默认值是 0.005。 cpu_operator_cost 属性 描述 类型 real 默认值 0.0025 级别 USER---用户级 设置规划器对于一次查询中处理每个操作符或函数的代价估计。默认值是 0.0025。 parallel_setup_cost 68 第 2 章 服务器配置参数 属性 描述 类型 real 默认值 1000 级别 USER---用户级 设置规划器对启动并行工作者进程的代价估计。默认是 1000。 parallel_tuple_cost 属性 描述 类型 real 默认值 0.1 级别 USER---用户级 设置规划器对于从一个并行工作者进程传递一个元组给另一个进程的代价估计。默认是 0.1。 min_parallel_table_scan_size 属性 描述 类型 integer 默认值 8MB 级别 USER---用户级 为必须扫描的表数据量设置一个最小值,扫描的表数据量超过这一个值才会考虑使用并行扫描。对于并行顺序 扫描,被扫描的表数据量总是等于表的尺寸,但是在使用索引时,被扫描的表数据量通常会更小。默认值是 8 兆字节(8MB)。 min_parallel_index_scan_size 属性 描述 类型 integer 默认值 512KB 级别 USER---用户级 为必须扫描的索引数据量设置一个最小值,扫描的索引数据量超过这一个值时才会考虑使用并行扫描。注意并 69 第 2 章 服务器配置参数 行索引扫描通常并不会触及整个索引,它是规划器认为该扫描会实际用到的相关页面的数量。默认值是 512 千 字节(512kB)。 effective_cache_size 属性 描述 类型 integer 默认值 4GB 级别 USER---用户级 设置规划器对一个单一查询可用的有效磁盘缓冲区尺寸的假设。这个参数会被考虑在使用一个索引的代价估 计中,更高的数值会使得索引扫描更可能被使用,更低的数值会使得顺序扫描更可能被使用。在设置这个参数 时,还应该考虑 KingbaseES 的共享缓冲区以及将被用于 KingbaseES 数据文件的内核磁盘缓冲区,尽管有些数 据可能在两个地方都存在。另外,还要考虑预计在不同表上的并发查询数目,因为它们必须共享可用的空间。 这个参数对 KingbaseES 分配的共享内存尺寸没有影响,它也不会保留内核磁盘缓冲,它只用于估计的目的。 系统也不会假设在查询之间数据会保留在磁盘缓冲中。默认值是 4 吉字节(4GB)。 jit_above_cost 属性 描述 类型 real 默认值 100000 级别 USER---用户级 设置激活 JIT 编译的查询代价,如果查询代价超过这个值就会激活 JIT 编译(如果启用了 JIT。执行 JIT 会消 耗一些规划时间,但是能够加速查询执行。将这个值设置为-1 会禁用 JIT 编译。默认值是 100000。 jit_inline_above_cost 属性 描述 类型 real 默认值 500000 级别 USER---用户级 设置 JIT 编译尝试内联函数和操作符的查询代价阈值,如果查询代价超过这个值,JIT 编译就会尝试内联。内 联会增加规划时间,但是可以提高执行速度。将这个参数设置成小于 jit_above_cost 是没有意义的。将这个 参数设置为-1 会禁用内联。默认值是 500000。 70 第 2 章 服务器配置参数 jit_optimize_above_cost 属性 描述 类型 real 默认值 500000 级别 USER---用户级 设置 JIT 编译应用优化的查询代价阈值,如果查询代价超过这个值,JIT 编译就会应用开销较大的优化。这类 优化会增加规划时间,但是更能够改进执行速度。将这个参数设置成小于 jit_above_cost 是没有意义的,并 且将它设置成大于 jit_inline_above_cost 也未必有益。将这个参数设置为-1 会禁用开销较大的优化。默认 值是 500000。 hier_worktable_rehash_cost_factor 属性 描述 类型 real 默认值 0.1 级别 USER---用户级 设置层次查询中递归侧做哈希连接时,中间结果表作为连接外表的代价估算因子。默认值是 0.1。 2.8.3 遗传查询优化 GEQO 是一个使用探索式搜索来执行查询规划的算法。它可以降低负载查询的规划时间。同时,GEQO 的检索 是随机的,因此它的规划可能会不可确定。遗传查询规划器(GEQO)是一种使用启发式搜索来进行查询规划的算 法。它可以降低对于复杂查询(连接很多表的查询)的规划时间,但是代价是它产生的计划有时候要差于使用穷举搜 索算法找到的计划。 geqo 属性 描述 类型 boolean 默认值 on 级别 USER---用户级 71 第 2 章 服务器配置参数 允许或禁止遗传查询优化。默认是启用。在生产环境中通常最好不要关闭它。geqo_threshold 变量提供了对 GEQO 更细粒度的空值。 geqo_threshold 属性 描述 类型 integer 默认值 12 级别 USER---用户级 只有当涉及的 FROM 项数量至少有这么多个的时候,才使用遗传查询优化(注意一个 FULL OUTER JOIN 只被计 为一个 FROM 项)。默认值是 12。对于更简单的查询,通常会使用普通的穷举搜索规划器,但是对于有很多表 的查询穷举搜索会花很长时间,通常比执行一个次优的计划带来的惩罚值还要长。因此,在查询尺寸上的一个 阈值是管理 GEQO 使用的一种方便的方法。 geqo_effort 属性 描述 类型 integer 默认值 5 级别 USER---用户级 这个变量必须是一个范围从 1 到 10 的整数。缺省值是 5。增大此值将增加花在进行查询规划上面的时间,但是 也很可能会提高选中更有效的查询规划的几率。因此需要妥善控制此值,来使得 GEQO 里规划时间和查询规划 的有效性之间达到一个平衡。 geqo_effort 实际并不直接做任何事情;它只是被用来计算其他影响 GEQO 行为的变量(如下所述)的默认 值,可以手工设置其他参数。 geqo_pool_size 属性 描述 类型 integer 默认值 0 级别 USER---用户级 控制 GEQO 使用的池尺寸,它就是遗传种群中的个体数目。它必须至少为 2,且有用的值通常在 100 到 1000 之间。如果它被设置为零(默认设置)则会基于 geqo_effort 和查询中表的数量选择一个合适的值。 72 第 2 章 服务器配置参数 geqo_generations 属性 描述 类型 integer 默认值 0 级别 USER---用户级 控制 GEQO 使用的子代数目。子代的意思是算法的迭代次数。它必须大于等于 1,有用的值范围和池大小相 同。如果设置为 0(缺省),那么将基于 geqo_pool_size 选取合适的值。 geqo_selection_bias 属性 描述 类型 real 默认值 2.0 级别 USER---用户级 控制 GEQO 使用的选择偏好。选择偏好是种群中的选择压力。值可以是 1.5 到 2.0 之间,后者是默认值。 geqo_seed 属性 描述 类型 real 默认值 0.0 级别 USER---用户级 控制 GEQO 使用的随机数生成器的初始值,随机数生成器用于在连接顺序搜索空间中选择随机路径。该值可以 从 0 (默认值)到 1。变化该值会改变被探索的连接路径集合,并且可能导致找到一个更好或更差的路径。 2.8.4 其他规划器选项 default_statistics_target 73 第 2 章 服务器配置参数 属性 描述 类型 integer 默认值 100 级别 USER---用户级 为没有通过 ALTER TABLE SET STATISTICS 设置列相关目标的表列设置默认统计目标。更大的值增加了需要做 ANALYZE 的时间,但是可能会改善规划器的估计质量。默认值是 100。 constraint_exclusion 属性 描述 类型 enum 默认值 partition 级别 USER---用户级 constraint_exclusion 的允许值是 on (对所有表检查约束)、off(从不检查约束)和 partition(只对继 承的子表和 UNION ALL 子查询检查约束)。partition 是默认设置。它通常被用于传统的继承树来提高性能。 当对一个特定表允许这个参数,规划器比较查询条件和表的 CHECK 约束,并且忽略那些条件违反约束的表扫 描。例如: CREATE TABLE parent(key integer, ...); CREATE TABLE child1000(check (key between 1000 and 1999)) INHERITS (parent); CREATE TABLE child2000(check (key between 2000 and 2999)) INHERITS (parent); ... SELECT * FROM parent WHERE key = 2400; 在启用约束排除时,这个 SELECT 将完全不会扫描 child1000,从而提高性能。 目前,约束排除只在通过继承树实现表分区的情况中被默认启用。为所有表启用它会增加额外的规划开销,特 别是在简单查询上并且不会产生任何好处。如果没有使用传统继承进行分区的表,则需要完全关闭它。(注意, 分区表的等效特性是由一个单独的参数控制的,enable_partition_pruning 。) cursor_tuple_fraction 74 第 2 章 服务器配置参数 属性 描述 类型 real 默认值 0.1 级别 USER---用户级 设置规划器对将被检索的一个游标的行的比例的估计。默认值是 0.1。更小的值使得规划器偏向为游标使用“快 速开始”计划,它将很快地检索前几行但是可能需要很长时间来获取所有行。更大的值强调总的估计时间。最 大设置为 1.0,游标将和普通查询完全一样地被规划,只考虑总估计时间并且不考虑前几行会被多快地返回。 from_collapse_limit 属性 描述 类型 integer 默认值 8 级别 USER---用户级 如果生成的 FROM 列表不超过这么多项,规划器将把子查询融合到上层查询。较小的值可以减少规划时间,但 是可能会生成较差的查询计划。默认值是 8。 将这个值设置为 geqo_threshold 或更大,可能触发使用 GEQO 规划器,从而产生非最优计划。见遗传查询优 化。 jit 属性 描述 类型 boolean 默认值 on 级别 USER---用户级 决定如果可用,KingbaseES 是否可以使用 JIT 编译。默认值是 on。 join_collapse_limit 75 第 2 章 服务器配置参数 属性 描述 类型 integer 默认值 8 级别 USER---用户级 如果得出的列表中不超过这么多项,那么规划器将把显式 JOIN(除了 FULL JOIN)结构重写到 FROM 项列表 中。较小的值可减少规划时间,但是可能会生成差些的查询计划。 默认情况下,这个变量被设置成和 from_collapse_limit 相同,这样适合大多数使用。把它设置为 1 可避免 任何显式 JOIN 的重排序。因此查询中指定的显式连接顺序就是关系被连接的实际顺序。因为查询规划器并不 是总能选取最优的连接顺序,高级用户可以选择暂时把这个变量设置为 1,然后显式地指定他们想要的连接顺 序。 将这个值设置为 geqo_threshold 或更大,可能触发使用 GEQO 规划器,从而产生非最优计划。见遗传查询优 化。 parallel_leader_participation 属性 描述 类型 boolean 默认值 on 级别 USER---用户级 允许领导者进程执行 Gather 和 Gather Merge 节点之下的查询计划而不是等待工作者进程。默认值是 on。将 这个值设置为 off 会降低工作者由于领导者读取元组速度不够快而被阻塞的可能性,但是要求领导者在产生第 一个元组之前等待工作者进程启动。领导者能够帮助或者阻碍性能的程度取决于计划的类型、工作者的数量以 及查询时长。 force_parallel_mode 属性 描述 类型 enum 默认值 off 级别 USER---用户级 允许为测试目的使用并行查询,即便是并不期望在性能上得到效益。force_parallel_mode 的允许值是 off(只在期望改进性能时才使用并行模式)、on(只要查询被认为是安全的,就强制使用并行查询)以及 regress(和 on 相似,但是有如下文所解释的额外行为改变)。 76 第 2 章 服务器配置参数 更具体地说,把这个值设置为 on 会在任何一个对于并行查询安全的查询计划顶端增加一个 Gather 节点, 这样查询会在一个并行工作者中运行。即便当一个并行工作者不可用或者不能被使用时,诸如开始一个子事务 等在并行查询环境中会被禁止的操作将会被禁止,除非规划器相信这样做会导致查询失败。当这个选项被设置 时如果出现失败或者意料之外的结果,查询使用的某些函数可能需要被标记为 PARALLEL UNSAFE(或者可能是 PARALLEL RESTRICTED)。 把这个值设置为 regress 具有设置成 on 所有相同的效果,外加一些有助于自动回归测试的额外的效果。一般 来说,来自于一个并行工作者的消息会包括一个上下文行指出这一点,但是设置为 regress 会消除这一行,这 样输出就和非并行执行完全一样。同样,被这个设置加到计划上的 Gather 节点在 EXPLAIN 输出终会被隐藏起 来,这样产生的输出匹配设置为 off 时产生的输出。 plan_cache_mode 属性 描述 类型 enum 默认值 auto 级别 USER---用户级 准备好的语句 (无论是显式准备的还是隐式生成的,例如 PL/SQL) 都可以使用定制计划或通用计划执行。使用 特定的一组参数值为每次执行重新制定自定义计划,而通用计划不依赖于参数值,可以在执行过程中重用。因 此,使用泛型计划可以节省计划时间,但是如果理想的计划严重依赖于参数值,那么泛型计划可能是低效的。 这些选项之间的选择通常是自动进行的,但是它可以被覆盖 plan_cache_mode 覆盖。允许的值是 auto(默认), force_custom_plan 和 force_generic_plan。此设置将在执行缓存计划时考虑,而不是在准备计划时考虑。 exclude_reserved_words 属性 描述 类型 string 默认值 ’’ 级别 USER---用户级 指定需要忽略的关键字,使关键字可以用作表名或列名。但是会造成使用指定关键字的功能失效。 1. 设置该参数时不检查是否是关键字。 2. 当屏蔽掉关键字“level”时,执行使用关键字“level”的功能语句时,请将“level”替换成“KINGBASE_INTERNAL_ LEVEL”关键字。 输入时,关键字用单引号括起。指定关键字时可同时设定多个,词间通过“,”隔开。 例如: 77 第 2 章 服务器配置参数 set exclude_reserved_words= 'drop','in'; SET show exclude_reserved_words; exclude_reserved_words -----------------------drop, in (1 row) CREATE TABLE drop(in INT); CREATE TABLE SELECT in from drop; in ---(0 rows) DROP table drop; ERROR: syntax error at or near "DROP" ------功能受到限制 LINE 1: DROP table drop; ^ set exclude_reserved_words = 'level, in'; SHOW TRANSACTION ISOLATION KINGBASE_INTERNAL_LEVEL; transaction_isolation ----------------------read committed (1 row) set exclude_reserved_words= ''; SET show exclude_reserved_words; exclude_reserved_words -----------------------(1 row) enable_query_rule 78 第 2 章 服务器配置参数 属性 描述 类型 boolean 默认值 off 级别 USER---用户级 允许用户使用 KingbaseES 的 Query Mapping 功能,该功能允许用户预先创建 SQL 语句的映射关系并储存在 相应的系统表,当用户输入的 SQL 语句与所创建的映射关系相匹配时,替换成映射的 SQL 语句去实际执行。 该参数的默认值是 off。当设置为 on 时,会启用 Query Mapping 功能。 2.9 错误报告和日志 2.9.1 在哪里记录日志 log_destination 属性 描述 类型 string 默认值 stderr 级别 SIGHUP---会话级 KingbaseES 支持多种方法来记录服务器消息,包括 stderr、csvlog 和 syslog。在 Windows 上还支持 eventlog。 设置这个参数为一个由想要的日志目的地的列表,之间用逗号分隔。默认值是只记录到 stderr。这个参数只能 在 kingbase.conf 文件中或在服务器命令行上设置。 如果 csvlog 被包括在 log_destination 中,日志项会以“逗号分隔值”(CSV)格式被输出,这样可以很方 便地把日志载入到程序中。详见错误报告和日志 。要产生 CSV 格式的日志输出,必须启用 logging_collector 。 当包括有 stderr 或 csvlog 时,会创建文件 current_logfiles 来记录当前正在被日志收集器使用的日志文件的 位置以及相关的日志目的地。这提供了一种查找实例当前使用的日志的便利手段。这里是该文件内容的一个例 子: stderr log/kingbase.log csvlog log/kingbase.csv 当由于轮转效应创建一个新的日志文件时以及 log_destination 被重载时,current_logfiles 文件会被重 建。当 log_destination 中不包括 stderr 和 csvlog 时以及当日志收集器被禁用时,这个文件会被删除。 79 第 2 章 服务器配置参数 注意: 在大多数 Unix 系统上,需要修改系统的 syslog 守护进程的配置来使用 log_destination 的 syslog 选 项。KingbaseES 可以在 syslog 设备 LOCAL0 到 LOCAL7 中记录(见 syslog_facility ),但是大部分平台上的默 认 syslog 配置会丢弃所有这种消息。需要增加这样的内容: local0.* /var/log/kingbase 到 syslog 守护进程的配置文件来让它工作。 在 Windows 上,当使用 log_destination 的 eventlog 选项时,应该在操作系统中注册一个事件源和库,这 样 Windows 事件查看器能够清楚地显示事件日志消息。 logging_collector 属性 描述 类型 boolean 默认值 on 级别 KINGBASE---实例级 这个参数启用日志收集器,它是一个捕捉被发送到 stderr 的日志消息的后台进程,并且它会将这些消息重定向 到日志文件中。这种方法比记录到 syslog 通常更有用,因为某些类型的消息不会在 syslog 输出中出现(一个常 见的例子是动态链接器错误消息;另一个例子是由 archive_command 等脚本产生的错误消息)。这个参数只能 在服务器启动时设置。 注意: 也可以不使用日志收集器而把日志记录到 stderr,日志消息将只会去到服务器的 stderr 被定向到的位 置。不过,那种方法只适合于低日志量,因为它没有提供方法来轮转日志文件。还有,在某些不使用日志收集 器的平台上可能会导致丢失或者混淆日志输出,因为多个进程并发写入同一个日志文件时会覆盖彼此的输出。 注意: 日志收集器被设计成从来不会丢失消息。这意味着在极高的负载下,如果服务器进程试图在收集器已经 落后时发送更多的日志消息,那么它会被阻塞。相反,syslog 倾向于在无法写入消息时丢掉消息,这意味着在 这样的情况下它可能会无法记录某些消息,但是它不会阻塞系统的其他部分。 log_directory 80 第 2 章 服务器配置参数 属性 描述 类型 string 默认值 sys_log 级别 SIGHUP---会话级 当 logging_collector 被启用时,这个参数决定日志文件将被在哪个目录下创建。它可以被指定为一个绝对路 径,也可以被指定为一个相对于集簇数据目录的相对路径。这个参数只能在 kingbase.conf 文件中或在服务器 命令行上设置。默认是 sys_log。 log_filename 属性 描述 类型 string 默认值 kingbase-%Y-%m-%d_%H%M%S.log 级别 SIGHUP---会话级 当 logging_collector 被启用时,这个参数设置被创建的日志文件的文件名。该值被视为一种 strftime 模 式,因此% 转义可以被用来指定根据时间变化的文件名(注意如果有任何时区独立的% 转义,计算将在由 log_timezone 指定的时区中完成)。被支持的% 转义和开放组织的 strftime 说明中列举的类似。注意系统的 strftime 不会被直接使用,因此平台相关(非标准)的扩展无法工作。默认是 kingbase-%Y-%m-%d_%H%M%S. log。 如果不使用转义来指定一个文件名,则应该计划使用一个日志轮转工具来避免最终填满整个磁盘。在 8.4 发行 之前,如果不存在% 转义,KingbaseES 将追加新日志文件创建时间的纪元,但是现在已经不再这样做了。 如果在 log_destination 中启用了 CSV 格式输出,.csv 将会被追加到时间戳日志文件名中来创建 CSV 格式 输出(如果 log_filename 以.log 结尾,该后缀会被替换)。 这个参数只能在 kingbase.conf 文件中或在服务器命令行上设置。 log_file_mode 属性 描述 类型 integer 默认值 0600 级别 SIGHUP---会话级 在 Unix 系统上,当 logging_collector 被启用时,这个参数设置日志文件的权限(在微软 Windows 上这个 81 第 2 章 服务器配置参数 参数将被忽略)。这个参数值应当是一个数字形式的模式,它可以被 chmod 和 umask 系统调用接受(要使用 通常的十进制格式,该数字必须以一个 0(零)开始)。 默认的权限是 0600,表示只有服务器拥有者才能读取或写入日志文件。其他常用的设置是 0640,它允许拥有 者的组成员读取文件。不过需要修改 log_directory 为将文件存储在集簇数据目录之外的某个位置,才能利用这 个设置。在任何情况下,让日志文件变成任何人都可读是不明智的,因为日志文件中可能包含敏感数据。 这个参数只能在 kingbase.conf 文件中或在服务器命令行上设置。 log_rotation_age 属性 描述 类型 integer 默认值 1d 级别 SIGHUP---会话级 当 logging_collector 被启用时,这个参数决定一个个体日志文件的最长生命期。当这些分钟过去后,一个 新的日志文件将被创建。将这个参数设置为零将禁用基于时间的新日志文件创建。这个参数只能在 kingbase. conf 文件中或在服务器命令行上设置。 log_rotation_size 属性 描述 类型 integer 默认值 10MB 级别 SIGHUP---会话级 当 logging_collector 被启用时,这个参数决定一个个体日志文件的最大尺寸。当这么多千字节被发送到一 个日志文件后,将创建一个新的日志文件。将这个参数设置为零将禁用基于尺寸的新日志文件创建。这个参数 只能在 kingbase.conf 文件中或在服务器命令行上设置。 log_truncate_on_rotation 属性 描述 类型 boolean 默认值 off 级别 SIGHUP---会话级 当 logging_collector 被启用时,这个参数将导致 KingbaseES 截断(覆盖而不是追加)任何已有的同名日志 82 第 2 章 服务器配置参数 文件。不过,截断只在一个新文件由于基于时间的轮转被打开时发生,在服务器启动或基于尺寸的轮转时不会 发生。如果被关闭,在所有情况下以前存在的文件将被追加。例如,使用这个设置和一个类似 kingbase-%H. log 的 log_filename 将导致产生 24 个每小时的日志文件,并且循环地覆盖它们。这个参数只能在 kingbase. conf 文件中或在服务器命令行上设置。 例子:要保留 7 天的日志,每天的一个日志文件被命令为 server_log.Mon、server_log.Tue 等等, 并且自动用本周的日志覆盖上一周的日志。可以这样做:将 log_filename 设置为 server_log.%a、将 log_truncate_on_rotation 设置为 on 并且将 log_rotation_age 设置为 1440。 例子:要保留 24 小时的日志,每个小时一个日志文件,但是在日志文件尺寸超过 1GB 时轮转。可 以这样做:将 log_filename 设置为 server_log.%H%M、将 log_truncate_on_rotation 设置为 on、将 log_rotation_age 设置为 60 并且将 log_rotation_size 设置为 1000000。在 log_filename 中包括%M 允 许发生任何尺寸驱动的轮转来选择一个不同于每个小时的初始文件名的新文件名。 syslog_facility 属性 描述 类型 enum 默认值 LOCAL0 级别 SIGHUP---会话级 当启用了向 syslog 记录时,这个参数决定要使用的 syslog“设备”。可以在 LOCAL0、LOCAL1、LOCAL2、 LOCAL3、LOCAL4、LOCAL5、LOCAL6、LOCAL7 中选择,默认值是 LOCAL0。还请参阅系统的 syslog 守护进程的 文档。这个参数只能在 kingbase.conf 文件中或在服务器命令行上设置。 syslog_ident 属性 描述 类型 string 默认值 kingbase 级别 SIGHUP---会话级 当启用了向 syslog 记录时,这个参数决定用来标识 syslog 中的 KingbaseES 消息的程序名。默认值是 kingbase。这个参数只能在 kingbase.conf 文件中或在服务器命令行上设置。 syslog_sequence_numbers 83 第 2 章 服务器配置参数 属性 描述 类型 boolean 默认值 on 级别 SIGHUP---会话级 当日志被记录到 syslog 并且这个设置为 on(默认)时,每一个消息会被加上一个增长的序号作为前缀(例如 [2])。这种行为避开了很多 syslog 实现默认采用的“--- 上一个消息重复 N 次 ---”形式。在现代 syslog 实现 中,抑制重复消息是可以配置的(例如 rsyslog 中的 $RepeatedMsgReduction),因此这个参数可能不是必需 的。此外,如果想抑制重复消息,可以把这个参数设置为 off。 这个参数只能在 kingbase.conf 文件或者服务器命令行上设置。 syslog_split_messages 属性 描述 类型 boolean 默认值 on 级别 SIGHUP---会话级 当启用把日志记录到 syslog 时,这个参数决定消息如何送达 syslog。当设置为 on(默认)时,消息会被分成 行,并且长的行也会被划分以便能够放到 1024 字节中,这是传统 syslog 实现一种典型的尺寸限制。当设置为 off 时,KingbaseES 服务器日志消息会被原样送达 syslog 服务,而处理可能的大体量消息的任务由 syslog 服务 负责。 如果 syslog 最终被记录到一个文本文件中,那么两种设置的效果是一样的,但最好设置为 on,因为大部分 syslog 实现要么不能处理大型消息,要么需要做特殊的配置以处理大型消息。但是如果 syslog 最终写入到某种其他 媒介,有必要让消息保持逻辑上的整体性(也更加有用)。 这个参数只能在 kingbase.conf 文件或者服务器命令行上设置。 event_source 属性 描述 类型 string 默认值 Kingbase 级别 KINGBASE---实例级 当 启 用 了 向 事 件 日 志 记 录 时, 这 个 参 数 决 定 用 来 标 识 日 志 中 KingbaseES 消 息 的 程 序 名。 默 认 值 是 84 第 2 章 服务器配置参数 KingbaseES。这个参数只能在 kingbase.conf 文件中或在服务器命令行上设置。 2.9.2 什么时候记录日志 log_min_messages 属性 描述 类型 enum 默认值 warning 级别 SUPERUSER---超级用户级 控 制 哪 些 消 息 级 别 被 写 入 到 服 务 器 日 志。 有 效 值 是 DEBUG5、DEBUG4、DEBUG3、DEBUG2、DEBUG1、INFO、 NOTICE、WARNING、ERROR、LOG、FATAL 和 PANIC。每个级别都包括以后的所有级别。级别越靠后,被发送的 消息越少。默认值是 WARNING。注意 LOG 在这里有与 client_min_messages 中不同的排名。只有超级用户可以 改变这个设置。 log_min_error_statement 属性 描述 类型 enum 默认值 error 级别 SUPERUSER---超级用户级 控制哪些导致一个错误情况的 SQL 语句被记录在服务器日志中。任何指定严重级别或更高级别的消息的当 前 SQL 语句将被包括在日志项中。有效值是 DEBUG5、DEBUG4、DEBUG3、DEBUG2、DEBUG1、INFO、NOTICE、 WARNING、ERROR、LOG、FATAL 和 PANIC。默认值是 ERROR,它表示导致错误、日志消息、致命错误或恐慌错 误的语句将被记录在日志中。要有效地关闭记录失败语句,将这个参数设置为 PANIC。只有超级用户可以改变 这个设置。 log_min_duration_statement 属性 描述 类型 integer 默认值 -1 级别 SUPERUSER---超级用户级 85 第 2 章 服务器配置参数 如果语句运行至少指定的毫秒数,将导致记录每一个这种完成的语句的持续时间。将这个参数设置为零将打印 所有语句的执行时间。设置为 -1 (默认值)将停止记录语句持续时间。例如,如果设置它为 250ms,那么所有 运行 250ms 或更久的 SQL 语句将被记录。启用这个参数可以有助于追踪应用中未优化的查询。只有超级用户 可以改变这个设置。 对于使用扩展查询协议的客户端,解析、绑定和执行步骤的持续时间将被独立记录。 注意: 当把这个选项和 log_statement 一起使用时,已经被 log_statement 记录的语句文本不会在持续时间 日志消息中重复。如果没有使用 syslog,推荐使用 log_line_prefix 记录 PID 或会话 ID,这样可以使用进程 ID 或会话 ID 把语句消息链接到后来的持续时间消息。 log_transaction_sample_rate 属性 描述 类型 real 默认值 0.0 级别 SUPERUSER---超级用户级 设置所有语句都被记录的事务的部分,以及由于其他原因而记录的语句。它适用于每个新事务,而不考虑其 语句的持续时间。默认是 0,意思是不记录任何额外事务的语句。将其设置为 1 记录所有事务的所有语句。 log_transaction_sample_rate 有助于跟踪事务的样本。 注意: 与所有语句日志记录选项一样,此选项可能会增加大量开销。 表” 消息严重级别” 解释了 KingbaseES 所使用的消息严重级别。如果日志输出被发送到 syslog 或 Windows 的 eventlog,严重级别会按照表中所示进行转换。 86 第 2 章 服务器配置参数 表 2.9.1: 消息严重级别 严重性 用法 syslog eventlog DEBUG1..DEBUG5 为开发者提供连续的更详细的信 DEBUG INFORMATION INFO INFORMATION NOTICE INFORMATION NOTICE WARNING WARNING ERROR INFO INFORMATION ERR ERROR CRIT ERROR 息。 提供用户隐式要求的信息,例如来 INFO 自 VACUUM VERBOSE 的输出。 提供可能对用户有用的信息,例如 NOTICE 长标识符截断提示。 提供可能出现的问题的警告,例如 WARNING 在一个事务块外 COMMIT。 报告一个导致当前命令中断的错 ERROR 误。 报告管理员可能感兴趣的信息,例 LOG 如检查点活动。 报告一个导致当前会话中断的错 FATAL 误。 报告一个导致所有数据库会话中断 PANIC 的错误。 2.9.3 记录什么到日志 application_name 属性 描述 类型 string 默认值 ’’ 级别 USER---用户级 application_name 可以是任意小于 NAMEDATALEN 个字符(标准编译中是 64 个字符)的字符串。这通常由一 个应用通过到服务器的连接设置。该名称将被显示在 sys_stat_activity 视图中并被包括在 CSV 日志项中。 它也会被通过 log_line_prefix 包括在普通日志项中。只有可打印 ASCII 字符能被使用在 application_name 之中。其他字符将被替换为问号(?)。 debug_print_parse 87 第 2 章 服务器配置参数 属性 描述 类型 boolean 默认值 off 级别 USER---用户级 属性 描述 类型 boolean 默认值 off 级别 USER---用户级 属性 描述 类型 boolean 默认值 off 级别 USER---用户级 debug_print_rewritten debug_print_plan 这个参数启用发出各种调试输出。当设置时,会打印生成的解析树,查询重写输出,或执行的每个查询的执行 计划。这些信息是在 LOG 信息级别发出,因此默认的,它们会出现在服务器日志中,但不会发送给客户端。 可以通过 client_min_messages 和/或 log_min_messages 来设置。这些参数缺省是 off。这些参数将会让多种 调试输出被发出。当被设置时,它们为每一个被执行的查询打印结果分析树、查询重写器输出或执行计划。这 些消息在 LOG 消息级别上被发出,因此默认情况下它们将出现在服务器日志中但不会被发送到客户端。可以通 过调整 client_min_messages 和/或 log_min_messages 来改变这种情况。这些参数默认是关闭的。 debug_pretty_print 属性 描述 类型 boolean 默认值 on 级别 USER---用户级 88 第 2 章 服务器配置参数 当 被 设 置 时,debug_pretty_print 会 缩 进 由 debug_print_parse、debug_print_rewritten 或 debug_print_plan 产生的输出。这将导致比关闭参数时使用的“紧凑”模式可读性更强但是更长的输出。它 默认是打开的。 log_checkpoints 属性 描述 类型 boolean 默认值 off 级别 SIGHUP---会话级 导致检查点和重启点被记录在服务器日志中。一些统计信息也被包括在日志消息中,包括写入缓冲区的数据和 写它们所花的时间。这个参数只能在 kingbase.conf 文件中或在服务器命令行上设置。默认值是关闭。 log_connections 属性 描述 类型 boolean 默认值 off 级别 SUPERUSER_BACKEND---超级用户后台级 导致每一次尝试对服务器的连接被记录,客户端认证的成功完成也会被记录。只有超级用户能在会话开始时更 改这个参数,在会话中它不能被更改。默认为 off。 注意: 某些客户端程序(例如 ksql)在要求密码时会尝试连接两次,因此重复的“收到连接”消息并不一定表 示一个错误。 log_disconnections 属性 描述 类型 boolean 默认值 off 级别 SIGHUP---会话级 导致会话终止被记录。日志输出提供的信息类似于 log_connections,不过还外加会话的持续时间。只有超级 用户能在会话开始时更改这个参数,在会话中它不能被更改。默认为 off。 89 第 2 章 服务器配置参数 log_duration 属性 描述 类型 boolean 默认值 off 级别 SUPERUSER---超级用户级 导致每一个完成的语句的持续时间被记录。默认值是 off。只有超级用户可以改变这个设置。 对于使用扩展查询协议的客户端,解析、绑定和执行步骤的持续时间将被独立记录。 注 意: 授 权 log_duration 和设置 log_min_duration_statement 为 零 之 间 的 区 别 是, 超 过 log_min_duration_statement 强制查询的文本被记录,但这个选项不会。因此,如果 log_duration 为 on 并且 log_min_duration_statement 为正值,所有持续时间都将被记录,但是只有超过阈值的语句才会被 记录查询文本。这种行为有助于在高负载安装中收集统计信息。 log_error_verbosity 属性 描述 类型 enum 默认值 default 级别 SUPERUSER---超级用户级 控制为每一个被记录的消息要写入到服务器日志的细节量。有效值是 TERSE、DEFAULT 和 VERBOSE,每一个都 为显示的消息增加更多域。TERSE 排除记录 DETAIL、HINT、QUERY 和 CONTEXT 错误信息。VERBOSE 输出包括 SQLSTATE 错误码(见 KingbaseES 错误代码)以及产生错误的源代码文件名、函数名和行号。只有超级用户能 够更改这个设置。 log_hostname 属性 描述 类型 boolean 默认值 off 级别 SIGHUP---会话级 默认情况下,连接日志消息只显示连接主机的 IP 地址。打开这个参数将导致也记录主机名。注意根据主机名解 90 第 2 章 服务器配置参数 析设置,这可能会导致很微小的性能损失。这个参数只能在 kingbase.conf 文件中或在服务器命令行上设置。 log_line_prefix 属性 描述 类型 string 默认值 ’%m [%p] ’ 级别 SIGHUP---会话级 这是一个 printf 风格的字符串,它在每个日志行的开头输出。% 字符开始“转义序列”,它将被按照下文描 述的替换成状态信息。未识别的转义被忽略。其他字符被直接复制到日志行。某些转义只被会话进程识别并且 被主服务器进程等后台进程当作空。通过指定一个在% 之后和该选项之前的数字可以让状态信息左对齐或右对 齐。负值将导致在右边用空格填充状态信息已达到最小宽度,而正值则在左边填充。填充对于日志文件的人类 可读性大有帮助。这个参数只能在 kingbase.conf 文件中或在服务器命令行上设置。默认值是'%m [%p] ', 它记录时间戳和进程 ID。 91 第 2 章 服务器配置参数 转义 效果 只限会话 %a 应用名 是 %u 用户名 是 %d 数据库名 是 %r 远程主机名或 IP 地址,以及远程端口 是 %h 远程主机名或 IP 地址 是 %p 进程 ID 否 %t 无毫秒的时间戳 否 %m 带毫秒的时间戳 否 %n 带毫秒的时间戳(作为 Unix 时间戳) no %i 命令标签:会话当前命令的类型 是 %e SQLSTATE 错误代码 否 %c 会话 ID:见下文 否 %l 对每个会话或进程的日志行号,从 1 开始 否 %s 进程开始的时间戳 否 %v 虚拟事务 ID (backendID/localXID) 否 %x 事务 ID (如果未分配则为 0) 否 %q 不产生输出,但是告诉非会话进程在字符串的这一点停止;会话进程忽略 否 %% 纯文字 % 否 %c 转义打印一个准唯一的会话标识符,它由两个 4 字节的十六进制数(不带先导零)组成,以点号分 隔。这些数字是进程启动时间和进程 ID,因此%c 也可以被用作保存打印这些项的方式的空间。例如,要从 sys_stat_activity 生成会话标识符,使用这个查询: SELECT to_hex(trunc(EXTRACT(EPOCH FROM backend_start))::integer) || '.' || to_hex(pid) FROM sys_stat_activity; 提示: 如果为 log_line_prefix 设置了非空值,通常应该让它的最后一个字符为空格,这样用以提供和日志 行的剩余部分的视觉区别。也可以使用标点符号。 92 第 2 章 服务器配置参数 提示: Syslog 产生自己的时间戳和进程 ID 信息,因此,如果记录到 syslog,则不会包括一些转义。 提示: 在包括仅在会话(后端)上下文中可用的信息(如用户名或者数据库名)时,%q 转义很有用。例如: log_line_prefix = '%m [%p] %q%u@%d/%a ' log_lock_waits 属性 描述 类型 boolean 默认值 off 级别 SUPERUSER---超级用户级 控制当一个会话为获得一个锁等到超过 deadlock_timeout 时,是否要产生一个日志消息。这有助于决定是否所 等待造成了性能低下。默认值是 off。只有超级用户可以更改这个设置。 log_statement 属性 描述 类型 enum 默认值 none 级别 SUPERUSER---超级用户级 控制哪些 SQL 语句被记录。有效值是 none (off)、ddl、mod 和 all(所有语句)。ddl 记录所有数据定义语 句,例如 CREATE、ALTER 和 DROP 语句。mod 记录所有 ddl 语句,外加数据修改语句例如 INSERT, UPDATE、 DELETE、TRUNCATE, 和 COPY FROM。如果 PREPARE、EXECUTE 和 EXPLAIN ANALYZE 包含合适类型的命令,它 们也会被记录。对于使用扩展查询协议的客户端,当收到一个执行消息时会产生日志并且会包括绑定参数的值 (任何内嵌的单引号会被双写)。 默认值是 none。只有超级用户可以改变这个设置。 注意: 即使使用 log_statement = all 设置,包含简单语法错误的语句也不会被记录。这是因为只有在完成基 本语法解析并确定了语句类型之后才会发出日志消息。在扩展查询协议的情况下,在执行阶段之前(即在解析 分析或规划期间)出错的语句也不会被记录。将 log_min_error_statement 设置为 ERROR(或更低)来记录 这种语句。 93 第 2 章 服务器配置参数 log_replication_commands 属性 描述 类型 boolean 默认值 off 级别 SUPERUSER---超级用户级 导致每一个复制命令都被记录在服务器日志中。默认值是 off。只有超级用户可以更改这个设置。 log_temp_files 属性 描述 类型 integer 默认值 -1 级别 SUPERUSER---超级用户级 控制记录临时文件名和尺寸。临时文件可以被创建用来排序、哈希和存储临时查询结果。当每一个临时文件被 删除时都会制作一个日志项。一个零值记录所有临时文件信息,而正值只记录尺寸大于或等于指定千字节数的 文件。默认设置为 -1,它禁用这种记录。只有超级用户可以更改这个设置。 log_timezone 属性 描述 类型 string 默认值 ’Atlantic/Reykjavik’ 级别 SIGHUP---会话级 设置在服务器日志中写入的时间戳的时区。和 TimeZone 不同,这个值是集簇范围的,因此所有会话将报告一 致的时间戳。内建默认值是 GMT,但是通常会被在 kingbase.conf 中覆盖。initdb 将安装一个对应于其系统环 境的设置。这个参数只能在 kingbase.conf 文件中或在服务器命令行上设置。 2.9.4 使用 CSV 格式的日志输出 在 log_destination 列表中包括 csvlog 提供了一种便捷方式将日志文件导入到一个数据库表。这个选项发 出逗号分隔值(CSV)格式的日志行,包括这些列:带毫秒的时间戳、用户名、数据库名、进程 ID、客户端主机、 94 第 2 章 服务器配置参数 端口号、会话 ID、每个会话的行号、命令标签、会话开始时间、虚拟事务 ID、普通事务 ID、错误严重性、SQLSTATE 代码、错误消息、错误消息详情、提示、导致错误的内部查询(如果有)、错误位置所在的字符计数、错 误上下文、导致错误的用户查询(如果有且被 log_min_error_statement 启用)、错误位置所在的字符计数、在 KingbaseES 源代码中错误的位置(如果 log_error_verbosity 被设置为 verbose)以及应用名。下面是一个定义 用来存储 CSV 格式日志输出的样表: CREATE TABLE kingbase_log ( log_time timestamp(3) with time zone, user_name text, database_name text, process_id integer, connection_from text, session_id text, session_line_num bigint, command_tag text, session_start_time timestamp with time zone, virtual_transaction_id text, transaction_id bigint, error_severity text, sql_state_code text, message text, detail text, hint text, internal_query text, internal_query_pos integer, context text, query text, query_pos integer, location text, application_name text, PRIMARY KEY (session_id, session_line_num) ); 使用 COPY FROM 命令将一个日志文件导入到这个表中: COPY kingbase_log FROM '/full/path/to/logfile.csv' WITH csv; 可以做一些事情来简化导入 CSV 日志文件: 1. 设置 log_filename 和 log_rotation_age 为日志文件提供一种一致的、可预测的命名空间。 2. 将 log_rotation_size 设置为 0 来禁用基于尺寸的日志轮转,因为它使得日志文件名难以预测。 3. 将 log_truncate_on_rotation 设置为 on,这样在同一个文件中旧日志数据不会与新数据混杂。 4. 上述表定义包括一个主键声明。这有助于避免意外地两次导入相同的信息。COPY 命令一次提交所有它导入的 数据,因此任何错误将导致整个导入失败。如果导入一个部分完成的日志文件并且稍后当它完全完成后再次导 95 第 2 章 服务器配置参数 入,主键违背将导致导入失败。请等到日志完成且被关闭之后再导入。这个过程也可以避免意外地导入部分完 成的行,这种行也将导致 COPY 失败。 2.9.5 进程标题 这些设置控制服务器进程的进程标题如何被修改。进程标题通常可以用 ps 或者 Windows 上的进程浏览器等程序 来查看。 cluster_name 属性 描述 类型 string 默认值 ’’ 级别 KINGBASE---实例级 为各种目的设置标识此数据库集群 (实例) 的名称。集群名称出现在该集群中所有服务器进程的进程标题中。而 且,它是备用连接的默认应用程序名称 (参考 synchronous_standby_names ) 为 这 个 集 簇 中 所 有 的 服 务 器 进 程 设 置 出 现 在 进 程 标 题 中 的 集 簇 名 称。 这 个 名 称 可 以 是 任 何 长 度 不 超 过 NAMEDATALEN 个字符(在标准编译中是 64 字符)的任何字符串。只有可打印的 ASCII 字符能被用在 cluster_name 值中。其他字符将被替换为问号(?)。如果这个参数被设置为空字符串 ''(也是默认值),将 不会显示名称。这个参数只能在服务器启动时设置。 update_process_title 属性 描述 类型 boolean 默认值 off 级别 SUPERUSER---超级用户级 启用进程标题更新,每次服务器接收到一个新的 SQL 命令时都更新进程标题。在大部分平台上这个设置默认为 on,但是由于 Windows 上更新进程标题的开销更大,所以在 Windows 这个设置默认为 off。只有超级用户能 更改这个设置。 96 第 2 章 服务器配置参数 2.10 运行时统计数据 2.10.1 查询和索引统计收集器 这些参数控制服务器范围的统计数据收集特性。当统计收集被启用时,被产生的数据可以通过 sys_stat 和 sys_statio 系统视图族访问。 track_activities 属性 描述 类型 boolean 默认值 on 级别 KINGBASE---实例级 启用对每个会话的当前执行命令的信息收集,还有命令开始执行的时间。这个参数默认为打开。注意即使被启 用,这些信息也不是对所有用户可见,只有超级用户和拥有报告信息的会话的用户可见,因此它不会表现为一 个安全风险。只有超级用户可以更改这个设置。 track_activity_query_size 属性 描述 类型 integer 默认值 1024 级别 KINGBASE---实例级 指定跟踪每个活动会话当前执行命令所保留的字节数,它们被用于 sys_stat_activity.query 域。默认值是 1024。这个参数只能在服务器启动时被设置。 track_counts 属性 描述 类型 boolean 默认值 on 级别 SUPERUSER---超级用户级 启用在数据库活动上的统计收集。这个参数默认为打开,因为自动清理守护进程需要被收集的信息。只有超级 用户可以更改这个设置。 97 第 2 章 服务器配置参数 track_io_timing 属性 描述 类型 boolean 默认值 off 级别 SUPERUSER---超级用户级 启用对系统 I/O 调用的计时。这个参数默认为关闭,因为它将重复地向操作系统查询当前时间,这会在某些 平台上导致显著的负荷。可以使用 sys_test_timing 工具来度量系统中计时的开销。I/ O 计时信息被显示在 sys_stat_database 中、当 BUFFERS 选项被使用时的 EXPLAIN 输出中。只有超级用户可以更改这个设置。 track_functions 属性 描述 类型 enum 默认值 none 级别 SUPERUSER---超级用户级 启用跟踪函数调用计数和用时。指定 pl 只跟踪过程语言函数,指定 all 还会跟踪 SQL 和 C 语言函数。默认 值是 none,它禁用函数统计跟踪。只有超级用户可以更改这个设置。 注意: 简单到足以被“内联”到调用查询中的 SQL 语言函数不会被跟踪,而不管这个设置。 stats_temp_directory 属性 描述 类型 string 默认值 ” 级别 SIGHUP---会话级 设 置 存 储 临 时 统 计 数 据 的 目 录。 这 可 以 是 一 个 相 对 于 数 据 目 录 的 路 径 或 一 个 绝 对 路 径。 默 认 值 是 sys_stat_tmp。在一个基于 RAM 的文件系统上指明这个参数将降低物理 I/ O 需求,并且提高性能。这 个参数只能在 kingbase.conf 文件中或在服务器命令行上设置。 98 第 2 章 服务器配置参数 2.10.2 统计监控 log_statement_stats 属性 描述 类型 boolean 默认值 off 级别 SUPERUSER---超级用户级 属性 描述 类型 boolean 默认值 off 级别 SUPERUSER---超级用户级 属性 描述 类型 boolean 默认值 off 级别 SUPERUSER---超级用户级 属性 描述 类型 boolean 默认值 off 级别 SUPERUSER---超级用户级 log_parser_stats log_planner_stats log_executor_stats 对每个查询,向服务器日志里输出相应模块的性能统计。这是一种粗糙的分析工具。类似于 Unix 的 getrusage() 系统功能。log_statement_stats 报告总的语句统计,而其它的报告针每个模块的统计。 log_statement_stats 不能和其它任何针对每个模块统计的选项一起启用。所有这些选项都是默认禁用的。只 有超级用户可以更改这个设置。 99 第 2 章 服务器配置参数 2.11 自动清理 这些设置控制 autovacuum 特性的行为。注意很多这些设置可以被针对每个表的设置所覆盖,见存储参数。 autovacuum 属性 描述 类型 boolean 默认值 on 级别 SIGHUP---会话级 控 制 服 务 器 是 否 运 行 自 动 清 理 启 动 器 后 台 进 程。 默 认 为 开 启, 不 过 要 自 动 清 理 正 常 工 作 还 需 要 启 用 track_counts 。该参数只能在 kingbase.conf 文件或服务器命令行中设置,但是,通过更改表存储参数 可以为表禁用自动清理。 注意即使该参数被禁用,系统也会在需要防止事务 ID 回卷时发起清理进程。 log_autovacuum_min_duration 属性 描述 类型 integer 默认值 -1 级别 SIGHUP---会话级 如果自动清理运行至少该值所指定的毫秒数,被自动清理执行的每一个动作都会被日志记录。将该参数设置为 0 会记录所有的自动清理动作。-1(默认值)将禁用对自动清理动作的记录。 例如,如果将它设置为 250ms,则所有运行 250ms 或更长时间的自动清理和分析将被记录。此外,当该参数被 设置为除-1 外的任何值时,如果一个自动清理动作由于一个锁冲突或者被并发删除的关系而被跳过,将会为此 记录一个消息。开启这个参数对于追踪自动清理活动非常有用。这个参数只能在 kingbase.conf 文件或者服务 器命令行中设置。但是可以通过更改表的存储参数为个别表覆盖这个设置。 autovacuum_max_workers 属性 描述 类型 integer 默认值 3 级别 SIGHUP---会话级 100 第 2 章 服务器配置参数 指定能同时运行的自动清理进程(除了自动清理启动器之外)的最大数量。默认值为 3。该参数只能在服务器 启动时设置。 autovacuum_naptime 属性 描述 类型 integer 默认值 1min 级别 SIGHUP---会话级 指定自动清理在任意给定数据库上运行的最小延迟。在每一轮中后台进程检查数据库并根据需要为数据库中的 表发出 VACUUM 和 ANALYZE 命令。延迟以秒计,且默认值为 1 分钟(1min)。该参数只能在 kingbase.conf 文件或在服务器命令行上设置。 autovacuum_vacuum_threshold 属性 描述 类型 integer 默认值 50 级别 SIGHUP---会话级 指定能在一个表上触发 VACUUM 的被插入、被更新或被删除元组的最小数量。默认值为 50 个元组。该参数只能 在 kingbase.conf 文件或在服务器命令中设置。但是对个别表可以通过修改表存储参数来覆盖该设置。 autovacuum_analyze_threshold 属性 描述 类型 integer 默认值 50 级别 SIGHUP---会话级 指定能在一个表上触发 ANALYZE 的被插入、被更新或被删除元组的最小数量。默认值为 50 个元组。该参数只 能在 kingbase.conf 文件或在服务器命令中设置。但是对个别表可以通过修改表存储参数来覆盖该设置。 autovacuum_vacuum_scale_factor 101 第 2 章 服务器配置参数 属性 描述 类型 real 默认值 0.2 级别 SIGHUP---会话级 指定一个表尺寸的分数,在决定是否触发 VACUUM 时将它加到 autovacuum_vacuum_threshold 上。默认值为 0.2(表尺寸的 20%)。该参数只能在 kingbase.conf 文件或在服务器命令中设置。但是对个别表可以通过修 改表存储参数来覆盖该设置。 autovacuum_analyze_scale_factor 属性 描述 类型 real 默认值 0.2 级别 SIGHUP---会话级 指定一个表尺寸的分数,在决定是否触发 ANALYZE 时将它加到 autovacuum_analyze_threshold 上。默认值 为 0.2(表尺寸的 20%)。该参数只能在 kingbase.conf 文件或在服务器命令中设置。但是对个别表可以通过 修改表存储参数来覆盖该设置。 autovacuum_freeze_max_age 属性 描述 类型 integer 默认值 200000000 级别 KINGBASE---实例级 指定在一个 VACUUM 操作被强制执行来防止表中事务 ID 回卷之前,一个表的 sys_class.relfrozenxid 域能 保持的最大年龄(事务的)。注意即便自动清理被禁用,系统也将发起自动清理进程来阻止回卷。清理也允许 从 sys_xact 子目录中移除旧文件,默认值为 2 亿事务。该参数只能在服务器启动时设置,但是对于个别表可 以通过修改表存储参数来降低该设置。 autovacuum_multixact_freeze_max_age 102 第 2 章 服务器配置参数 属性 描述 类型 integer 默认值 400000000 级别 KINGBASE---实例级 指定在一个 VACUUM 操作被强制执行来防止表中多事务 ID 回卷之前,一个表的 sys_class.relminmxid 域能保 持的最大年龄(多事务的)。注意即便自动清理被禁用,系统也将发起自动清理进程来阻止回卷。 清理多事务也允许从 sys_multixact/members 和 sys_multixact/offsets 子目录中移除旧文件,默认值为 4 亿事务。该参数只能在服务器启动时设置,但是对于个别表可以通过修改表存储参数来降低该设置。 autovacuum_vacuum_cost_delay 属性 描述 类型 real 默认值 2ms 级别 SIGHUP---会话级 指定用于自动 VACUUM 操作中的代价延迟值。如果值为-1,则使用 vacuum_cost_delay 值。默认值为 2 毫秒。 该参数只能在 kingbase.conf 文件或在服务器命令中设置。但是对个别表可以通过修改表存储参数来覆盖该设 置。 autovacuum_vacuum_cost_limit 属性 描述 类型 integer 默认值 -1 级别 SIGHUP---会话级 指定用于自动 VACUUM 操作中的代价限制值。如果指定-1(默认值),则使用 vacuum_cost_limit 值。注意该 值被按比例地分配到运行中的自动清理工作者上(如果有多个),因此每一个工作者的限制值之和不会超过这 个变量中的值。该参数只能在 kingbase.conf 文件或在服务器命令中设置。但是对个别表可以通过修改表存储 参数来覆盖该设置。 103 第 2 章 服务器配置参数 2.12 客户端联接默认 2.12.1 语句动作 client_min_messages 控 制 被 发 送 给 客 户 端 的消 息 严 重 级 别 属性 描述 类型 enum 默认值 NOTICE 级别 USER---用户级 。 有 效 值 是 DEBUG5、DEBUG4、DEBUG3、DEBUG2、DEBUG1、LOG、 NOTICE、WARNING、ERROR。每个级别都包括其后的所有级别。级别越靠后,被发送的消息越少。默认值是 NOTICE。 注意 LOG 在这里有与 log_min_messages 中不同的排名。 INFO 级别的消息总是被发送到客户端。 search_path 属性 描述 类型 string 默认值 ”$user”, public 级别 USER---用户级 这个变量指定当一个对象(表、数据类型、函数等)被用一个无模式限定的简单名称引用时,用于进行搜索该 对象的模式顺序。当在不同模式中有同名对象时,将使用第一个在搜索路径中被找到的对象。一个不属于搜索 路径中任何一个模式的对象只能通过用限定名(带点号)指定包含它的模式来引用。search_path 的值必需是 一个逗号分隔的模式名列表。任何不是一个已有模式的名称,或者是一个用户不具有 USAGE 权限的模式,将被 安静地忽略。 如果列表项之一是特殊名 $user,则具有 SESSION_USER 返回的名字的模式将取代它(如果有这样一个模式并 且该用户有该模式的 USAGE 权限;如果没有,$user 会被忽略)。 同样,当前会话的临时表模式 sys_temp_nnn 也总是被搜索(如果存在)。它可以在路径中通过使用别名 sys_temp 显式列出。如果在路径中没有列出,那么会首先对它进行搜索(甚至是在 sys_catalog 之前)。然 而,临时模式只被用来搜索关系(表、视图、序列等)和数据类型名。它从不用于搜索函数或操作符名。 当对象创建时没有指定一个特定目标模式,它们将被放置在 search_path 中第一个合法模式中。如果搜索路径 为空将报告一个错误。 104 第 2 章 服务器配置参数 这个参数的缺省值是"$user", public。这种设置支持一个数据库(其中没有用户拥有私有模式,并且所有人 共享使用 public)、每个用户私有模式及其组合的共享使用。其它效果可以通过全局或者针对每个用户修改默 认搜索路径设置获得。 更多有关方案处理的信息,请参考 concept 数据库对象管理中的模式对象类型。特别地,只有当数据库只有一 个用户或者有少数的相互信任的用户时,默认配置是合适的。 搜索路径的当前有效值可以通过 SQL 函数 current_schemas 检查。它和检查 search_path 的值不太一样, 因为 current_schemas 显示出现在 search_path 中的项如何被解析。 row_security 属性 描述 类型 boolean 默认值 on 级别 USER---用户级 这个变量控制是否以抛出一个错误来代替应用一条行安全性策略。在设置为 on 时,策略正常应用。在设置为 off 时,只要有至少一条策略被应用则查询就会失败。默认为 on。受限的行可见性会导致不正确的结果时,可 将其改成 off。例如,sys_dump 默认会做这种更改。这个变量对能绕过每一条行安全性策略的角色(即超级 用户和具有 BYPASSRLS)属性的角色没有效果。 更多关于行安全性策略的信息请见 CREATE POLICY 。 default_table_access_method 属性 描述 类型 string 默认值 heap 级别 USER---用户级 如果 CREATE 命令没有显式指定访问方法,则此参数指定在创建表或物化视图时使用的默认表访问方法,或者 当 SELECT ... INTO 被使用,它不允许指定表访问方法。默认值是 heap。 default_tablespace 105 第 2 章 服务器配置参数 属性 描述 类型 string 默认值 ’’ 级别 USER---用户级 这个变量指定当一个 CREATE 命令没有显式指定一个表空间时,创建表的默认表空间。它还决定了一个分区关 系将把未来的分区指向的表空间。 该值要么是一个表空间的名字,要么是一个指定使用当前数据库默认表空间的空字符串。如果该值和任何现有 表空间的名字都不匹配,KingbaseES 将自动使用当前数据库的默认表空间。如果指定了一个非默认的表空间, 用户必须对它有 CREATE 权限,否则创建企图将失败。 这个变量不被用于临时表,对临时表会使用 temp_tablespaces 。 当创建数据库时也会使用这个变量。默认情况下,一个新数据库会从它的模板数据库继承其表空间设置。 default_index_tablespace 属性 描述 类型 string 默认值 ’’ 级别 USER---用户级 这个变量指定当一个 CREATE INDEX 命令没有显式指定一个表空间时,创建索引的默认表空间。 该值要么是一个表空间的名字,要么是一个指定使用当前数据库默认表空间的空字符串。如果该值和任何现有 表空间的名字都不匹配,KingbaseES 将自动使用当前数据库的默认表空间。如果指定了一个非默认的表空间, 用户必须对它有 CREATE 权限,否则创建企图将失败。 如果 default_index_tablespace 没有被设置,并且 CREATE INDEX 也没有显式的指定一个 TABLESPACE,那 么 INDEX 的将会建立在 default_tablespace 所指定的表空间中。 temp_tablespaces 属性 描述 类型 string 默认值 ’’ 级别 USER---用户级 106 第 2 章 服务器配置参数 这个变量指定当一个 CREATE 命令没有显式指定一个表空间时,创建临时对象(临时表和临时表上的索引)的 默认表空间。用于排序大型数据集的临时文件也被创建在这些表空间中。 该值是一个表空间名字的列表。当列表中有多于一个名称时,每次一个临时对象被创建时 KingbaseES 随机选 择列表中的一个成员。例外是在一个事务中,连续创建的临时对象被放置在里表中的连续表空间中。如果列表 被选中元素是一个空字符串,KingbaseES 将自动使用当前数据库的默认表空间。 当 temp_tablespaces 被交互式地设置时,指定一个不存在的表空间是一种错误,类似于为用户指定一个不 具有 CREATE 权限的表空间。不过,当使用一个之前设置的值时,不存在的表空间会被忽略,就像用户缺少 CREATE 权限的表空间一样。特殊地,使用一个在 kingbase.conf 中设置的值时,这条规则起效。 默认值是一个空字符串,它使得所有临时对象被创建在当前数据库的默认表空间中。 参阅 default_tablespace 。 check_function_bodies 属性 描述 类型 boolean 默认值 on 级别 USER---用户级 这个参数通常为打开。当设置为 off 时,它禁用 CREATE FUNCTION 期间对函数体字符串的验证。禁用验 证避免了验证处理的副作用并且避免了如向前引用导致的伪肯定。在代表其他用户载入函数之前设置这个参数 为 off;sys_dump 会自动这样做。 default_transaction_isolation 属性 描述 类型 enum 默认值 read committed 级别 USER---用户级 每个 SQL 事务都有一个隔离级别,可以是“读未提交”、“读已提交”、“可重复读”或者“可序列化”。这 个参数控制每个新事务的默认隔离级别。默认是“读已提交”。 更多信息请参考 SET TRANSACTION 语句。 default_transaction_read_only 107 第 2 章 服务器配置参数 属性 描述 类型 boolean 默认值 off 级别 USER---用户级 一个只读的 SQL 事务不能修改非临时表。这个参数控制每个新事务的默认只读状态。默认是 off(读/写)。 更多信息请参考 SET TRANSACTION 语句。 default_transaction_deferrable 属性 描述 类型 boolean 默认值 off 级别 USER---用户级 当运行在可序列化隔离级别时,一个可延迟只读 SQL 事务可以在它被允许继续之前延迟一段时间。但是,一旦 它开始执行就不会产生任何用来保证可序列化性的负荷;因此序列化代码将没有任何理由因为并发更新而强制 它中断,使得这个选项适合于长时间运行的只读事务。 这个参数控制每个新事务的默认可延迟状态。目前它对读写事务或者那些操作在低于可序列化隔离级别上的事 务无效。默认值是 off。 更多信息请参考 SET TRANSACTION 语句。 session_replication_role 属性 描述 类型 enum 默认值 origin 级别 USER---用户级 为当前会话控制复制相关的触发器和规则的触发。需要超级用户权限才能设置这个变量,并且会导致丢弃任何 之前缓存下来的查询计划。可能的值有 origin(默认)、replica 和 local。 这个设置的预期用途是由逻辑复制系统在应用所复制的更改时将它设置为 replica。其效果将是触发器和规 则(没有对其默认配置做修改)在复制机上将不会被触发。更多信息请参考 _CREATE_TABLE 和 ALTER_TABLE 语句的子句 ENABLE TRIGGER 以及 ENABLE RULE。 108 第 2 章 服务器配置参数 KingbaseES 在内部会把设置 origin 和 local 同样对待。第三方复制系统可能会把这两个值用于其内部目 的,例如把 local 用来标出一个不应复制其更改的会话。 因为外键被实现为触发器,将这个参数设置为 replica 还会禁用所有的外键检查,如果使用不当可能会让数据 处于一种不一致的状态。 statement_timeout 属性 描述 类型 integer 默认值 0 级别 USER---用户级 中止任何使用了超过指定毫秒数的语句,从命令到达服务器开始计时。如果 log_min_error_statement 被设 置为 ERROR 或更低,语句如果超时也会被记录。一个零值(默认)将关闭这个参数。 不推荐在 kingbase.conf 中设置 statement_timeout,因为它会影响所有会话。 lock_timeout 属性 描述 类型 integer 默认值 0 级别 USER---用户级 如果任何语句在试图获取表、索引、行或其他数据库对象上的锁时等到超过指定的毫秒数,该语句将被中止。 该时间限制独立地应用于每一次锁获取尝试。该限制会应用到显式锁定请求(如 LOCK TABLE 或不带 NOWAIT 的 SELECT FOR UPDATE)和隐式获得的锁。如果 log_min_error_statement 被设置为 ERROR 或更低,超时的 语句会被记录。一个零值(默认)将关闭这个参数。 与 statement_timeout 不同,这个超时只在等待锁时发生。注意,如果 statement_timeout 为非零,设置 lock_timeout 与之相同或更大的值没有意义,因为事务超时总是第一个被触发。 不推荐在 kingbase.conf 中设置 lock_timeout,因为它会影响所有会话。 idle_in_transaction_session_timeout 109 第 2 章 服务器配置参数 属性 描述 类型 integer 默认值 0 级别 USER---用户级 终止任何已经闲置超过这个参数所指定的时间(以毫秒计)的打开事务的会话。这使得该会话所持有的任何锁 被释放,并且其所持有的连接槽可以被重用,它也允许只对这个事务可见的元组被清理。 默认值 0 会禁用这个特性。 vacuum_freeze_table_age 属性 描述 类型 integer 默认值 150000000 级别 USER---用户级 当表的 sys_class.relfrozenxid 域达到该设置指定的年龄时,VACUUM 会执行一次激进的扫描。激进的扫描与 常规 VACUUM 的不同在于它会访问每一个可能包含未冻结 XID 或者 MXID 的页面,而不只是那些可能包含死 亡元组的页面。默认值是 1.5 亿个事务。用户可以把这个值设置为从 0 到 20 亿,但 VACUUM 会自动地将有效值 设置为 autovacuum_freeze_max_age 值的 95%,因此,在表上启动一次反回卷自动清理之前,有机会进行一 次定期手动 VACUUM。 vacuum_freeze_min_age 属性 描述 类型 integer 默认值 5000000 级别 USER---用户级 指定 VACUUM 在扫描表时用来决定是否冻结行版本的切断年龄(以事务计)。默认值是 5 百万个事务。尽管用 户可以将这个值设置为从 0 到 10 亿,但 VACUUM 会自动地将有效值设置为 autovacuum_freeze_max_age 值的 一半,这样在强制执行的自动清理之间不会有过短的时间间隔。 vacuum_multixact_freeze_table_age 110 第 2 章 服务器配置参数 属性 描述 类型 integer 默认值 150000000 级别 USER---用户级 如果表的 sys_class.relminmxid 域超过了这个设置指定的年龄,VACUUM 会执行一次激进的扫描。激进的扫描 与常规 VACUUM 的区别在于它会访问每一个可能包含未冻结 XID 或者 MXID 的页面,而不是只扫描那些可能 包含死亡元组的页面。默认值是 1.5 亿个组合事务。尽管用户可以把这个值设置为从 0 到 20 亿,VACUUM 会悄 悄地将有效值设置为 autovacuum_multixact_freeze_max_age 值的 95%,因此在表上启动一次反回卷自动清 理之前有机会进行一次定期手动 VACUUM。 vacuum_multixact_freeze_min_age 属性 描述 类型 integer 默认值 50000000 级别 USER---用户级 指定 VACUUM 在扫描表时用来决定是否把组合事务 ID 替换为一个更新的事务 ID 或组合事务 ID 的切断年龄 (以组合事务计)。默认值是 5 千万个组合事务。尽管用户可以将这个值设置为从 0 到 10 亿,VACUUM 会悄悄 地将有效值设置为 autovacuum_multixact_freeze_max_age 值的一半,这样在强制执行的自动清理之间不会 有过短的时间间隔。 vacuum_cleanup_index_scale_factor 属性 描述 类型 real 默认值 0.1 级别 USER---用户级 指定在以前的统计信息收集过程中计数到的堆元组总数的一个分数,插入不超过这一数量所代表的元组不 会导致 VACUUM 清理阶段的索引扫描。这个设置当前仅适用于 B-树索引。如果没有元组从堆中删除,则 当至少满足下列条件之一时,在 VACUUM 清理阶段仍会扫描 B-树索引:索引统计信息过时或者索引中包 含在清理时可回收的已删除页。如果新近插入的元组数占上次统计信息收集时检测到的堆元组总数的比例 超过 vacuum_cleanup_index_scale_factor,则认为索引信息已经过时。堆元组的总数被存放在索引的元页 中。注意,直到 VACUUM 找不到死亡元组之前,元页中都不包括这个数据。因此只有在第二次以及之后的 111 第 2 章 服务器配置参数 VACUUM 周期检测不到死亡元组时,清理阶段的 B-树索引扫描才能被跳过。该值的取值范围可以是从 0 到 10000000000。当 vacuum_cleanup_index_scale_factor 被设置为 0 时,在 VACUUM 清理期间不会跳过索引 扫描。默认值是 0.1。 bytea_output 属性 描述 类型 enum 默认值 hex 级别 USER---用户级 设置 bytea 类型值的输出格式。有效值是 hex(默认)和 escape(传统的 KingbaseES 格式)。不管这个设 置的值如何,bytea 类型总是接受这两种格式的输入。 xmlbinary 属性 描述 类型 enum 默认值 base64 级别 USER---用户级 设置二进制值如何被编码为 XML。例如,这适用于通过 xmlelement 函数或 xmlforest 函数将 bytea 值转换 到 XML 值。可能的值有 base64 和 hex,它们都是用 XML 模式标准定义的。默认值是 base64。更多关于 XML 相关函数的信息可参阅 XML 函数。 这里的实际选择都是根据爱好做出的,只受客户端应用中可能存在的限制的约束。两种方法都支持所有可能的 值,尽管十六进制编码将比 base64 编码更大。 xmloption 属性 描述 类型 enum 默认值 CONTENT 级别 USER---用户级 当在 XML 和字符串值之间进行转换时,无论设置 DOCUMENT 或 CONTENT 都是隐式的。有效值是 DOCUMENT 和 CONTENT。缺省值是 CONTENT。当在 XML 和字符串值之间进行转换时,设置 DOCUMENT 或 CONTENT 都是隐式 的。详见 XML 类型。有效值是 DOCUMENT 和 CONTENT。默认值是 CONTENT。 112 第 2 章 服务器配置参数 根据 SQL 标准,设置这个选项的命令是: SET XML OPTION { DOCUMENT | CONTENT }; 这种语法在 KingbaseES 也可用。 gin_pending_list_limit 属性 描述 类型 integer 默认值 4MB 级别 USER---用户级 设置 fastupdate 被启用时可以使用的 GIN 待处理列表的最大尺寸。如果该列表增长到超过这个最大尺寸,会 通过批量将其中的项移入主 GIN 数据结构来清理列表。默认值是四兆字节(4MB)。可以通过更改索引的存储 参数来为个别 GIN 索引覆盖这个设置。 2.12.2 本地化和格式化 DateStyle 属性 描述 类型 string 默认值 ISO, YMD 级别 USER---用户级 设置日期和时间值的显示格式,以及解释有歧义的日期输入值的规则。由于历史原因,这个变量包含两个 独立的部分:输出格式声明(ISO、kingbase、SQL 或 German)、输入/输出的年/月/日顺序(DMY、MDY 或 YMD)。这些可以被独立设置或者一起设置。关键字 Euro 和 European 是 DMY 的同义词;关键字 US、 NonEuro 和 NonEuropean 是 MDY 的同义词。详见 _KingbaseES SQL 基本元素中的日期/时间类型。内建默 认值是 ISO, MDY,但是 initdb 将用对应于选中的 lc_time 区域行为的设置初始化配置文件。 IntervalStyle 113 第 2 章 服务器配置参数 属性 描述 类型 enum 默认值 kingbase 级别 USER---用户级 设置间隔值的显示格式。值 sql_standard 将产生匹配 SQL 标准间隔文本的输出。当 DateStyle 参数被设置 为 ISO 时,值 kingbase(默认)将产生匹配 KingbaseES 版本之前的输出。当 DateStyle 参数被设置为非 ISO 输出时,值 kingbase_verbose 会产生匹配 KingbaseES 版本之前的输出。值 iso_8601 会产生匹配在 ISO 8601 的 4.4.3.2 节中定义的“带标志符格式”的时间间隔的输出。 IntervalStyle 参数也可以影响对有歧义的间隔输入的解释。 TimeZone 属性 描述 类型 string 默认值 GMT 级别 USER---用户级 设置用于显示和解释时间戳的时区。内建默认值是 GMT,但是它通常会在 kingbase.conf 中被覆盖;initdb 将 安装一个对应于其系统环境的设置。 timezone_abbreviations 属性 描述 类型 string 默认值 Default 级别 USER---用户级 设置服务器接受的日期时间输入中使用的时区缩写集合。默认值为'Default',这个集合在全世界大多数地方 都能工作。也还有'Australia'和'India',以及可能为一种特定安装定义的其他集合。 extra_float_digits 114 第 2 章 服务器配置参数 属性 描述 类型 integer 默认值 1 级别 USER---用户级 此参数调整用于浮点值文本输出的位数,包括 float4、float8 和 geometric 数据类型。 如果值为 1(默认值) 或以上,则以最简洁的格式输出浮点值;详见 KingbaseES SQL 基本元素中的数据类型下的 浮点类型。实际生成的位数只取决于输出的值,而不取决于此参数的值。float8 的值最多需要 17 位,float4 的值最多需要 9 位。这种格式既快速又精确,在正确读取时精确地保留了原始的二进制浮点值。对于历史兼容 性,最多允许有 3 个值。 如果值为 0 或负数,则输出四舍五入为给定的十进制精度。使用的精度是根据该参数的值减少的类型 (FLT_DIG 或 DBL_DIG) 的标准位数。(例如,指定-1 将导致 float4 的值四舍五入为 5 位有效数字,float8 的值四舍五 入为 14 位数字。) 这种格式比较慢,并且不会保留二进制浮点值的所有位,但是可能更易于阅读。 注意: 这个参数的设置,会改变 KingbaseES 中对浮点数的输出; 详见 KingbaseES SQL 基本元素中的数据类型 下的数值类型。 client_encoding 属性 描述 类型 string 默认值 sql_ascii 级别 USER---用户级 设置客户端编码(字符集)。默认使用数据库编码。KingbaseES 服务器所支持的字符集在 被支持的字符集中 描述。 lc_messages 属性 描述 类型 string 默认值 zh_CN.UTF-8 级别 SUPERUSER---超级用户级 115 第 2 章 服务器配置参数 设置消息显示的语言。可接受的值是系统相关的;详见 区域支持。如果这个变量被设置为空字符串,那么该值 将以一种系统相关的方式从服务器的执行环境中继承。 在一些系统上,这个区域分类并不存在。仍然可以设置这个变量,只是不会有任何效果。同样,所期望语言的 翻译消息也可能不存在。在这种情况下,消息以英文呈现。 只有超级用户可以改变这个设置。因为它同时影响发送到服务器日志和客户端的消息。一个不正确的值可能会 降低服务器日志的可读性。 lc_monetary 属性 描述 类型 string 默认值 zh_CN.UTF-8 级别 USER---用户级 设置用于格式化货币量的区域,可接受的值是系统相关的。详见 区域支持。如果这个变量被设置为空字符串, 那么该值将以一种系统相关的方式从服务器的执行环境中继承。 lc_numeric 属性 描述 类型 string 默认值 zh_CN.UTF-8 级别 USER---用户级 设置用于格式化数字的区域,可接受的值是系统相关的。详见 区域支持。如果这个变量被设置为空字符串,那 么该值将以一种系统相关的方式从服务器的执行环境中继承。 lc_time 属性 描述 类型 string 默认值 zh_CN.UTF-8 级别 USER---用户级 设置用于格式化日期和时间的区域,可接受的值是系统相关的。详见 区域支持。如果这个变量被设置为空字符 串(默认),那么该值将以一种系统相关的方式从服务器的执行环境中继承。 116 第 2 章 服务器配置参数 default_text_search_config 属性 描述 类型 string 默认值 sys_catalog.simple 级别 USER---用户级 选择被那些没有显式参数指定配置的文本搜索函数变体使用的文本搜索配置。内建默认值是 sys_catalog. simple,但是如果能够标识一个匹配区域的配置,initdb 将用对应于选中的 lc_ctype 区域的设置初始化配置 文件。 2.12.3 共享库预先加载 为了载入附加的功能或者达到提高性能的目的,可用多个设置来预先载入共享库到服务器中。例如'$libdir/ mylib'设置可能会导致 mylib.so(或者某些平台上的 mylib.sl)从安装的标准库目录被预装载。这些设置之间的 区别在于生效的时间以及改变它们所需的特权。 可以用这个方法预装载 KingbaseES 的过程语言库,通常是使用'$libdir/plXXX'语法,其中的 XXX 是 kingbase、perl、tcl 或 python。 只有特别为与 KingbaseES 一起使用设计的共享库才能以这种方式载入。每一个 KingbaseES 支持的库都有一个 “魔法块”,它会被检查以保证兼容性。由于这个原因,非 KingbaseES 无法以这种方式被载入。可以使用操作系统 的工具(如 ld_preload)载入它。 总之,请参考指定模块的说明文档,使用推荐的方法载入。 local_preload_libraries 属性 描述 类型 string 默认值 ’’ 级别 USER---用户级 这个变量指定一个或者多个要在连接开始时预载入的共享库。它包含一个由逗号分隔的库名列表,其中每个名 称都会按 LOAD 命令的方式解析。项之间的空格会被忽略,如果需要在库名中包含空格或者逗号,请把库名放 在双引号内。这个参数值只在连接开始时生效。后续的更改不会有任何效果。如果一个指定的库没有找到,连 接尝试将会失败。 任 何 用 户 都 能 设 置 这 个 选 项。 正 因 为 如 此, 能 被 这 样 载 入 的 库 被 严 格 限 制 为 出 现 于 安 装 的 标 准 库 目 录 中 plugins 子 目 录 下 的 共 享 库 (保 证 只 有 “安 全 的” 库 被 安 装 到 这 里 是 数 据 库 管 理 员 的 责 任)。 117 第 2 章 服务器配置参数 local_preload_libraries 中 的 项 可 以 显 式 指 定 这 个 目 录, 例 如 $libdir/plugins/mylib, 或 者 只 是 指 定库的名称 mylib,两者的效果是相同的。 这个特性的目的是允许非特权用户在特定的会话中载入正在调试的或者性能度量库,而无需一个显式的 LOAD 命令。为了这个目的,通常通过使用客户端的 KINGBASE_OPTIONS 环境变量或者 ALTER ROLE SET 来设置这个 参数。 不过,除非一个模块被特别设计成由非超级用户以这种方式使用,通常不推荐使用这个设置。应该看看 session_preload_libraries 。 session_preload_libraries 属性 描述 类型 string 默认值 ’’ 级别 SUPERUSER---超级用户级 这个变量指定一个或者多个要在连接开始时预载入的共享库。它包含一个由逗号分隔的库名列表,其中每个名 称都会按 LOAD 命令的方式解析。项之间的空格会被忽略,如果需要在库名中包含空格或者逗号,请把库名放 在双引号内。这个参数只在连接开始时起效。后续的改变没有效果。如果指定的库没有找到,连接尝试将会失 败。只有超级用户能够更改这个设置。 这个特性的意图是允许在特定会话中载入调试用的或者测量性能的库,而不需要显式的给出一个 LOAD 命令。还 有,无需重启服务器就能更改这个参数(但是只有新会话启动时才会生效),这样可以以这种方式更容易地增 加新模块,即便它们会应用到所有会话。 和 shared_preload_libraries 不同,相对于在库被第一次使用时载入它,在会话开始时载入库并没有什么性能优 势。不过,当使用连接池时这样做还是有一些优势。 shared_preload_libraries 属性 描述 类型 string 默认值 ’’ 级别 KINGBASE---实例级 这个变量指定一个或者多个要在服务器启动时预载入的共享库。它包含一个由逗号分隔的库名列表,其中每个 名称都会按 LOAD 命令的方式解析。项之间的空格会被忽略,如果需要在库名中包含空格或者逗号,请把库名 放在双引号内。这个参数只能在服务器启动时设置。如果指定的库没有找到,服务器将无法启动。 有些库需要执行只能在 kingbase 启动时发生的特定操作,例如分配共享内存、保留轻量级锁或者启动后台工作 者。这些库必须通过这个参数在服务器启动时载入。每个库的详情请见文档。 118 第 2 章 服务器配置参数 其他库也能被预载入。通过预载入一个共享库,当该库被第一次使用时就可以避免库的启动时间。不过,启动 每个新服务器进程的时间可能会略有增加,即使该进程从不使用该库。因此,推荐只把这个参数用于那些要在 大多数会话中使用的库上。还有,改变这个参数要求重启服务器,因此对于短期的调试任务来说这不是好的选 择,应该转用 session_preload_libraries 。 注意: 在 Windows 主机上,在服务器启动时预载入一个库并不会减少启动每个新服务器进程所需的时间;每一 个服务器进程将会重新载入预载入的库。不过,对于那些要在 kingbase 启动时执行操作的库来说,Windows 主 机上的 shared_preload_libraries 仍然有用。 jit_provider 属性 描述 类型 string 默认值 llvmjit 级别 KINGBASE---实例级 这个变量是要被使用的 JIT 提供者库的名称。默认是 llvmjit。这个参数只能在服务器启动时设置。 如果这个变量被设置为一个不存在的库,JIT 将不可用,但是也不会发生错误。这种特性允许在主 KingbaseES 包之外单独安装 JIT 支持。 2.12.4 其他默认值 dynamic_library_path 属性 描述 类型 string 默认值 $libdir 级别 SUPERUSER---超级用户级 如果需要打开一个可以动态装载的模块并且在 CREATE FUNCTION 或 LOAD 命令中指定的文件名没有目录部分 (即名字中不包含斜线),那么系统将搜索这个路径以查找所需的文件。 dynamic_library_path 的值必须是一个冒号分隔(或者在 Windows 上以分号分隔)的绝对目录路径的列表。 如果一个列表元素以特殊字符串开始,$libdir 会被替换为 KingbaseES 包中已编译好的库目录。这里是 KingbaseES 发布提供的模块被安装的位置(使用 sys_config --pkglibdir 来找到这个目录的名字)。例如: 119 第 2 章 服务器配置参数 dynamic_library_path = '/usr/local/lib/kingbase: /home/my_project/lib:$libdir' 或者在 Windows 环境中: dynamic_library_path = 'C:\tools\kingbase;H:\my_project\lib;$libdir' 这个参数的默认值是'$libdir'。如果该值被设置为一个空字符串,则关闭自动路径搜索。 这个参数可以在运行时由超级用户修改,但是这样修改的设置只能保持到这个客户端连接的结尾,因此这个方 法应该保留给开发目的。建议在 kingbase.conf 配置文件中设置这个参数。 gin_fuzzy_search_limit 属性 描述 类型 integer 默认值 0 级别 USER---用户级 GIN 索引返回的集合尺寸的软上限。 2.13 锁管理 deadlock_timeout 属性 描述 类型 integer 默认值 1s 级别 SUPERUSER---超级用户级 这是进行死锁检测之前在一个锁上等待的总时间(以毫秒计)。死锁检测相对昂贵,因此服务器不会在每次等 待锁时都运行这个它。我们乐观地假设在生产应用中死锁是不常出现的,并且只在开始检测死锁之前等待一会 儿。增加这个值就减少了浪费在无用的死锁检测上的时间,但是减慢了报告真正死锁错误的速度。默认是 1 秒(1s),这可能是实际中想要的最小值。在一个高负载的服务器上,可能需要增大它。这个值的理想设置应 该超过通常的事务时间,这样就可以减少在锁释放之前就开始死锁检查的机会。只有超级用户可以更改这个设 置。 120 第 2 章 服务器配置参数 当 log_lock_waits 被设置时,这个参数还可以决定发出关于锁等待的日志之前等待的时长。如果想调查锁延 迟,需要设置一个比正常的 deadlock_timeout 小的值。 max_locks_per_transaction 属性 描述 类型 integer 默认值 64 级别 KINGBASE---实例级 共享锁表跟踪在 max_locks_per_transaction * ( max_connections + max_prepared_transactions ) 个对 象(如表)上的锁。因此,在任何一个时刻,只有不超过这么多个可区分对象能够被锁住。这个参数控制为每 个事务分配的对象锁的平均数量。个体事务可以锁住更多对象,数量可以和锁表中能容纳的所有事务的锁一样 多。这不是能被锁住的行数,那个值是没有限制的。默认值 64 已经被历史证明是足够的,但是如果想在一个事 务中使用很多不同表的查询(例如查询一个有很多子表的父表),则需要提高这个值。这个参数只能在服务器 启动时设置。 当运行一个后备服务器时,必须设置这个参数为大于等于主服务器上的值。否则,后备服务器上将不允许查 询。 max_pred_locks_per_transaction 属性 描述 类型 integer 默认值 64 级别 KINGBASE---实例级 共享谓词锁表跟踪在 max_pred_locks_per_transaction * ( max_connections + max_prepared_transactions ) 个对象(如表)上的锁。因此,在任何一个时刻,只有不超过这么多个可区分对象能够被锁住。这个参数控制 为每个事务分配的对象锁的平均数量。个体事务可以锁住更多对象,数量可以和锁表中能容纳的所有事务的锁 一样多。这不是能被锁住的行数,那个值是没有限制的。默认值 64 已经在测试中被证明通常是足够的,但是 如果想要在一个可序列化事务中使用很多不同表的查询(例如查询一个有很多子表的父表),则需要提高这个 值。这个参数只能在服务器启动时设置。 max_pred_locks_per_relation 121 第 2 章 服务器配置参数 属性 描述 类型 integer 默认值 -2 级别 SIGHUP---会话级 这个参数控制在谓词锁被提升为覆盖整个关系之前,该谓词锁能够在单个关系上锁住多少页面或元组。大于等 于零的值表示一种绝对限制,而负值表示用 max_pred_locks_per_transaction 除以这个设置的绝对值。默认 值为-2,它将保持以往版本的 KingbaseES 中的行为。这个参数只能在 kingbase.conf 文件中或者服务器命令 行上设置。 max_pred_locks_per_page 属性 描述 类型 integer 默认值 2 级别 SIGHUP---会话级 这个参数控制在谓词锁被提升为覆盖整个页面之前,该谓词锁能在单一页面上锁住多少行。默认值是 2。这个 参数只能在 kingbase.conf 文件中或者服务器命令行上设置。 2.14 版本和平台兼容性 2.14.1 KingbaseES 老版本 array_nulls 属性 描述 类型 boolean 默认值 on 级别 USER---用户级 这个参数控制数组输入解析器是否把未用引号的 NULL 识别为一个空数组元素。默认为 on,允许输入包含 空值的数组值。但是 KingbaseES 之前的版本不支持数组中的空值,并且把 NULL 当作指定一个值为字符串 “NULL”的正常数组元素。对于那些要求旧行为的应用的向后兼容性,这个变量可以被设置为 off。 122 第 2 章 服务器配置参数 注意即使这个变量为 off 也能够创建包含空值的数组值。 backslash_quote 属性 描述 类型 enum 默认值 safe_encoding 级别 USER---用户级 这个参数控制字符串文本中的单引号是否能够用\'来表示。首选的 SQL 标准的方法是将其双写(''),但是 KingbaseES 在历史上也接受\'。不过使用\'容易导致安全风险,因为在某些客户端字符集编码中,有多字节字 符的最后一个字节在数值上等价于 ASCII 的\'。如果客户端代码没有做到正确转义,那么将会导致 SQL 注入攻 击。如果服务器拒绝看起来带有被反斜线转义的单引号的查询,那么就可以避免这种风险。backslash_quote 的可用值是 on(总是允许\')、off(总是拒绝)以及 safe_encoding(只有客户端编码不允许在多字节字符 中存在 ASCII \时允许)。safe_encoding 是默认设置。 注意在符合标准的字符串文本中,\就表示\。这个参数只影响不符合标准的文本的处理,包括转义字符串语法 (E'...')。 escape_string_warning 属性 描述 类型 boolean 默认值 on 级别 USER---用户级 打 开 时, 如 果 在 普 通 字 符 串 文 本 中 ('...'语 法) 出 现 了 一 个 反 斜 线 (\) 并 且 standard_conforming_strings 为关闭,那么就会发出一个警告。默认值是 on。 希望使用反斜线作为转义符的应用应该被修改来使用转义字符串语法(E'...'),因为在 SQL 标准中普通字符 串的默认行为是将反斜线视作一个普通字符。这个变量可以被启用来帮助定位需要被更改的代码。 locompatprivileges 属性 描述 类型 boolean 默认值 off 级别 USER---用户级 123 第 2 章 服务器配置参数 在 KingbaseES V8R2 之前,大对象不具有访问特权并且因此总是所有用户可读可写的。为了和以前的版本兼 容,把这个变量设置为 on 可以禁用这种新的特权检查。默认是 off。只有超级用户可以更改这个设置。 设置这个参数不会禁用所有与大对象相关的安全检查 --除了那些在 KingbaseES V8R2 中已经修改了的默认行 为。 operator_precedence_warning 属性 描述 类型 boolean 默认值 off 级别 USER---用户级 当开启时,对于任何从 KingbaseES V8R2 以来由于操作符优先级变化而导致含义改变的结构,解析器将发出一 个警告。这有助于审计应用,已检查是否优先级变化破坏了什么东西。但是它的本意并不是希望在生产环境中 保持打开,因为它会对某些完全合法、兼容标准的 SQL 代码发出警告。默认为 off。 更多操作符优先级信息请见 SQL 语言中的操作符部分。 quote_all_identifiers 属性 描述 类型 boolean 默认值 on 级别 USER---用户级 当数据库产生 SQL 时,强制所有标识符被引号包围,即使它们(当前)不是关键字。这将影响 EXPLAIN 的输 出以及 sys_get_viewdef 等函数的结果。另请参阅 sys_dump 和 sys_dumpall 的--quote-all-identifiers 选项。 standard_conforming_strings 属性 描述 类型 boolean 默认值 on 级别 USER---用户级 控制普通字符串文本('...')是否按照 SQL 标准把反斜线当普通文本。从 KingbaseES V8R2 开始,默认值 为 on(之前的发行中默认值为 off)。应用可以检查这个参数来判断字符串文本如何被处理。这个参数的存在 124 第 2 章 服务器配置参数 也可以被当做转义字符串语法(E'...')被支持的标志。如果一个应用希望反斜线被当做转义字符,应该使用 转义字符串语法(带有 C 型转义的字符串常量)。 synchronize_seqscans 属性 描述 类型 boolean 默认值 on 级别 USER---用户级 它允许对大型表的顺序扫描与其他扫描同步,因此并发扫描可以在几乎相同的时刻读取相同的块,这样可以分 担 I/O 负载。当启用这个参数时,一个扫描可能会从表的中间开始并且之后“绕回”到开头以覆盖所有的行, 这样可以与已在进行中的扫描活动同步。对于没有 ORDER BY 子句的查询来,这样的扫描会在返回行的顺序中 造成不可预料的改变。将这个参数设置为 off 以保证 KingbaseES V7 之前的行为(顺序扫描总是从表的起始 处开始)。默认值是 on。 enable_inplace_update 属性 描述 类型 boolean 默认值 off 级别 USER---用户级 控制本地更新表能否进行 inplace update,只有开启该参数且通过接口使用 PBE 方式才能进行本地更新,否则 仍然是通过正常的 MVCC 方式更新。本地更新指在 update 操作数据时直接在元组上覆盖老数据,而不是插入 新的元组,标记删除老元组。 inplace_update_lock_type 属性 描述 类型 integer 默认值 off 级别 KINGBASE---实例级 控制本地更新表在进行 inplace update 时开表锁表粒度,该参数类型为 int 型,默认值为 7,取值范围为 3~7。 comp_v7_program_para_def 125 第 2 章 服务器配置参数 属性 描述 类型 bool 默认值 off 级别 USER---用户级 该参数指定了 plsql 中是否启用兼容 KingbaseES V7 版本支持 OUT 参数指定默认值功能。当指定为 true 时, 表示支持 OUT 参数指定默认值;当指定为 false 时,表示不支持 OUT 参数指定默认值。 2.14.2 平台和客户端兼容性 transform_null_equals 属性 描述 类型 boolean 默认值 off 级别 USER---用户级 当打开时,形为 expr = NULL(或 NULL = expr)的表达式将被当做 expr IS NULL,也就是说,如果 “expr“得出空值值则返回真,否则返回假。正确的 SQL 标准兼容的 expr = NULL 行为总是返回空(未知)。 因此这个参数默认为 off。 不过,在 Microsoft Access 里的过滤表单生成的查询使用 expr = NULL 来测试空值,因此,如果希望使用这 个接口访问数据库,此选项需打开。因为 expr = NULL 形式的表达式总是返回空值(使用 SQL 标准解释)。 它们不是非常有用并且在普通应用中也不常见,在应用中也不常见,因此这个选项实际上没有什么危害。但是 新用户常常对涉及空值的表达式的语义上感到困惑,因此这个选项默认为关闭。 请注意这个选项只影响 = NULL 形式,而不影响其它比较操作符或者其它与一些涉及等值操作符的表达式在计 算上等效的其他表达式(例如 IN)。因此,这个选项不是劣质程序的一般修复。 相关信息请见 SQL 语言中的操作符部分。 2.14.3 一般特性兼容性 enable_autocommit_fetch 126 第 2 章 服务器配置参数 属性 描述 类型 boolean 默认值 off 级别 BACKEND---后台级 当客户端设置了 autocommit=true(自动提交模式)时,对于查询请求,在 enable_autocommit_fetch 设置为 off,服务端将一次性返回给客户端符合条件的所有记录。在设置为 on 时,服务端将按照客户端指定 fetchsize 值(JDBC 客户端应用调用 setFetchSize 方法设置)的数据量按需执行查询,并按需获取数据集返回给客户端 符合条件的记录。默认值是 off。 enable_autocommit_crossquery 属性 描述 类型 boolean 默认值 off 级别 BACKEND---后台级 在 enable_autocommit_fetch 设置为 on 的情况下有效。在 enable_autocommit_crossquery 设置为 “on“时, 客户端语句交叉执行,在不同语句执行后,前语句按照服务端调用 HoldablePortal 方式,可以继续执行。在设 置为 off 时,客户端语句交叉执行,在不同语句执行后,前语句不能继续执行。默认值是 off。 ora_forbid_func_polymorphism 属性 描述 类型 bool 默认值 off 级别 USER---用户级 此参数设置为 on,则表示开启禁用多态, 同模式下不能创建同名的函数或存储过程;设置为 off(默认), 则表 示启用多态。 ora_statement_level_rollback 127 第 2 章 服务器配置参数 属性 描述 类型 bool 默认值 off 级别 USER---用户级 该参数指定了 plsql 中是否启用语句级回滚,取值为 on 或 off。当指定为 true 时,启动语句级回滚功能;当 指定为 false 时,关闭语句级回滚功能。 ora_func_style 属性 描述 类型 bool 默认值 off 级别 USER---用户级 该参数指定了 plsql 中是否启用 PLSQL 对象状态的控制功能,取值为 on 或 off。当指定为 true 时,启动对象 状态控制功能;当指定为 false 时,关闭对象状态控制功能。 ora_style_nls_date_format 这 个 变 量 设 置 为 on 属性 描述 类型 boolean 默认值 off 级别 USER---用户级 时, 日 期 时 间 的 隐 式 输 入 与 输 出 字 符 串 格 式 才 会 使 用 参 数 nls_date_format、 nls_timestamp_format 和 nls_timestamp_tz_format 的配置。 ignore_char_null_check 属性 描述 类型 boolean 默认值 off 级别 USER---用户级 128 第 2 章 服务器配置参数 当打开时,Copy 支持导出数据中包含 0x00 字节记录,导出以后 0x00 字节以二进制方式保存;也支持导入包含 0x00 字节的输入端数据,同样也要确保输入端是 0x00 字节而不是”0x00” 字符串。默认为 off。 ignore_char_converer 属性 描述 类型 boolean 默认值 off 级别 USER---用户级 当打开时,Copy 在导入文本格式的数据时,将”\0” 当做 0x00 字节,而不转换为八进制数据。默认为 off。 ignore_zero_number 属性 描述 类型 boolean 默认值 off 级别 USER---用户级 当打开时,number 类型输出时末尾忽略“0”。默认为 off。 例如: select 1.00::number; numeric --------1.00 (1 row) set ignore_zero_number =true; SET select 1.00::number; numeric --------1 (1 row) escape 129 第 2 章 服务器配置参数 属性 描述 类型 string 默认值 null 级别 USER---用户级 当打开时,转义符可设置为多种字符,可兼容 oracle 的特性。支持设置为 off、on、其它单字符,当设置后将与 oracle 表现基本一致(除部分容错性)。默认为 null,表示和老版本兼容。 例如: set escape =off; SET select '\\' as test; test --------\\ (1 row) set escape =on; SET select '\\' as test; test --------\ (1 row) bit_output 属性 描述 类型 string 默认值 escape 级别 USER---用户级 KingbaseES 支持 select b’’和 select x’’语法,兼容 Mysql 二进制语法。b’’和 x’’的显示形态 (二进 制、十六进制或字符串),由 bit_output 决定: • bit_output 设置为 escape 时,显示为字符串形态; • bit_output 设置为 hex 时,显示为十六进制形态; • bit_output 设置为 bin 时,显示为二进制形态。 130 第 2 章 服务器配置参数 default_with_rowid 属性 描述 类型 bool 默认值 false 级别 USER---用户级 开启后为系统上所有再创建的表增加一个 rowid 名,类型为 rowid type 的隐含列。且所有插入的数据,都会将 当前行的 rowid 写入到该列之中。 该参数和 default_with_oids 的关系,两者面向不同的应用,同时当一方设置为 true 时,通过 DDL 非批量创 建表 (即通过 create xxx with rowid/oids) 增加另一方参数的 id 隐含列会失败。(rowid 的参数优先级高于 oids)。 disable_user_switching 属性 描述 类型 bool 默认值 false 级别 SUPERUSER---超级用户级 打开参数后,调用 SET [ SESSION | LOCAL ] SESSION AUTHORIZATION 命令将报错“permission denied to set session authorization”。此参数防止切换用户时不用输入密码的行为。 disable_user_switching 属性 描述 类型 bool 默认值 false 级别 SUPERUSER---超级用户级 打开参数后,调用 SET [ SESSION | LOCAL ] SESSION AUTHORIZATION 命令将报错“permission denied to set session authorization”。此参数防止切换用户时不用输入密码的行为。 mysql5_str_rtrim 131 第 2 章 服务器配置参数 属性 描述 类型 bool 默认值 false 级别 USER---用户级 打开参数后,兼容 mysql5 的 rtrim 函数。默认是 false,不兼容 mysql5 的 rtrim。 2.15 错误处理 exit_on_error 属性 描述 类型 boolean 默认值 off 级别 USER---用户级 如果为 on,任何错误将中止当前会话。默认情况下,这个值被设置为 off,这样只有 FATAL 错误(致命)将中 止会话。 ora_input_emptystr_isnull 属性 描述 类型 bool 默认值 on 级别 USER---用户级 输入空字符串时的处理措施。默认值为 on,即将输入的空字符串作为 null 值处理。off 表示不处理。 restart_after_crash 132 第 2 章 服务器配置参数 属性 描述 类型 boolean 默认值 on 级别 SIGHUP---会话级 当被设置为 on(默认值)时,KingbaseES 将在一次后端崩溃后自动重新初始化。让这个值设置为 on 通常是将 数据库可用性最大化的最佳方法。但是在某些环境中,例如 KingbaseES 被集群软件调用时,禁用重启可能很 有用,这样集群软件可以得到控制并且采取它认为适当的行动。 data_sync_retry 属性 描述 类型 boolean 默认值 off 级别 KINGBASE---实例级 当设置为 off 时,这是默认值,KingbaseES 如果无法将修改后的数据文件刷新到文件系统,将引发恐慌级错 误。这会导致数据库服务器崩溃。此参数只能在服务器启动时设置。 在某些操作系统上,在回写失败之后,内核页面缓存中的数据状态是未知的。在某些情况下,它可能被完全遗 忘,使得重试不安全; 第二次尝试可能被报告为成功,但实际上数据已经丢失。在这种情况下,避免数据丢失的 唯一方法是在报告任何故障后从 WAL 中恢复,最好是在调查故障的根本原因并更换任何有故障的硬件之后。 如果设置为 on,KingbaseES 将报告错误,但将继续运行,以便在以后的检查点重试数据刷新操作。只有在研 究了操作系统在回写失败情况下对缓冲数据的处理之后,才将其设置为 on。 2.16 预置选项 下列“参数”是只读的,它们是在编译或安装 KingbaseES 时决定的。同样,它们被排除在 kingbase.conf 文 件例子之外。这些选项报告特定应用可能感兴趣的多种 KingbaseES 行为,特别是管理前端相关的行为。 block_size 133 第 2 章 服务器配置参数 属性 描述 类型 integer 默认值 8KB 级别 INTERNAL---内部级 报告一个磁盘块的大小。它由编译服务器时 BLCKSZ 的值确定。默认值是 8192 字节。有些配置变量的含义(例 如 shared_buffers )会被 block_size 影响。 data_checksums 属性 描述 类型 boolean 默认值 off 级别 INTERNAL---内部级 报告对这个集簇是否启用了数据校验码。详见 sys_checksums 。 data_directory_mode 属性 描述 类型 integer 默认值 0700 级别 INTERNAL---内部级 在 Unix 系统上,这个参数报告启动时 data_directory 所定义的数据目录的权限(在 Microsoft Windows 上这 个参数将总是显示 0700)。 debug_assertions 属性 描述 类型 boolean 默认值 off 级别 INTERNAL---内部级 报告编译 KingbaseES 时是否启用了断言。如果 KingbaseES 被编译时定义了宏 USE_ASSERT_CHECKING(例如 134 第 2 章 服务器配置参数 通过 configure 选项 --enable-cassert 定义),那么会报告已启用。默认情况下 KingbaseES 编译时没有用 断言。 integer_datetimes 属性 描述 类型 boolean 默认值 on 级别 INTERNAL---内部级 报告 KingbaseES 是否在编译时打开了 64 位整数日期和时间。从 KingbaseES V8R3 起,这个值总是 on。 lc_collate 属性 描述 类型 string 默认值 zh_CN.UTF-8 级别 INTERNAL---内部级 报告文本数据排序使用的区域。详见 区域支持。该值是在数据库被创建时确定的。 lc_ctype 属性 描述 类型 string 默认值 zh_CN.UTF-8 级别 INTERNAL---内部级 报告决定字符分类的区域。详见 区域支持。该值是在数据库被创建时决定的。通常它和 lc_collate 一样,但 是可以为特殊应用设置成不同的值。 max_function_args 135 第 2 章 服务器配置参数 属性 描述 类型 integer 默认值 100 级别 INTERNAL---内部级 报告函数参数的最大数量。它由编译服务器时的 FUNC_MAX_ARGS 值决定的。默认值是 100 个参数。 max_identifier_length 属性 描述 类型 integer 默认值 64 级别 INTERNAL---内部级 报告标识符的最大长度。它由编译服务器时的 NAMEDATALEN 值减一决定。NAMEDATALEN 的默认值是 64 ;因此 max_identifier_length 的默认值是 63,但是在使用多字节编码时可以少于 63 个字符。 max_index_keys 属性 描述 类型 integer 默认值 32 级别 INTERNAL---内部级 报告索引键的最大数目。它由编译服务器时的 INDEX_MAX_KEYS 值决定。默认值是 32 个键。 segment_size 属性 描述 类型 integer 默认值 1GB 级别 INTERNAL---内部级 报告一个文件段中可以存储的块(页)的数量。由编译服务器时的 RELSEG_SIZE 值决定。一个段文件的最大尺 寸(以字节计)等于 segment_size 乘以 block_size,默认是 1GB。 136 第 2 章 服务器配置参数 server_encoding 属性 描述 类型 string 默认值 UTF8 级别 INTERNAL---内部级 报告数据库的编码(字符集)。这是在数据库被创建时决定的。通常,客户端只需要关心 client_encoding 的 值。 server_version 属性 描述 类型 string 默认值 UTF8 级别 INTERNAL---内部级 报告服务器版本数值。它是由编译服务器时的 SYS_VERSION 值决定的。 server_version_num 属性 描述 类型 integer 默认值 12.1 级别 INTERNAL---内部级 报告服务器版本数值的整数值。 它是由编译服务器时的 SYS_VERSION_NUM 值决定的。 ssl_library 属性 描述 类型 string 默认值 ’’ 级别 INTERNAL---内部级 137 第 2 章 服务器配置参数 报告此 KingbaseES 服务器构建时使用的 SSL 库的名称 (即使 SSL 当前没有配置或在此实例中使用),例如 OpenSSL,或者一个空字符串 (如果没有)。 wal_block_size 属性 描述 类型 integer 默认值 8KB 级别 INTERNAL---内部级 报告一个 WAL 磁盘块的尺寸。由编译服务器时的 XLOG_BLCKSZ 值决定。默认是 8192 字节。 wal_segment_size 属性 描述 类型 integer 默认值 16MB 级别 INTERNAL---内部级 报告 WAL 段文件的大小。默认是 16MB。 2.17 定制选项 这个特性被设计用来由附加模块向 KingbaseES 添加通常不为系统知道的参数(例如过程语言)。允许使用标准 方法配制扩展模块。 自定义选项有两部分名称:一个扩展名,然后是一个句点,再然后是正确的参数名,就像 SQL 中的合格名称。 例如:plsql.variable_conflict。 因为自定义选项可能需要在没有载入相关扩展模块的进程中设置,所以 KingbaseES 可以接收任意两部分参数名 的设置。这种变量被认为是占位符,并且在定义它们的模块被载入之前不会有实际功能。当一个扩展模块被载入后, KingbaseES 会加入此模块的变量定义。根据那些定义,转换所有占位符值。如果存在以其扩展名开始的任意占位符 未被识别,KingbaseES 将发出警告。 kdb_oracle_datatype.large_lob_action 138 第 2 章 服务器配置参数 属性 描述 类型 string 默认值 error 级别 USER---用户级 设置大对象数据类型引入长度超过 1GB-1 的时候的处理措施,默认值为 error, 即报错处理,也可以设置为 truncate, 即将长度截断为 1GB-1。 nls_length_semantics 属性 描述 类型 enum 默认值 char 级别 USER---用户级 该参数指定了 varchar 类型中 size 的默认语义,取值为 char 或 byte。当定义 char 类型未指定 size 的语义 时,由该参数的值确定。显示指定 size 语义时不受 nls_length_semantics 影响。默认值为 char,也可以设置为 byte。 nls_date_format 属性 描述 类型 string 默认值 YYYY-MM-DD HH24:mi:ss 级别 USER---用户级 定义了 DATE 类型的默认日期格式及 TO_CHAR 和 TO_DATE 函数一起使用的默认日期格式。可以是任何有效的 日期格式掩码。详见 _KingbaseES SQL 基本元素中的日期/时间类型。 nls_timestamp_format 属性 描述 类型 string 默认值 YYYY-MM-DD HH24:mi:ss.FF 级别 USER---用户级 139 第 2 章 服务器配置参数 定义了 timestamp 类型的默认日期格式及 to_char 和 to_timestamp 函数一起使用的默认日期格式。例: nls_timestamp_format = ’YYYY-MM-DD HH24:mi:ss.FF’。详见 _KingbaseES SQL 基本元素中的日期/时 间类型。 nls_timestamp_tz_format 属性 描述 类型 string 默认值 YYYY-MM-DD HH24:mi:ss.FF TZH:TZM 级别 USER---用户级 该参数定义 timestamp with time zone 数据类型的默认日期格式。定义了 to_char 和 to_timestamp_tz 函 数一起使用的默认日期格式。详见 _KingbaseES SQL 基本元素中的日期/时间类型。 2.18 开发者选项 下面的参数目的是用在 KingbaseES 源代码上,并且在某些情况下可以帮助恢复严重损坏了的数据库。在一个生 产数据库中没有理由使用它们。同样,它们被从例子 kingbase.conf 文件中排除。请注意许多这些参数要求特殊的 源代码编译标志才能工作。 allow_system_table_mods 属性 描述 类型 boolean 默认值 true 级别 KINGBASE---实例级 允许对系统表结构的修改。它可以被 initdb 使用。这个参数只能在服务器启动时设置。 ignore_system_indexes 属性 描述 类型 boolean 默认值 true 级别 BACKEND---后台级 140 第 2 章 服务器配置参数 读取系统表时忽略系统索引(但是修改系统表时依然同时更新索引)。这在从被破坏的系统索引中恢复数据的 时有用。这个参数在会话开始之后不能被更改。 post_auth_delay 属性 描述 类型 integer 默认值 0 级别 BACKEND---后台级 如果为非零,那么在一个新的服务器进程派生出来之后并且在它开始认证过程之前,就会发生这么多秒的延 迟。这是为了给开发者们一个机会在一个服务器进程上附加一个调试器。这个参数在会话开始之后不能被更 改。 pre_auth_delay 属性 描述 类型 integer 默认值 0 级别 SIGHUP---会话级 如果为非零,那么在一个新的服务器进程派生出来之后并且在它开始认证过程之前,就会发生这么多秒的延 迟。这是为了给开发者们一个机会在一个服务器进程上附加一个调试器来跟踪认证过程中的不当行为。这个参 数只能在 kingbase.conf 文件中或在服务器命令行上设置。 trace_notify 属性 描述 类型 boolean 默认值 on 级别 USER---用户级 为 LISTEN 和 NOTIFY 命令生成大量调试输出。client_min_messages 和 log_min_messages 必须是 DEBUG1 或 者更低才能把这种输出分别发送到客户端或者服务器日志。 trace_recovery_messages 141 第 2 章 服务器配置参数 属性 描述 类型 enum 默认值 log 级别 SIGHUP---会话级 启用记录与恢复有关的调试输出,否则无法记录。这个参数允许用户覆盖 log_min_messages 的正常设置, 但只用于指定的消息。这个参数的目的是用来调试热后备。有效值包括 DEBUG5、DEBUG4、DEBUG3、DEBUG2、 DEBUG1 和 LOG。默认值 LOG 完全不会影响日志决定。其他值会记录相关级别或更高级别的与恢复相关的调试 消息,就好像它们具有 LOG 优先级一样;对于 log_min_messages 的通用设置,这会无条件的将消息发送给服 务器日志。这个参数只能在 kingbase.conf 文件中或在服务器命令行上设置。 trace_sort 属性 描述 类型 boolean 默认值 off 级别 USER---用户级 如果打开,发出在排序操作中的资源使用的相关信息。只有在编译 KingbaseES 时定义了 TRACE_SORT 宏,这 个参数才可用(不过,当前在默认情况下就定义了 TRACE_SORT)。 trace_locks 属性 描述 类型 boolean 默认值 off 级别 USER---用户级 如果开启,发出锁使用情况的信息。被转储信息中包括锁操作的类型、锁的类型和被锁或被解锁对象的唯一标 识符。同样包括的还有已经授予这个对象的锁类型的位掩码和等待这个对象的锁类型的位掩码。对每一种锁类 型,已授权锁和等待锁的计数也会被一起转储。一个日志文件输出的例子如下: LOG: LockAcquire: new: lock(0xb7acd844) id(24688,24696,0,0,0,1) grantMask(0) req(0,0,0,0,0,0,0)=0 grant(0,0,0,0,0,0,0)=0 wait(0) type(AccessShareLock) LOG: GrantLock: lock(0xb7acd844) id(24688,24696,0,0,0,1) grantMask(2) req(1,0,0,0,0,0,0)=1 grant(1,0,0,0,0,0,0)=1 142 第 2 章 服务器配置参数 wait(0) type(AccessShareLock) LOG: UnGrantLock: updated: lock(0xb7acd844) id(24688,24696,0,0,0,1) grantMask(0) req(0,0,0,0,0,0,0)=0 grant(0,0,0,0,0,0,0)=0 wait(0) type(AccessShareLock) LOG: CleanUpLock: deleting: lock(0xb7acd844) id(24688,24696,0,0,0,1) grantMask(0) req(0,0,0,0,0,0,0)=0 grant(0,0,0,0,0,0,0)=0 wait(0) type(INVALID) 被转储结构的详细信息可以在 src/include/storage/lock.h 中找到。 只有在编译 KingbaseES 时定义了 LOCK_DEBUG 宏,这个参数才可用。 trace_lwlocks 属性 描述 类型 boolean 默认值 off 级别 USER---用户级 如果开启,发出轻量级锁的使用信息。轻量级锁主要是为了提供对共享内存数据结构的互斥访问。 只有在编译 KingbaseES 时定义了 LOCK_DEBUG 宏,这个参数才可用。 trace_userlocks 属性 描述 类型 boolean 默认值 off 级别 USER---用户级 如果开启,发出关于用户锁使用的信息。与 trace_locks 的输出一样,但只用于咨询锁。 只有在编译 KingbaseES 时定义了 LOCK_DEBUG 宏,这个参数才可用。 trace_lock_oidmin 143 第 2 章 服务器配置参数 属性 描述 类型 integer 默认值 0 级别 USER---用户级 如果设置,不会跟踪小于这个 OID 的锁(用于避免在系统表上的输出)。 只有在编译 KingbaseES 时定义了 LOCK_DEBUG 宏,这个参数才可用。 trace_lock_table 属性 描述 类型 integer 默认值 0 级别 USER---用户级 无条件地跟踪此表(OID)上的锁。 只有在编译 KingbaseES 时定义了 LOCK_DEBUG 宏,这个参数才可用。 debug_deadlocks 属性 描述 类型 boolean 默认值 off 级别 USER---用户级 如果设置,当死锁超时发生时,转储所有当前锁的信息。 只有在编译 KingbaseES 时定义了 LOCK_DEBUG 宏,这个参数才可用。 log_btree_build_stats 属性 描述 类型 boolean 默认值 off 级别 USER---用户级 144 第 2 章 服务器配置参数 如果设置,会记录 B 树操作上的系统资源使用情况统计(内存和 CPU)。 只有在编译 KingbaseES 时定义了 BTREE_BUILD_STATS 宏,这个参数才可用。 wal_consistency_checking 属性 描述 类型 string 默认值 ’’ 级别 SUPERUSER---超级用户级 这个参数被设计用来检查 WAL 重做例程中的缺陷。当这个参数被启用时,被修改的任何缓冲区的全页映像及 其 WAL 记录都被加入到记录中。如果该记录后来被重放,系统将首先应用每个记录然后测试该记录修改的缓 冲区是否符合存储的映像。在某些情况下(例如提示位),小的变动是可以接受的,并且会被忽略。任何预期 之外的差别都将导致致命错误,最后中止恢复。 这个设置的默认值是空字符串,它将禁用这一特性。它可以被设置为 all 以检查所有记录,或者被设置为一个 逗号分隔的资源管理器列表用以检查那些资源管理器产生的记录。当前,支持的资源管理器是 heap、heap2、 btree、hash、gin、gist、sequence、spgist、brin 以及 generic。只有超级用户可以更改这一设置。 trace_mdwrite_level 属性 描述 类型 string 默认值 ”non-zero” 级别 SUPERUSER---超级用户级 该参数的主要用途为控制页面检查的严格程度,该参数仅在 trace_mdwrite 参数打开时有效,该参数仅有三个 有效值分别为 valid、non-zero、all,含义为追踪无效页面,追踪全零页面,追踪无效页面和全零 > 页面。 默认设置是 non-zero。 wal_debug 属性 描述 类型 boolean 默认值 ’’ 级别 USER---用户级 145 第 2 章 服务器配置参数 如果被打开,WAL 相关的调试输出将被发出。只有在编译 KingbaseES 时定义了 WAL_DEBUG 宏的情况下,这 个参数才可用。 ignore_checksum_failure 属性 描述 类型 boolean 默认值 off 级别 SUPERUSER---超级用户级 只有当 data checksums 被启用时才有效。 在读取过程中检测到一次校验码失败通常会导致 KingbaseES 报告一个错误。设置 ignore_checksum_failure 为打开会导致系统忽略失败(但是仍然报告一个警告),并且继续执行。这种行为可能导致崩溃、传播或隐藏 损坏或者其他严重的问题。但是,它允许绕过错误并且在块头部仍然健全的情况下从表中检索未损坏的元组。 如果头部被损坏,即便这个选项被启用系统也将报告一个错误。默认设置是 off,并且只能被超级用户改变。 zero_damaged_pages 属性 描述 类型 boolean 默认值 off 级别 SUPERUSER---超级用户级 检测到一个损坏的页面头部通常会导致 KingbaseES 报 告 一 个 错 误, 并 且 中 止 当 前 事 务。 把 zero_damaged_pages 设置为打开会让系统报告一个警告、把损坏的页面填充零,然后继续处理。这种行 为会毁掉数据,即被损坏页面上的所有行。但是它允许绕开错误并且从可能存在表中的任何未损坏页面中检索 行。如果由于一次硬件或软件错误而发生毁坏,这种方法可用于恢复数据。通常不应该把它设置为打开,除非 已经彻底放弃从表的损坏页面中恢复数据。被填充零的页面不会被强制到磁盘上,因此我们推荐在再次关闭这 个参数之前先重建表或索引。默认的设置是 off,并且只有超级用户可以改变它。 jit_debugging_support 属性 描述 类型 boolean 默认值 off 级别 SUPERUSER_BACKEND---超级用户后台级 146 第 2 章 服务器配置参数 如果 LLVM 有所需要的功能,用 GDB 注册所生成的函数。这会让调试更加容易。默认设置是 off。这个参数 只能在服务器启动时设置。 jit_dump_bitcode 属性 描述 类型 boolean 默认值 off 级别 SUPERUSER---超级用户级 把生成的 LLVM IR 写出到文件系统,写到 data_directory 中。只有在做 JIT 内部实现工作时,这个参数才能 派上用场。默认设置是 off。这个参数只能由超级用户修改。 jit_expressions 属性 描述 类型 boolean 默认值 on 级别 USER---用户级 当 JIT 编译被激活时,确定表达式是否用 JIT 编译。默认值是 on。 jit_profiling_support 属性 描述 类型 boolean 默认值 off 级别 SUPERUSER_BACKEND---超级用户后台级 如果 LLVM 有所需的功能,发出需要的数据以允许 perf 对 JIT 生成的函数画像。这会写出文件到 $HOME/. debug/jit/中,如果需要,由用户负责对其执行清除。默认设置是 off。这个参数只能在服务器启动时设置。 jit_tuple_deforming 147 第 2 章 服务器配置参数 属性 描述 类型 boolean 默认值 on 级别 USER---用户级 当 JIT 编译被激活时,确定元组拆解是否被 JIT 编译。默认值是 on。 allow_system_table_dml 属性 描述 类型 boolean 默认值 off 级别 KINGBASE---实例级 允许对系统表进行 DML 操作。默认值是 off,它将禁用这一特性。这个参数不建议用户开启。 trace_mdwrite 属性 描述 类型 boolean 默认值 false 级别 SUPERUSER---超级用户级 允许进行页面校验并记录异常日志,在开启该参数后将对页面进行合法性校验,并在追踪到非法页面时记录错 误日志,默认值是 off,当数据库出现页面异常时建议开启该功能进行调试。 2.19 短选项 为了方便起见,系统中还为一些参数提供了单字母的命令行选项开关。它们在表” 短选项” 中描述。其中一些选 项是由于历史原因而存在,并且它们作为一个单字母选项存在并不表示它们会被大量使用。 148 第 2 章 服务器配置参数 表 2.19.1: 短选项 短选项 等效于 -B x shared_buffers = x -d x log_min_messages = DEBUGx -e datestyle = ISO, DMY -fb, -fh, -fi, enable_bitmapscan = off, -fm, -fn, -fo, enable_mergejoin = off, -fs, -ft enable_seqscan = off, enable_tidscan = off -F fsync = off -h x listen_addresses = x -i listen_addresses = '*' -k x unix_socket_directories = x -l ssl = on -N x max_connections = x -O allow_system_table_mods = on -p x port = x -P ignore_system_indexes = on -s log_statement_stats = on -S x work_mem = x -tpa, -tpl, -te log_parser_stats = on, log_planner_stats = on, log_executor_stats = on -W x post_auth_delay = x 2.20 控制文件 2.20.1 控制文件多路备份 enable_hashjoin = off, enable_nestloop = off, enable_indexscan = off, enable_indexonlyscan = off, control_file_copy 149 第 2 章 服务器配置参数 属性 描述 类型 string 默认值 ’’ 级别 KINGBASE---实例级 路径和文件用来制作一个或多个 sys_control 的副本。control_file_copy 是一个空字符串(默认)。 最多设置八个副本,副本之间用“;”分隔。 这个参数只能在 kingbase.conf 文件中或在服务器启动参数上设置。如果修改了 control_file_copy 的值,服务 器必须重启才能生效。 2.21 函数别名作为列名 enable_func_colname 属性 描述 类型 boolean 默认值 off 级别 USER---用户级 启用或禁用函数别名作为列名功能。默认此功能禁用。 此参数为 session 级参数,设置为 on 启用此功能,设置为 off 关闭此功能。 2.22 数据库审计 KingbaseES 数据库提供了一些关于的审计机制的参数,可以针对不同事件审计记录。可参见《KingbaseES 安全 指南》中的 数据库审计章节。 sysaudit.enable_encrypt 150 第 2 章 服务器配置参数 属性 描述 类型 boolean 默认值 false 级别 SIGHUP---会话级 开启参数后,会对生成密钥、数据加密和解密事件进行审计。 sysaudit.enable_mac 属性 描述 类型 boolean 默认值 false 级别 SIGHUP---会话级 开启参数后,会对创建强制访问控制规则、带有读和写的强制访问控制规则事件进行审计。 sysaudit.enable_audit_cluster_datatransfer 属性 描述 类型 boolean 默认值 false 级别 SIGHUP---会话级 开启参数后,会对集群环境下的主备机通信进行审计。 sysaudit.enable_audit_cluster_set_guc_param 属性 描述 类型 boolean 默认值 false 级别 SIGHUP---会话级 开启参数后,会对集群环境下的主备机之间 GUC 参数同步行为进行审计。 sysaudit.processevent 151 第 2 章 服务器配置参数 属性 描述 类型 boolean 默认值 false 级别 SIGHUP---会话级 开启参数后,审计后台子进程启动退出事件。 sysaudit.all_error 属性 描述 类型 boolean 默认值 false 级别 SIGHUP---会话级 开启参数后,审计全部错误事件,即所有的 error 以上的错误日志都记入审计日志。 2.23 标记和强制访问控制 KingbaseES 数据库提供了一些关于的强制访问控制功能的参数,可参见《KingbaseES 安全指南》中的 标记和 强制访问控制章节。 sysmac.enable_mac 属性 描述 类型 boolean 默认值 false 级别 SIGHUP---会话级 强制访问控制功能的开关,取值范围为 true 或者 false ,缺省值为 false。 sysmac.enable_col_mac 152 第 2 章 服务器配置参数 属性 描述 类型 boolean 默认值 false 级别 SIGHUP---会话级 列级强制访问控制功能的开关,取值范围为 true 或者 false ,默认是 false。 153 第 3 章 静态数据词典视图 3 第 章 静态数据词典视图 本部分介绍数据字典表和视图。这些表和视图被称为静态的,因为它们只有在对数据字典进行更改时才会更改。 3.1 系统表 表 3.1.1 列出了金仓数据库 KingbaseES 中的系统表,每个系统表更详细的文档见后文。 大多数系统表都是在数据库创建的过程中从模版数据库中拷贝过来的,因此都是数据库相关的。少数系统表在物 理上是在一个集簇的所有数据库间中共享的,这些将在每一个系统表单独的描述中介绍。 表 3.1.1: 系统表 表名 用途 sys_aggregate 聚集函数 sys_am 关系访问方法 sys_amop 访问方法操作符 sys_amproc 访问方法支持函数 sys_anon_policy 脱敏策略 sys_attrdef 列默认值 sys_attribute 表列 (“属性”) sys_audit_blocklog 被锁定用户的登录信息 sys_audit_userlog 用户登录信息 sys_auth_members 认证标识符成员关系 sys_authid 认证标识符(角色) 见续表 154 第 3 章 静态数据词典视图 表 3.1.1 – 续表 表名 用途 sys_cast 转换(数据类型转换) sys_class 表、索引、序列、视图(“关系”) sys_collation 排序规则(locale 信息) sys_constraint 检查约束、唯一约束、主键约束、外键约束 sys_constraint_status 约束状态信息 sys_context 上下文信息 sys_conversion 编码转换信息 sys_database 本数据库集簇中的数据库 sys_database_dblink dblink 外部链接 sys_db_role_setting 角色和数据库的设置 sys_default_acl 对象类型的默认权限 sys_depend 数据库对象间的依赖 sys_description 数据库对象上的描述或注释 sys_directory 目录对象信息 sys_enum 枚举标签和值定义 sys_event_trigger 事件触发器 sys_extension 已安装扩展 sys_foreign_data_wrapper 外部数据包装器定义 sys_foreign_server 外部服务器定义 sys_foreign_table 外部表信息 sys_index 索引信息 sys_inherits 表继承层次 sys_init_privs 对象初始特权 sys_language 编写函数的语言 见续表 155 第 3 章 静态数据词典视图 表 3.1.1 – 续表 表名 用途 sys_largeobject 大对象的数据页 sys_largeobject_metadata 大对象的元数据 sys_namespace 模式 sys_object_status 对象状态 sys_opclass 访问方法操作符类 sys_operator 操作符 sys_opfamily 访问方法操作符族 sys_partitioned_table 分区表 sys_pltemplate 过程语言的模板数据 sys_policy 行安全策略 sys_privilege 用户的 sysbackup 权限 sys_proc 函数和过程 sys_protect 被保护的对象信息 sys_publication 用于逻辑复制的发布 sys_publication_rel 发布映射的关系 sys_pwdht_shadow 口令历史管理的用户信息 sys_query_mapping Query Mapping 规则的 SQL 匹配/映射信息 sys_range 范围类型的信息 sys_recyclebin 回收站信息 sys_replication_origin 已注册的复制源 sys_resauthid 用户和资源组的关联信息 sys_resgroup 资源组信息 sys_resgroupcapability 资源组限制值信息 sys_rewrite 查询重写规则 见续表 156 第 3 章 静态数据词典视图 表 3.1.1 – 续表 表名 用途 sys_role_disable 角色禁用信息 sys_seclabel 数据库对象上的安全标签 sys_sequence 有关序列的信息 sys_shdepend 共享对象上的依赖 sys_shdescription 共享对象上的注释 sys_shseclabel 共享数据库对象上的安全标签 sys_statistic 规划器统计 sys_statistic_ext 扩展的规划器统计信息 (definition) sys_statistic_ext_data 扩展的规划器统计信息 (built statistics) sys_subpartition_table 子分区表 sys_subscription 逻辑复制订阅 sys_subscription_rel 订阅的关系状态 sys_synonym 同义词信息 sys_sysaudit_ids_setting 审计入侵检测 sys_sysaudit_setting 审计策略 sys_sysprivilege 系统 ANY 权限的用户信息 sys_tablespace 本数据库集簇内的表空间 sys_transform 转换(将数据类型转换为过程语言需要的形式) sys_trigger 触发器 sys_ts_config 文本搜索配置 sys_ts_config_map 文本搜索配置的记号映射 sys_ts_dict 文本搜索字典 sys_ts_parser 文本搜索分析器 sys_ts_template 文本搜索模板 见续表 157 第 3 章 静态数据词典视图 表 3.1.1 – 续表 表名 用途 sys_type 数据类型 kdb_job job 信息 sysmac_obj 对象级强制访问控制的标记信息 sysmac_column_label 列级强制访问控制的标记信息 3.1.1 sys_aggregate 目录 sys_aggregate 存储关于聚集函数的信息。聚集函数是对一个数值集合(典型的是每个匹配查询条件的 行中的同一个列的值)进行操作的函数,它返回从这些值中计算出的一个数值。典型的聚集函数是 sum、count 和 max。sys_aggregate 里的每个项都是一个 sys_proc 项的扩展。sys_proc 项记载该聚集的名字、输入和输出数据 类型,以及其他一些和普通函数类似的信息。 表 3.1.2: sys_aggregate 列 名称 类型 引用 描述 aggfnoid regproc sys_proc.oid 聚集函数在 sys_proc 中的 OID aggkind char 聚集类型:n 表示“普通”聚集,o 表 示“有序集”聚集,或者 h 表示“假想 集”聚集 aggnumdirectargs 一个有序集或者假想集聚集的直接(非 smallint 聚集)参数的数量,一个可变数组算作 一个参数。如果等于 pronargs,该聚集 必定是可变的并且该可变数组描述聚集 参数以及最终直接参数。对于普通聚集 总是为零。 aggtransfn regproc sys_proc.oid 转移函数 aggfinalfn regproc sys_proc.oid 最终函数(如果没有就为零) aggcombinefn regproc sys_proc.oid 结合函数(如果没有就为零) aggserialfn regproc sys_proc.oid 序列化函数(如果没有就为零) aggdeserialfn regproc sys_proc.oid 反序列化函数(如果没有就为零) 见续表 158 第 3 章 静态数据词典视图 表 3.1.2 – 续表 名称 类型 引用 描述 aggmtransfn regproc sys_proc.oid 用于移动聚集模式的向前转移函数(如 果没有就为零) aggminvtransfn regproc sys_proc.oid 用于移动聚集模式的反向转移函数(如 果没有就为零) aggmfinalfn regproc sys_proc.oid 用于移动聚集模式的最终函数(如果没 有就为零) aggfinalextra boolean 为真则向 aggfinalfn 传递额外的哑参数 aggmfinalextra boolean 为真则向 aggmfinalfn 传递额外的哑参 数 aggfinalmodify aggfinalfn 是否修改传递状态值:如果 char 是只读则为 r,如果不能在 aggfinalfn 之 后应用 aggtransfn 则为 s,如果它修改 该值则为 w aggmfinalmodify 和 aggfinalmodify 类似,但是用于 ag- char gmfinalfn aggsortop oid sys_operator.oid 相关联的排序操作符(如果没有则为 0) aggtranstype oid sys_type.oid 聚集函数的内部转移(状态)数据的数 据类型 aggtransspace 转 移 状 态 数 据 的 近 似 平 均 尺 寸 (字 interger 节),或者为零表示使用一个默认估算 值 aggmtranstype oid sys_type.oid 聚集函数用于移动聚集欧氏的内部转移 (状态)数据的数据类型(如果没有则 为零) aggmtransspace interger 转 移 状 态 数 据 的 近 似 平 均 尺 寸 (字 节),或者为零表示使用一个默认估算 值 见续表 159 第 3 章 静态数据词典视图 表 3.1.2 – 续表 名称 类型 agginitval text 引用 描述 转移状态的初始值。这是一个文本域, 它包含初始值的外部字符串表现形式。 如果这个域为空,则转移状态值从空值 开始。 aggminitval 用于移动聚集模式的转移状态初值。这 text 是一个文本域,它包含了以其文本字符 串形式表达的初值。如果这个域为空, 则转移状态值从空值开始。 新的聚集函数可通过 CREATE AGGREGATE 命令注册。 3.1.2 sys_am 目录 sys_am 存储有关系引访问方法的信息。系统支持的每种访问方法在这个目录中都有一行。当前,只有表和 索引拥有访问方法。 表 3.1.3: sys_am 列 名称 类型 引用 oid oid 行标识符 amname name 访问方法的名字 amhandler regproc amtype char sys_proc.oid 描述 负责提供有关该访问方法信息的处理器函数的 OID t = table (including materialized views), i = index. 注意: 在 KingbaseES V8R2 之前,sys_am 包含很多额外的列以表示索引访问方法的性质。那些数据现在只有在 C 代 码级别才是直接可见的。不过,系统中增加了 sys_index_column_has_property() 和一些相关函数来允许 SQL 查 询检查索引访问方法的性质。 3.1.3 sys_amop 目录 sys_amop 存储关于与访问方法操作符族相关的操作符信息。对于一个操作符族中的每一个成员即操作符都 在这个目录中有一行。一个成员可以是一个搜索操作符或者一个排序操作符。一个操作符可以出现在多个族中,但在 160 第 3 章 静态数据词典视图 同一个组中既不能出现在多个搜索位置也不能出现在多个排序位置(虽然不太可能出现,但是允许一个操作符同时用 于搜索和排序目的)。 表 3.1.4: sys_amop 列 名称 类型 引用 描述 oid oid amopfamily oid sys_opfamily.oid 这个项所在的操作符族 amoplefttype oid sys_type.oid 操作符的左手输入数据类型 amoprighttype oid sys_type.oid 操作符的右手输入数据类型 amopstrategy smallint 操作符策略号 amoppurpose char 操作符目的,s 表示搜索,“o“表示排序 amopopr oid sys_operator.oid 操作符的 OID amopmethod oid sys_am.oid 使用此操作符族的索引访问方法 amopsortfamily oid sys_opfamily.oid 如果是一个排序操作符,该项会根据这 行标识符 个 B 树操作符族排序如果是一个搜索操 作符则为 0 一个“搜索”操作符项意味着该操作符族的一个索引可以被搜索来查找所有满足如下条件的行:WHERE “indexed_column“ “operator“ “constant“。显然,这样的一个操作符必须返回 boolean,且它的左手输入类型必须匹配 索引列的数据类型。 一个“排序”操作符项意味着该操作符族的一个索引可以被扫描来返回以如下顺序排列的行:ORDER BY “indexed_column“ “operator“ “constant“。这样一个操作符能够返回任何可排序数据类型,尽管它的左手输入类型必须 匹配索引列的数据类型。ORDER BY 的准确语义由 amopsortfamily 列指定,它必须引用一个适合于操作符结果类型 的 B 树操作符族。 注意: 目前,一个排序操作符的排序顺序被假设为其引用的操作符族的默认值,即 ASC NULLS LAST。未来可能会通 过增加额外的列来显式地指定排序选项。 一个项的 amopmethod 必须和它所包含的操作符族的 opfmethod 相匹配(这里包括 amopmethod 是一个为 了性能原因而故意对目录结构做的反规范化)。此外,amoplefttype 和 amoprighttype 也必须匹配被引用的 sys_operator 项的 oprleft 和 oprright 域。 161 第 3 章 静态数据词典视图 3.1.4 sys_amproc 目录 sys_amproc 存储关于访问方法操作符族相关的支持函数。属于一个操作符族的每一个支持函数在这个目录 中都有一行。 表 3.1.5: sys_amproc 列 名称 类型 引用 描述 oid oid amprocfamily oid sys_opfamily.oid 使用这个项的操作符族 amproclefttype oid sys_type.oid 相关操作符的左手输入数据类型 amprocrighttype oid sys_type.oid 相关操作符的右手输入数据类型 amprocnum smallint amproc regproc 行标识符 支持过程编号 sys_proc.oid 过程的 OID amproclefttype 和 amprocrighttype 列的通常解释是它们标识了一个特定支持过程所支持的操作符的左右 输入类型。对于某些访问方法它们和支持过程本身的输入数据类型相匹配,而对其他的则不会匹配。对于一个索引 有一个“默认”支持过程的概念,这些支持过程的 amproclefttype 和 amprocrighttype 都等于索引操作符类的 opcintype。 3.1.5 sys_anon_policy 表 sys_anon_policy 存储脱敏策略相关信息。 表 3.1.6: sys_anon_policy 列 名称 类型 引用 描述 oid oid 脱敏策略 oid policy_name name 脱敏策略名 relid oid sys_class.oid 脱敏策略应用的表 oid column_num smallint sys_attritube.attnum 脱敏策略应用的列所在的表的列号 user_id oid sys_authid.oid 脱敏用户 oid function_name smallint 脱敏函数名 见续表 162 第 3 章 静态数据词典视图 表 3.1.6 – 续表 名称 类型 引用 描述 para_list_1 integer 脱敏函数参数 1(仅用于自定义脱敏) para_list_2 integer 脱敏函数参数 2(仅用于自定义脱敏) 3.1.6 sys_attrdef sys_attrdef 存储列的默认值。列的主要信息存储在sys_attribute 。只有那些显式设置默认值的列才会在这个 目录中有一个项。 表 3.1.7: sys_attrdef 列 名称 类型 引用 描述 oid oid adrelid oid sys_class.oid 该列所属的表 adnum smallint sys_attribute.attnum 列号 adbin sys_node_tree 行标识符 The column default value, in nodeToString() representation. Use sys_get_expr(ad bin, adrelid) to convert it to an SQL expression. 3.1.7 sys_attribute 目录 sys_attribute 存储有关表列的信息。数据库中的每一个表的每一个列都恰好在 sys_attribute 中有一 行。(这其中也会有索引的属性项,并且事实上所有具有 sys_class 项的对象在这里都有属性项)entries.) 术语属性等同于列,这里使用它只是出于历史原因。 表 3.1.8: sys_attribute 列 名称 类型 引用 描述 attrelid oid sys_class.oid 列所属的表 见续表 163 第 3 章 静态数据词典视图 表 3.1.8 – 续表 名称 类型 attname name atttypid oid attstattarget integer 引用 描述 列名 sys_type.oid 列的数据类型 attstattarget 控制由 ANALYZE 对此列收集的统计信息的 细节层次。0 值表示不会收集任 何统计信息。一个负值则说明直 接使用系统默认的目标。正值的 确切含义取决于数据类型。对于 标 量 数 据 类 型,attstattarget 既是要收集的“最常见值”的目 标号,也是要创建的柱状图容器 的目标号。 attlen smallint 本列类型的 sys_type.typlen 一 个拷贝 attnum smallint 列的编号。一般列从 1 开始向上 编号。系统列(如 ctid )则拥 有(任意)负值编号。 attndims integer 如果该列是一个数组类型,这里 就是其维度数;否则为 0。(在 目前一个数组的维度数并不被强 制,因此任何非零值都能有效地 表明“这是一个数组”。) attcacheoff integer 在存储中总是为-1,但是当被载 入到一个内存中的行描述符后, 这里可能会被更新为属性在行内 的偏移 atttypmod integer atttypmod 记录了在表创建时 提供的类型相关数据(例如一个 varchar 列的最大长度)。它会 被传递给类型相关的输入函数和 长度强制函数。对于那些不需要 atttypmod 的类型,这个值通常 总是为-1。 见续表 164 第 3 章 静态数据词典视图 表 3.1.8 – 续表 名称 类型 attbyval boolean 引用 描述 该列类型的 sys_type.typbyval 的一个拷贝 attstorage char 通常是该列类型的 sys_type. typstorage 的一个拷贝。对于 可 TOAST 的数据类型,这可以 在列创建后被修改以控制存储策 略。 attalign char 该列类型的 sys_type.typalign 的一个拷贝 attnotnull boolean 这表示一个非空约束。 atthasdef boolean 该列有一个默认表达式或生 成 的 表 达 式, 在 此 情 况 下 在 sys_attrdef 目录中会有一个对 应项来真正定义该表达式。(检 查 attgenerated 以确定是默认, 还是生成的表达式。) atthasmissing boolean 该列在行中完全缺失时会用到这 个列的值,如果在行创建之后增 加一个有非易失 DEFAULT 值的 列,就会发生这种情况。实际使 用的值被存放在 attmissingval 列中。 attidentity char 如果是一个零字节(''),则不 是一个标识列。否则,a = 总是 生成,d = 默认生成。 attgenerated char 如果是零字节 ('') ,则不生成 列。否则,s = 已存储。(其他值 可能会在未来添加。) attisdropped boolean 该列被删除且不再有效。一个删 除的列仍然物理存在于表中,但 是会被分析器忽略并因此无法通 过 SQL 访问。 见续表 165 第 3 章 静态数据词典视图 表 3.1.8 – 续表 名称 类型 attislocal boolean 引用 描述 该列是由关系本地定义的。注意 一个列可以同时是本地定义和继 承的。 attinhcount 该列的直接祖先的编号。一个具 integer 有非零编号祖先的列不能被删除 或者重命名。 attcollation oid sys_collation.oid 该列被定义的排序规则,如果该 列不是一个可排序数据类型则为 0。 attacl aclitem[] 列级访问权限 attoptions text[] 属性级选项,以“keyword=valu e”形式的字符串 attfdwoptions text[] 属性级的外部数据包装器选项, 以“keyword=valu e”形式的字 符串 attmissingval anyarray 这个列中是一个含有一个元素的 数组,其中的值被用于该列在行 中完全缺失时,如果在行创建之 后增加一个有非易失 DEFAULT 值 的列,就会发生这种情况。只有 当 atthasmissing 为真时才使 用这个值。如果没有值则该列为 空。 在一个被删除的列的 sys_attribute 的项中,atttypid 被重置为 0,但 attlen 以及其他从 sys_type 拷贝 的域仍然有效。这种安排用于处理一种情况,即被删除列的数据类型后来被删除,并且因此不再有相应的 sys_type 行。attlen 和其他域可以被用来解释表的一行的内容。 3.1.8 sys_audit_blocklog 表 sys_audit_blocklog 存储被锁定用户的登录信息。 166 第 3 章 静态数据词典视图 表 3.1.9: sys_audit_blocklog 列 名称 类型 引用 描述 user name sys_authid.oid 被锁定的用户名 failedTimes integer 登录失败次数 blockStartTime timestamp with time zone 用户开始被锁定的时间 3.1.9 sys_audit_userlog 表 sys_audit_userlog 存储用户的登录信息。 表 3.1.10: sys_audit_userlog 列 名称 类型 引用 描述 audusername name 登陆信息记录的用户名 audhost text 登录所在 ip 地址 audtimestamp timestamp with time zone 登录时间 audtype char 记录类型(成功/失败/锁定) logintimes integer 用户登录次数 3.1.10 sys_auth_members 目录 sys_auth_members 展示了角色之间的成员关系。允许任何无环的关系集合。 由于用户标识符是集簇范围的,sys_auth_members 在一个集簇的所有数据库之间共享:在一个集簇中只有一份 sys_auth_members 拷贝,而不是每个数据库一份。 表 3.1.11: sys_auth_members 列 名称 类型 引用 描述 roleid oid sys_authid .oid 拥有成员的角色的 ID member oid sys_authid .oid roleid 的成员角色的 ID grantor oid sys_authid .oid 授权此成员关系的角色的 ID 见续表 167 第 3 章 静态数据词典视图 表 3.1.11 – 续表 名称 类型 引用 描述 admin_option boolean sys_authid .oid 如果成员能把成员关系授予他 人,则为真 3.1.11 sys_authid 目录 sys_authid 包含关于数据库授权标识符(角色)的信息。角色把“用户”和“组”的概念包含在内。一个 用户实际上就是一个 rolcanlogin 标志被设置的角色。任何角色(不管 rolcanlogin 设置与否)都能够把其他角色 作为成员,参见sys_auth_members 。 由于这个目录包含口令,它不能是公共可读的。sys_roles 是在 sys_authid 上的一个公共可读视图,它隐去了 口令域。 用户的权限和角色包含关于用户和权限管理的详细信息。 由于用户标识符是集簇范围的,sys_authid 在一个集簇的所有数据库之间共享:在一个集簇中只有一份 sys_authid 拷贝,而不是每个数据库一份。 表 3.1.12: sys_authid 列 名字 类型 描述 oid oid 行标识符 rolname name 角色名 rolsuper boolean 角色是否拥有超级用户权限 rolinherit boolean 如果本角色是另一个角色的成员,本角色是否自 动另一个角色的权限 rolcreaterole boolean 角色是否能创建更多角色 rolcreatedb boolean 角色是否能创建数据库 rolcanlogin boolean 角色是否能登录。即该角色是否能够作为初始会 话授权标识符 rolreplication boolean 角色是一个复制角色。复制角色可以启动复制连 接并且创建和删除复制槽。 rolbypassrls boolean 角色是否可以绕过所有的行级安全性策略。 见续表 168 第 3 章 静态数据词典视图 表 3.1.12 – 续表 名字 类型 描述 rolconnlimit interger 对于可以登录的角色,本列设置该角色可以同时 发起最大连接数。-1 表示无限制。 rolpassword 口令(可能被加密过),如果没有口令则为空。 text 格式取决于使用的加密方法的形式。 rolvaliduntil timestamp with time 口令过期时间(只用于口令 , 如 果 永 不 过 期 则 zone 为空 对于一个 MD5 加密的口令,rolpassword 列将由字符串 md5 后面跟上一个 32 字符的十六进制 MD5 哈希值构 成。MD5 哈希值将是该用户的口令串接上它们的用户名。例如,如果用户 joe 的口令是 xyzzy,则 KingbaseES 将 存储 xyzzyjoe 的 md5 哈希。 如果口令采用 SCRAM-SHA-256 加密,它的格式是: SCRAM-SHA-256$:$: 其中 “salt“、“StoredKey“和 “ServerKey“是 Base64 编码格式。这种格式与 RFC 5803 说明的格式相同。 不遵守上述格式的口令被假定为未加密。 3.1.12 sys_cast 目录 sys_cast 存储数据类型转换路径,包括内建的和用户定义的类型。 需要注意的是,sys_cast 并不表示系统知道如何执行的所有类型转换,它只包括哪些不能从某些普通规则推导 出的转换。例如,一个域及其基类型之间的转换并未显式地在 sys_cast 中展示。另一个重要的例外是“自动 I/O 转换造型”,它们通过数据类型自己的 I/O 函数来转换成(或者转换自)text 或其他字符串类型,这些转换也没有 显式地在 sys_cast 中表示。 表 3.1.13: sys_cast 列 名称 类型 引用 描述 oid oid castsource oid sys_type.oid 源数据类型的 OID casttarget oid sys_type.oid 目标数据类型的 OID 行标识符 见续表 169 第 3 章 静态数据词典视图 表 3.1.13 – 续表 名称 类型 引用 描述 castfunc oid sys_proc.oid 执行该转换的函数的 OID。如 果该转换方法不需要一个函数则 存储 0。 castcontext char 指示该转换能被调用的环境。e 表示仅能作为一个显式转换(使 用 CAST 或:: 语法)。a 表示在 赋值给目标列时隐式调用,和显 式调用一样。i 表示在表达式中 隐式调用,和其他转换一样。 castmethod char 指示转换如何被执行。f 表明使 用 castfunc 中指定的函数。i 表明使用输入/输出函数。b 表 明该类型是二进制可转换的,因 此不需要转换。 在 sys_cast 里列出的类型转换函数必须总是以转换的源类型作为它的第一个参数类型,并且返回转换的目标类 型作为它的结果类型。一个类型转换函数最多有三个参数。如果出现了第二个参数,必须是 integer 类型;它接受 与目标类型关联的修饰词,如果没有,就是-1。如果出现了第三个参数,那么必须是 boolean 类型;如果该类型转 换是一种明确的转换,那么它接受 true,否则接受 false。 在 sys_cast 里创建一条源类型和目标类型相同的记录是合理的,只要相关联的函数接受多过一个参数。这样的 记录代表“长度转换函数”,它们把该类型的值转换为对特定的类型合法的值。 如果一个 sys_cast 的项有着不同的原类型和目标类型,并且有一个接收多于一个参数的函数,那么它会在一个 步骤中完成从一种类型到另外一种类型的转换并应用一个长度转换。如果没有这样的项,使用一个类型修改器的转换 涉及两个步骤,一个是在数据类型之间转换,另外一个是应用修改器。 3.1.13 sys_class 目录 sys_class 记录表和几乎所有具有列或者像表的东西。这包括索引(但还要参见 sys_index)、序列(但 还要参见 sys_sequence)、视图、物化视图、组合类型和 TOAST 表,参见 relkind。下面,当我们提及所有这些 类型的对象时我们使用“关系”。并非所有列对于所有关系类型都有意义。 170 第 3 章 静态数据词典视图 表 3.1.14: sys_class 列 名称 类型 引用 描述 oid oid 行标识符 relname name 表、索引、视图等的名字 relnamespace oid sys_namespace.oid 包含该关系的名字空间的 OID reltype oid sys_type.oid 可能存在的表行类型所对应数 据类型的 OI D(对索引为 0, 索引没有 sys_type 项) reloftype oid sys_type.oid 对于有类型的表,为底层组合 类型的 OID,对于其他所有关 系为 0 relowner oid sys_authid.oid 关系的拥有者 relam oid sys_am.oid 如果这是一个表或索引,表或 索引使用的访问方法(heap、 B 树、哈希等) relfilenode 该关系的磁盘文件的名字,0 oid 表示这是一个“映射”关系, 其磁盘文件名取决于低层状态 reltablespace oid sys_tablespace.oid 该关系所存储的表空间。如果 为 0 ,使用数据库的默认表空 间。(如果关系无磁盘文件时 无意义) relpages integer 该 表 磁 盘 表 示 的 尺 寸, 以 页 面计(页面尺寸为 BLCKSZ )。这只是一个由规划器使用 的估计值。它被 VACUUM 、 ANALYZE 以及一些 DDL 命 令(如 CREATE INDEX ) 所更新。 reltuples real 表中的存活行数。这只是一个 由规划器使用的估计值。它被 VACUUM 、ANALYZE 以及 一些 DDL 命令(如 CREATE INDEX )所更新。 见续表 171 第 3 章 静态数据词典视图 表 3.1.14 – 续表 名称 类型 relallvisible integer 引用 描述 在表的可见性映射表中被标记 为全可见的页数。这只是一个 由规划器使用的估计值。它被 VACUUM 、ANALYZE 以及 一些 DDL 命令(如 CREATE INDEX )所更新。 reltoastrelid oid sys_class.oid 与该表相关联的 TO AST 表 的 OID,如果没有则为 0。 TOAST 表将大属性“线外” 存储在一个二级表中。 relhasindex boolean 如果这是一个表并且其上建有 (或最近建有)索引则为真 relisshared boolean 如果该表在集簇中的所有数据 库间共享则为真。只有某些系 统目录(如 sys_database ) 是共享的。 relpersistence char p = 永久表,u = 无日志表,t = 临时表 relkind char r = 普通表,i = 索引,S = 序 列,t = TOAST 表,v = 视 图,m = 物化视图,c = 组合 类型,f = 外部表,p = 分区 表,I = 分区索引 relnatts smallint 关 系 中 用 户 列 的 数 目 (系 统 列 不 计 算 在 内)。 在 sys_attribute 中必须有 这 么 多 对 应 的 项。 另 请 参 阅 sys_attribute.attnum。 relchecks smallint 表上 CHECK 约束的数目,参 见 sys_constraint 目录 relhasoids boolean 如果为关系的每一行生成一个 OID 则为真 见续表 172 第 3 章 静态数据词典视图 表 3.1.14 – 续表 名称 类型 relhasrules boolean 引用 描述 如果表有(或曾有)规则则为 真,参见 sys_rewrite 目录 relhastriggers 如果表有(或曾有)触发器则 boolean 为真,参见 sys_trigger 目录 relhassubclass 如果表或索引有(或曾有)任 boolean 何继承子女则为真 relrowsecurity 如果表上启用了行级安全性则 boolean 为真,参见sys_policy 目录 relforcerowsecurity 如果行级安全性(启用时)也 boolean 适 用 于 表 拥 有 者 则 为 真, 参 见sys_policy 目录 relispopulated 如果表已被填充则为真(对于 boolean 所有关系该列都为真,但对于 某些物化视图却不是) relreplident 用 来 为 行 形 成 “replicaiden- char tity”的列:d = 默认 (主键, 如果存在), n = 无, f = 所有列 i = 索引的 indisreplident 被设置或者为默认 relispartition 如果表或索引是一个分区,则 boolean 为真 relrewrite oid sys_class.oid 对于在要求表重写的 DDL 操 作期间被写入的新关系,这个 域包含原始关系的 OID,否 则为 0。那种状态仅在内部可 见,对于一个用户可见的关系 这个域应该从不包含不是 0 的 值。 见续表 173 第 3 章 静态数据词典视图 表 3.1.14 – 续表 名称 类型 relfrozenxid xid 引用 描述 在此之前的所有事务 ID 在 表中已经被替换为一个永久 的(“冻结的”) 事务 ID 。 这用于跟踪表是否需要被清 理,以便阻止事务 ID 回卷或 者允许 sys_xact 被收缩。 如果该关系不是一个表则为 0 (InvalidTransactionId)。 relminmxid xid 在此之前的多事务 ID 在表中 已经被替换为一个事务 ID。 这被用于跟踪表是否需要被清 理,以阻止多事务 ID 回卷或 者允许 sys_multixact 被收 缩。如果关系不是一个表则为 0(InvalidMultiXactId )。 relacl aclitem[] 访问权限 reloptions text[] 访 问 方 法 相 关 的 选 项, 以 “keyword=va lue”字符串形 式 relpartbound sys_node_tree 如 果 表 示 一 个 分 区 (见 relispartition ), 分 区 边 界的内部表达 sys_class 中的一些逻辑标志被以一种懒惰的方式维护:在正确状态时它们被保证为真,但是当条件不再为真时 它们并不会被立刻重置为假。例如,relhasindex 由 CREATE INDEX 设置,但它从不会被 DROP INDEX 清除。作为替 代,VACUUM 会在找到无索引表后清除其 relhasindex。这种安排避免了竞争条件并且提高了并发性。 3.1.14 sys_collation 目录 sys_collation 描述了可用的排序规则,其本质是从一个 SQL 名字到操作系统 locale 分类的映射。更多信 息参见 排序规则支持。 174 第 3 章 静态数据词典视图 表 3.1.15: sys_collation 列 名称 类型 引用 描述 oid oid 行标识符 collname name 排序规则名字(在每一个名字空 间和编码中唯一) collnamespace oid sys_namespace.oid 包含该排序规则的名字空间的 OID collowner oid collprovider char sys_authid.oid 排序规则的拥有者 排序规则的提供者:d = 数据库 默认,c = libc,i = icu collisdeterministic boolean Is the collation deterministic? collencoding integer 该排序规则可应用的编码,-1 表 示它可用于任何编码 collcollate name 该排序规则对象的 LC_COLLATE collctype name 该排序规则对象的 LC_CTYPE collversion text 排序规则的提供者相关的版本。 这是在排序规则创建时记录下来 的,并且在使用排序规则时会被 检查以检测可能导致数据损坏的 排序规则定义的改变。 注 意 在 这 个 目 录 中 的 唯 一 键 是 (collname、collencoding、collencoding), 不 仅 仅 是 (collname, collencoding)。所有 collencoding 不等于当前数据库编码或-1 的编码规则通常都会被 KingbaseES 忽略, 且禁止创建和 collencoding = -1 的项重名的项。因此使用一个受限的 SQL 名字(“schema“.“name“)来标识一个 排序规则是足够的,即使这根据目录定义是不唯一的。以这种方式定义这个目录的原因是 initdb 会在集簇初始化时 使用系统上所有可用的 locale 填充这个目录,所以它必须能够为所有可能在集簇中使用的编码保持项。 在 template0 数据库中,创建与数据库编码不匹配的编码是有用的,因为它们可以匹配后面从 template0 克隆 的数据库的编码。这在目前必须手动完成。 3.1.15 sys_constraint 目录 sys_constraint 存储表上的检查、主键、唯一、外键和排他约束(列约束也不会被特殊对待。每一个列约 束都等同于某种表约束。)。非空约束不在这里,而是在 sys_attribute 目录中表示。 用户定义的约束触发器(使用 CREATE CONSTRAINT TRIGGER 创建)也会在这个表中产生一项。 175 第 3 章 静态数据词典视图 域上的检查约束也存储在这里。 表 3.1.16: sys_constraint 列 名称 类型 引用 oid oid 行标识符 conname name 约束名字(不需要唯一!) connamespace oid contype char sys_namespace.oid 描述 包含此约束的名字空间的 OID c = 检查约束,f = 外键约束,p = 主键约束,u = 唯一约束,t = 约束 触发器,x = 排他约束 condeferrable boolean 该约束是否能被延迟? condeferred boolean 该约束是否默认被延迟? convalidated boolean 此约束是否被验证过?当前对于外 键和检查约束只能是假 conrelid oid sys_class.oid 该约束所在的表,如果不是表约束 则为 0 contypid oid sys_type.oid 该约束所在的域,如果不是域约束 则为 0 conindid oid sys_class.oid 如果该约束是唯一、主键、外键或 排他约束,此列表示支持此约束的 索引,否则为 0 conparentid oid sys_constraint.oid 如果这是一个分区中的约束,则是 父分区表中对应的约束;否则为 0 confrelid oid sys_class.oid 如果此约束是一个外键约束,此列 为被引用的表,否则为 0 confupdtype char 外键更新动作代码:a = 无动作,r = 限制,c = 级联,n = 置空,d = 置为默认值 confdeltype char 外键删除动作代码:a = 无动作,r = 限制,c = 级联,n = 置空,d = 置为默认值 见续表 176 第 3 章 静态数据词典视图 表 3.1.16 – 续表 名称 类型 confmatchtype char 引用 描述 外键匹配类型:f = 完全,p = 部 分,s = 简单 conislocal 此约束是定义在关系本地。注意一 boolean 个约束可以同时是本地定义和继 承。 coninhcount 此约束的直接继承祖先数目。一个 integer 此列非零的约束不能被删除或重命 名。 connoinherit 为真表示此约束被定义在关系本 boolean 地。它是一个不可继承约束。 conkey smallint[] sys_attribute.attnum 如果是一个表约束(包括外键但不 包括约束触发器),此列是被约束 列的列表 confkey smallint[] sys_attribute.attnum 如果是一个外键,此列是被引用列 的列表 conpfeqop oid[] sys_operator.oid 如果是一个外键,此列是用于 PK = FK 比较的等值操作符的列表 conppeqop oid[] sys_operator.oid 如果是一个外键,此列是用于 PK = PK 比较的等值操作符的列表 conffeqop oid[] sys_operator.oid 如果是一个外键,此列是用于 FK = FK 比较的等值操作符的列表 conexclop oid[] sys_operator.oid 如果是一个排他约束,此列是没列 排他操作符的列表 conbin sys_node_tree 如 果 是 一 个 检 查 约 束, 此 列 是 表 达 式 的 一 个 内 部 表 示 (It’s recommended to usesys_get_constraintdef() to extract the definition of a check constraint.) constatus boolean 约束状态 在一个排他约束的情况中,conkey 只对约束元素是单一列引用时有用。对于其他情况,conkey 为 0 且必须查阅 相关索引来发现被约束的表达式(conkey 因此和 sys_index.indkey 具有相同的内容)。 177 第 3 章 静态数据词典视图 注 意: 当 被 引 用 对 象 改 变 时,consrc 不 能 被 更 新。 例 如, 它 不 跟 踪 列 的 重 命 名。 最 好 使 用 sys_get_constraintdef() 来抽取一个检查约束的定义,而不是依赖这个域。 注意: sys_class.relchecks 需要和每个关系在此目录中的检查约束数量保持一致。 3.1.16 sys_constraint_status 目录 sys_constraint_status 存储表上的检查、主键、唯一、外键和排他约束的状态信息。 这个表中每一项都对应目录 sys_constraint 中的一项,这个表的列 conoid 与目录 sys_constraint 的列 oid 一一对应。 表 3.1.17: sys_constraint_status 列 名称 类型 引用 描述 conoid oid sys_constraint.oid 约束 constatus boolean conrefconoid oid 约束启用禁用状态 sys_constraint.oid 如果此约束是一个外键约束,此列为引 用的主键或者唯一约束,否则为 0 3.1.17 sys_context 目录 sys_context 存储关于 context 的信息,更多信息参见 CREATE CONTEXT 。 表 3.1.18: sys_context 列 名称 类型 引用 描述 oid oid 行标识符 conname name context 的名字 connamespace oid sys_namespace.oid context 所属命名空间的 id conower oid sys_authid.oid context 的拥有者 pkgname name context 关联包的名字 见续表 178 第 3 章 静态数据词典视图 表 3.1.18 – 续表 名称 类型 引用 描述 pkgnamespace oid sys_namespace.oid 关联包所属命名空间的 id conacl aclitem[] 访问权限 3.1.18 sys_conversion 目录 sys_conversion 描述编码转换函数。更多信息参见 CREATE CONVERSION 。 表 3.1.19: sys_conversion 列 名称 类型 引用 描述 oid oid 行标识符 conname name 转换的名字(在一个名字空间内唯一) connamespace oid sys_namespace.oid 包含此转换的名字空间的 OID conowner oid sys_authid.oid 转换的拥有者 conforencoding integer 源编码 ID contoencoding integer 目标编码 ID conproc regproc condefault boolean sys_proc.oid 转换函数 如果这是默认转换则为真 3.1.19 sys_database 目录 sys_database 存储有关可用数据库的信息。数据库通过 CREATE DATABASE 命令创建。更多关于其参 数的信息请查阅 数据库管理入门。 和 大 部 分 系 统 目 录 不 同,sys_database 是 在 集 簇 的 所 有 数 据 库 之 间 共 享 的: 在 一 个 集 簇 中 只 有 一 份 sys_database 拷贝,而不是每个数据库一份。 179 第 3 章 静态数据词典视图 表 3.1.20: sys_database 列 名称 类型 引用 oid oid 行标识符 datname name 数据库名字 datdba oid sys_authid.oid 描述 数据库的拥有者,通常是创建它的 用户 encoding integer 此数据库的字符编码的编号 (sys_encoding_to_char() 可 将此编号转换成编码的名字) datcollate name 此数据库的 LC_COLLATE datctype name 此数据库的 LC_CTYPE datistemplate boolean 如果为真,则此数据库可被任何具 有 CREATEDB 特权的用户克隆;如 果为假,则只有超级用户或者该数 据库的属主能够克隆它。 datallowconn boolean 如果为假则没有人能连接到这个数 据库。这可以用来保护 template0 数据库不被修改。 datconnlimit integer 设置能够连接到这个数据库的最大 并发连接数。-1 表示没有限制。 datlastsysoid oid 数据库中最后一个系统 OID,对 sys_dump 特别有用 datfrozenxid xid 在此之前的所有事务 ID 在数据库 中已经被替换为一个永久的(“冻 结的”) 事务 ID 。这用于跟踪 数据库是否需要被清理,以便组织 事务 ID 回环或者允许 sys_xact 被收缩。它是此数据库中所有表的 sys_class. relfrozenxid 值的最 小值。 见续表 180 第 3 章 静态数据词典视图 表 3.1.20 – 续表 名称 类型 datminmxid xid 引用 描述 在此之前的所有多事务 ID 在数 据库中已经被替换为一个事务 ID 。这用于跟踪数据库是否需要被清 理,以便组织事务 I D 回环或 者允许 sys_multixact 被收缩。它 是此数据库中所有表的 sys_class. relminmxid 值的最小值。 dattablespace oid sys_tablespace.oid 此 数 据 库 的 默 认 表 空 间。 在 此 数 据 库 中, 所 有 sys_class. reltablespace 为 0 的表都将 被存储在这个表空间中,尤其是非 共享系统目录都会在其中。 datacl 访问权限 aclitem[] 3.1.20 sys_database_dblink 表 sys_database_dblink 存储有关 dblink 外部链接的信息。外部链接通过 CREATE DATABASE LINK 命令 创建。 表 3.1.21: sys_database_dblink 列 名称 类型 引用 oid oid 行标识符 lnkname name dblink 名称 lnknamespace oid lnkuser oid lnkowner oid lnkserver oid dblink 服务行标识符 dbtype name dblink 源数据库类型 lnkoptions text[] dblink 连接信息 sys_namespace.oid 描述 dblink 所属名字空间的 OID dblink 用户名行标识符 sys_authid.oid dblink 所属用户名 ID 见续表 181 第 3 章 静态数据词典视图 表 3.1.21 – 续表 名称 类型 引用 lnkcreated timestamp with time zone 描述 dblink 创建时间 3.1.21 sys_db_role_setting 目录 sys_db_role_setting 为每一个角色和数据库组合记录被设置到运行时配置变量的默认值。 和大部分系统目录不同,sys_db_role_setting 是在集簇的所有数据库之间共享的:在一个集簇中只有一份 sys_db_role_setting 拷贝,而不是每个数据库一份。 表 3.1.22: sys_db_role_setting 列 名称 类型 引用 描述 setdatabase oid sys_database.oid 此设置可用的数据库 OI D,如果不 与具体数据库相关则为 0 setrole oid sys_authid.oid 此设置可用的角色 OID,如果不与 具体角色相关则为 0 setconfig 运行时配置变量的默认值 text[] 3.1.22 sys_default_acl 目录 sys_default_acl 存储要被分配给新创建对象的初始权限。 表 3.1.23: sys_default_acl 列 名称 类型 引用 描述 oid oid defaclrole oid sys_authid.oid 与此项相关的角色的 OID defaclnamespace oid sys_namespace.oid 与此项相关的名字空间的 行标识符 OID,如果没有则为 0 见续表 182 第 3 章 静态数据词典视图 表 3.1.23 – 续表 名称 类型 defaclobjtype char 引用 描述 此项适合的对象类型:r = 关系(表、视图),S = 序 列,f = 函数,T = 类型,n = 方案 defaclacl 此类对象在创建时应用有的 aclitem[] 访问权限 一 个 sys_default_acl 项 展 示 了 要 分 配 给 属 于 一 个 指 定 用 户 的 对 象 的 初 始 权 限。 当 前 有 两 类 项: defaclnamespace = 0 的“全局”项和引用一个特殊模式的“每方案”项。如果一个全局项存在,则它重载该 对象类型的普通 hard-wired 默认权限。一个每模式项如果存在,表示权限将被加入到全局或 hard-wired 默认权限 中。 注意当在另一个表中的一个 ACL 项为空时,它用来表示其对象的 hard-wired 默认权限,而不是当时可能在 sys_default_acl 中的任何权限。只有在对象创建期间才会查阅 sys_default_acl。 3.1.23 sys_depend 目录 sys_depend 记录数据库对象之间的依赖关系。这些信息允许 DROP 命令查找必须被 DROP CASCADE 删除的 其他对象,或者在 DROP RESTRICT 情况下阻止删除。 另请参阅sys_shdepend ,它对在一个数据库集簇中共享的对象之间的依赖提供了相似的功能。 表 3.1.24: sys_depend 列 名称 类型 引用 描述 classid oid sys_class.oid 依赖对象所在的系统目录 OID objid oid objsubid integer any OID column 指定依赖对象的 OID 对于一个表列,这里是列号 (objid 和 classid 指表本 身)。对于所有其他对象类 型,此列为 0。 refclassid oid sys_class.oid 被引用对象所在的系统目录 的 OID 见续表 183 第 3 章 静态数据词典视图 表 3.1.24 – 续表 名称 类型 引用 描述 refobjid oid any OID column 指定被引用对象的 OID refobjsubid integer 对于一个表列,这里是列号 (refobjid 和 refclassid 指表本身)。对于所有其他 对象类型,此列为 0。 deptype char 定义此依赖关系语义的一个 代码,见文本 在所有情况下,一个 sys_depend 项表明被引用对象不能在没有删除其依赖对象的情况下被删除。但是,其中也 有多种依赖类型,由 deptype 标识: DEPENDENCY_NORMAL (n) 在独立创建的对象之间的一个普通关系。依赖对象可以在不影响被依赖对象的情况下被删 除。被引用对象只能通过指定 CASCADE 被删除,在这种情况下依赖对象也会被删除。例子:一个表列对于其数 据类型有一个普通依赖。 DEPENDENCY_AUTO (a) 依赖对象可以被独立于被依赖对象删除,且应该在被引用对象被删除时自动被删除(不管在 RESTRICT 或 CASCADE 模式)。例子:一个表上的一个命名约束应该被设置为自动依赖于表,这样在表被删除 后它也会消失。 DEPENDENCY_INTERNAL (i) 依赖对象作为被引用对象创建过程的一部分被创建,并且只是其内部实现的一部分。依赖 对象的直接 DROP 将被完全禁止 (我们将告诉用户对引用的对象发出 DROP)。不管是否指定了级联,对引用对 象的删除都会自动删除依赖对象。如果依赖对象由于对被删除的其他对象的依赖而必须删除,则其删除将转换 为引用对象的删除,以便依赖对象的正常和自动依赖关系的行为与引用对象的依赖关系非常相似。示例: 视图的 ON SELECT 规则在内部依赖于视图,从而防止在视图保留时删除它。规则的依赖项 (例如它引用的表) 的行为就 好像它们是视图的依赖项一样。 DEPENDENCY_PARTITION_PRI (P) DEPENDENCY_PARTITION_SEC (S) 依赖对象是作为被引用对象创建的一部分创建 的,它实际上只是其内部实现的一部分; 但是,与内部对象不同,有多个这样的引用对象。除非被引用的对象 中至少有一个被删除,否则不能删除从属对象; 如果有,则无论是否指定了级联,都应该删除依赖对象。与内部 对象不同的是,依赖对象所依赖的其他对象的删除不会导致任何分区引用对象的自动删除。因此,如果删除没 有通过其他路径级联到这些对象中的至少一个,那么它将被拒绝。(在大多数情况下,依赖对象与至少一个分区 引用的对象共享其所有非分区依赖项,因此此限制不会导致阻塞任何级联删除。) 主分区依赖项和辅助分区依赖 项的行为相同,但主分区依赖项更适合在错误消息中使用; 因此,与分区相关的对象应该有一个主分区依赖项和 一个或多个辅助分区依赖项。注意,分区依赖项是附加的,而不是代替的,对象通常具有的任何依赖项。这简 化了 ATTACH/DETACH PARTITION 分区操作: 只需要添加或删除分区依赖项。例如: 子分区索引的分区依赖于它 所在的分区表和父分区索引,因此,如果其中一个被删除,它就会消失,但如果不删除,它就不会消失。对父 索引的依赖是主索引,因此,如果用户试图删除子分区索引,错误消息将建议删除父索引 (而不是表)。 DEPENDENCY_EXTENSION (e) 从属对象是引用对象的扩展的成员 (参见sys_extension )。依赖对象只能通过引用对象 的 DROP EXTENSION 来删除。从功能上讲,这个依赖项类型与内部依赖项的作用相同,但是为了明晰和简化 sys_dump,它是独立的。 184 第 3 章 静态数据词典视图 DEPENDENCY_AUTO_EXTENSION (x) 从属对象不是作为引用对象的扩展的成员 (因此 sys_dump 不应该忽略它),但是 没有扩展它就不能工作,如果扩展是,则应该自动删除它。依赖对象也可以自动删除。在功能上,这个依赖项 类型与自动依赖项的作用相同,但是为了明晰和简化 sys_dump,它是独立的。 DEPENDENCY_PIN (p) 没有依赖对象,这种类型的项是一个信号,用于说明系统本身依赖于被引用对象,并且该对象 永远不能被删除。这种类型的项只能被 initdb 创建。而此种项的依赖对象的列都为 0。 DEPENDENCY_REFERENCE ( r ) 被引用对象在依赖对象的定义中被使用时,会认为二者的依赖关系为引用依赖。引用 依赖仅用于影响主从对象在数据库中的状态,并不会影响主从对象的删除或重建。仅在开启 PLSQL 对象支持 状态功能时会生成引用依赖关系,详情参见《KingbaseES 数据库参考手册 》的 ora_func_style 参数章节。 在未来可能会需要其他依赖类型。 注意,两个对象很可能由多个 sys_depend 条目链接。例如,子分区索引对其关联的分区表具有分区类型依赖 项,对其索引的表的每一列具有自动依赖项。这种情况表达了多种依赖语义的结合。如果依赖对象的任何依赖项满足 自动删除的条件,则可以不使用级联删除依赖对象。相反,必须满足关于哪些对象必须一起删除的所有依赖项限制。 3.1.24 sys_description 目录 sys_description 存储对每一个数据库对象可选的描述(注释)。描述可以通过 COMMENT 操作,并可 使用 ksql 的\d 命令查看。在 sys_description 的初始内容中提供了很多内建系统对象的描述。 参见sys_shdescription ,它对在一个数据库集簇中共享的对象的描述提供了相似的功能。 表 3.1.25: sys_description 列 名称 类型 引用 描述 objoid oid any OID column 描述所属对象的 OID classoid oid sys_class.oid 对象所述的系统目录的 OID objsubid integer 对于一个表列上的一个注释,这里是列 号(objoid 和 classoid id 指表本身)。 对所有其他对象类型,此列为 0。 description text 作为该对象描述的任意文本 3.1.25 sys_directory 表 sys_directory 存储目录 DIRECTORY 的信息。 185 第 3 章 静态数据词典视图 表 3.1.26: sys_directory 列 名称 类型 引用 描述 oid oid 目录 oid dirname name 目录名称 dirowner oid originconid oid 默认置 0 ospath text 目录的路径 diracl aclitem[] 默认置 null sys_authid.oid 目录的属主 oid 3.1.26 sys_enum sys_enum 目录包含每一个枚举类型的项,其中包括了值和标签。一个给定枚举值的内部表示实际上是它在 sys_enum 中的相关行的 OID。 表 3.1.27: sys_enum 列 名称 类型 引用 描述 oid oid enumtypid oid enumsortorder real 此枚举值在其枚举类型中的排序位置 enumlabel name 此枚举值的文本标签 行标识符 sys_type.oid 包含此枚举值的 sys_type type 项的 OID sys_enum 行的 OID 值遵循一种特殊的规则:即 OID 的数值被保证按照其枚举类型的排序顺序进行排序。即如 果两个偶数 OID 属于同一枚举类型,较小的 OID 必然具有较小的 enumsortorder 值。奇数 OID 值不需要遵循排序 顺序。这种规则使得枚举比较例程在很多常见情况下可以避免系统目录查找。创建和修改枚举类型的例程将尝试尽可 能地为枚举值分配偶数 OID。 当一个枚举类型被创建后,其成员会被分配排序位置 1..“n“。但后面增加的成员可能会被分配负值或者分数值的 enumsortorder。对于这些值的唯一要求是它们必须被正确地排序且和保持唯一。 3.1.27 sys_event_trigger 目录 sys_event_trigger 存储事件触发器。更多信息参见 触发器。 186 第 3 章 静态数据词典视图 表 3.1.28: sys_event_trigger 列 名称 类型 引用 描述 oid oid 行标识符 evtname name 触发器名(必须唯一) evtevent name 此触发器触发的事件的标识符 evtowner oid sys_authid.oid 事件触发器的拥有者 evtfoid oid sys_proc.oid 将被调用的函数 evtenabled char 控制事件触发器触发的 ssion_replicati on_role se 模式 O = 触发器在“origin”和“l ocal” 模式触发,D = 触发器被禁用,R = 触发器在“rep lica”模式触发,A = 触发器总是触发。 evttags 此触发器将触发的命令标签。如果 text[] 为空,此触发器的触发不受命令标 签的限制。 3.1.28 sys_extension 目录 sys_extension 存储有关已安装扩展的信息。有关扩展的细节请参见 扩展插件概述。 表 3.1.29: sys_extension 列 名称 类型 引用 描述 oid oid 行标识符 extname name 扩展的名字 extowner oid sys_authid.oid 扩展的拥有者 extnamespace oid sys_namespace.oid 包含此扩展的导出对象的模 式 extrelocatable boolean 如果扩展可被重定位到另一 个模式则为真 extversion text 扩展的版本名字 见续表 187 第 3 章 静态数据词典视图 表 3.1.29 – 续表 名称 类型 引用 描述 extconfig oid[] sys_class.oid 扩展的配置表的 regclass 项 的 OID 数组,如果没有配置 表则为 NULL extcondition 扩展的配置表的 WHERE 子句 text[] 过滤条件的数组,如果没有 则为 NULL 注意和大部分具有一个“namespace”列的模式不同,extnamespace 不是用来表示扩展属于该模式。扩展的名 字从不用模式进行限定。extnamespace 表明该模式包含了该扩展的大部分或全部对象。如果 extrelocatable 为 真,则该模式事实上必须包含属于此扩展的全部模式限定的对象。 3.1.29 sys_foreign_data_wrapper 目录 sys_foreign_data_wrapper 存储外部数据包装器定义。外部数据包装器是一种访问位于外部服务器上数 据的机制。 表 3.1.30: sys_foreign_data_wrapper 列 名称 类型 引用 描述 oid oid 行标识符 fdwname name 外部数据包装器的名字 fdwowner oid sys_authid.oid 外部数据包装器的拥有者 fdwhandler oid sys_proc.oid 指一个负责为外部数据包装器提供 执行例程的处理函数。如果没有提 供处理函数则为 0 fdwvalidator oid sys_proc.oid 指一个负责检查传给外部数据包装 器的选项的有效性的验证函数,包 括外部服务器选项以及使用外部数 据包装器的用户映射。如果没有提 供验证函数则为 0 fdwacl aclitem[] 访问权限 见续表 188 第 3 章 静态数据词典视图 表 3.1.30 – 续表 名称 类型 fdwoptions text[] 引用 描述 外部数据包装器特定选项,以“keyword=va lue”字符串形式 3.1.30 sys_foreign_server 目录 sys_foreign_server 存储外部服务器定义。外部服务器定义了外部数据的来源,例如一个远程服务器。 外部服务器通过外部数据包装器来访问。 表 3.1.31: sys_foreign_server 列 名称 类型 引用 oid oid 行标识符 srvname name 外部服务器的名字 srvowner oid sys_authid.oid 描述 外部服务器的拥有 者 srvfdw oid sys_foreign_data_wrapper.oid 此外部服务器的外 部数据包装器的 OID srvtype text 服务器的类型(可 选) srvversion text 服务器的版本(可 选) srvacl aclitem[] 访问权限 srvoptions text[] 外部服务器特定 选 项, 以 “keyword=va lue”字 符串形式 3.1.31 sys_foreign_table 目录 sys_foreign_table 包含关于外部表的辅助信息。一个外部表和普通表一样,主要由一个 sys_class 项表 示。它的 sys_foreign_table 项包含外部表所特有的信息。 189 第 3 章 静态数据词典视图 表 3.1.32: sys_foreign_table 列 名称 类型 引用 描述 ftrelid oid sys_class.oid 外部表的 sys_class 项的 OID ftserver oid sys_foreign_server.oid 外部表所在的外部服务器 的 OID ftoptions 外 部 表 选 项, 以 “key- text[] word= value”字符串形 式 3.1.32 sys_index 目录 sys_index 包含关于索引的部分信息。其他信息大部分在 sys_class 中。 表 3.1.33: sys_index 列 名称 类型 引用 描述 indexrelid oid sys_class.oid 此索引的 sys_class 项的 OID indrelid oid sys_class.oid 此 索 引 的 基 表 的 sys_class 项的 OID indnatts smallint 索 引 中 的 总 列 数 (与 sys_class.relnatts 重 复),这个数目包括键和 被包括的属性 indnkeyatts smallint 索引中键列的编号,不计 入任何的内含列,它们只 是被存储但不参与索引的 语义 indisunique boolean 表示是否为唯一索引 见续表 190 第 3 章 静态数据词典视图 表 3.1.33 – 续表 名称 类型 indisprimary boolean 引用 描述 表示索引是否表示表的 主 键 (如 果 此 列 为 真, indisunique 也总是为 真) indisexclusion boolean 表示索引是否支持一个排 他约束 indimmediate boolean 表示唯一性检查是否在插 入 时 立 即 被 执 行 (如 果 indisunique 为假,此列 无关) indisclustered boolean 如果为真,表示表最后以 此索引进行了聚簇 indisvalid boolean 如果为真,此索引当前可 以用于查询。为假表示此 索引可能不完整:它肯定 还 在 被 INSERT /UPDATE 操作所修改,但它不能安 全地被用于查询。如果索 引是唯一索引,唯一性属 性也不能被保证。 indcheckxmin boolean 如 果 为 真, 直 到 此 sys_index 行的 xmin 低于 查询的 TransactionXmin 视界之前,查询都不能使 用此索引,因为表可能包 含具有它们可见的不相容 行的损坏 HOT 链 indisready boolean 如果为真,表示此索引当 前 可 以 用 于 插 入。 为 假 表 示 索 引 必 须 被 INSERT /UPDATE 操作忽略。 见续表 191 第 3 章 静态数据词典视图 表 3.1.33 – 续表 名称 类型 indislive boolean 引用 描述 如果为假,索引正处于被 删除过程中,并且必须被 所 有 处 理 忽 略 (包 括 H OT 安全的决策) indisreplident 如果为真,这个索引被选 boolean 择为使用 ALTER TABLE ... REPL ICA IDENTITY 的 USING INDEX ... “replicaidentity” indkey int2vector sys_attribute.attnum 这是一个 indnatts 值的 数组,它表示了此索引索 引的表列。例如一个“1 3 “值可能表示表的第一和第 三列组成了索引项。键列 出现在非键(内含)列前 面。数组中的一个 0 表示 对应的索引属性是一个在 表列上的表达式,而不是 一个简单的列引用。 indcollation oid[] sys_collation.oid 对 于 索 引 (indnkeyatts 键 值) 中的每一列,这包含要用 于该索引的排序规则的 O ID,如果该列不是一种可 排序数据类型则为零。 indclass oid[] sys_opclass.oid 对于索引键中的每一列 (indnkeyatts 值),这 里包含了要使用的操作符 类的 OID。 indoption int2vector 这是一个 indnkeyatts 值 的数组,用于存储每列的 标志位。位的意义由索引 的访问方法定义。 见续表 192 第 3 章 静态数据词典视图 表 3.1.33 – 续表 名称 类型 引用 indexprs sys_node_tree 描述 非简单列引用索引属 性 的 表 达 式 树 (以 nodeToString() 形 式)。对于 indkey 中每 一个为 0 的项,这个列表 中都有一个元素。如果所 有的索引属性都是简单引 用,此列为空。 indpred 部分索引谓词的表达式树 sys_node_tree (以 nodeToString() 形 式)。 如 果 不 是 部 分 索 引,此列为空。 3.1.33 sys_inherits 目录 sys_inherits 记录有关表继承层次的信息。数据库中每一个直接父子关系在这里都有一项(非直接继承可 以通过顺着项构成的链来决定)。 表 3.1.34: sys_inherits 列 名称 类型 引用 描述 inhrelid oid sys_class.oid 孩子表的 OID inhparent oid sys_class.oid 父表的 OID inhseqno integer 如果一个子表有多于一个直接父表(多 继承),这个数字说明了继承列被排列 的顺序。计数从 1 开始。 3.1.34 sys_init_privs 目录 sys_init_privs 记录系统中对象的初始特权。数据库中每一个具有非默认(非-NULL)初始特权集合的对 象都有一个条目在其中。 对象可以在系统初始化(initdb)时获得其初始特权,也可以在 CREATE EXTENSION 期间创建该对象并且在扩展 脚本中用 GRANT 来设置对象的初始特权。注意系统将自动处理扩展脚本执行期间对特权的记录,扩展的作者们只需 要在他们的脚本中使用 GRANT 以及 REVOKE 语句以便特权被记录下来。privtype 列表示初始特权是被 initdb 设置还 193 第 3 章 静态数据词典视图 是在一次 CREATE EXTENSION 命令期间被设置。 具有被 initdb 设置的初始特权的对象的条目中 privtype 是'i',而具有被 CREATE EXTENSION 设置的初始特权 的对象的条目中 privtype 为'e'。 表 3.1.35: sys_init_privs 列 名称 类型 引用 描述 objoid oid 任何 OID 列 指定对象的 OID classoid oid sys_class.oid 对象所在的系统目录的 OID objsubid integer 对 于 一 个 表 列, 这 里 是 列 编 号 (objoid 和 classoid 指向表本 身)。对于所有其他对象类型,这 列为零。 privtype 定义这个对象初始特权类型的代 char 码,见文字说明 initprivs 初始的访问特权,详见数据定义 aclitem[] 3.1.35 sys_language 目录 sys_language 注册了可用于编写函数或存储过程的语言。更多关于语言处理器的信息请参阅 CREATE LANGUAGE 。 表 3.1.36: sys_language 列 名称 类型 引用 oid oid 行标识符 lanname name 语言的名字 lanowner oid lanispl boolean sys_authid.oid 描述 语言的拥有者 内部语言为假(如 SQL ),用户 定义语言为真。当前,sys_dump 仍 然使用这个列来决定要转储哪些语 言,但在未来这可能会被一种不同 的机制所取代。 见续表 194 第 3 章 静态数据词典视图 表 3.1.36 – 续表 名称 类型 lanpltrusted boolean 引用 描述 为真表示这是一种可信的语言,即 它被相信不会向普通 SQL 执行环境 之外的任何东西授予权限。只有超 级用户可以在非可信语言中创建函 数。 lanplcallfoid oid sys_proc.oid 对于非内部语言,此列引用语言处 理器,它是一个特殊函数负责执行 所有用这种语言编写的函数 laninline oid sys_proc.oid 此列引用一个负责执行“内联”匿 名代码块的函数。如果不支持内联 块则为 0。 lanvalidator oid sys_proc.oid 此列引用一个负责在函数创建时对 其进行语法和可用性检查的语言验 证函数。如果没有提供验证器则为 0。 lanacl 访问权限 aclitem[] 3.1.36 sys_largeobject 目录 sys_largeobject 保存构成“大对象”的数据。一个大对象在被创建时会被分配一个 OID。每个大对 象被分解成段或“页”,以便小到可以被方便地作为行存储在 sys_largeobject 中。每页中的数据量被定义为 LOBLKSIZE(目前是 BLCKSZ/4 或是 2 kB)。 在 KingbaseES V8R2 之前,大对象没有相关的权限结构。作为结果,sys_largeobject 是公共可读的并且可以 用来获得系统中所有大对象的 OID(和内容)。但现在不是这样了,可使用sys_largeobject_metadata 来获得大对象 OID 的列表。 表 3.1.37: sys_largeobject 列 名称 类型 引用 描述 loid oid sys_largeobject_metadata.oid 包含此页的大对象的标识符 pageno integer 此页在它所属大对象中的页号 (从 0 开始计) 见续表 195 第 3 章 静态数据词典视图 表 3.1.37 – 续表 名称 类型 data bytea 引用 描述 实际存储在大对象中的数据。它 从不会超过 LOBLKSIZE 字节, 也可能更少。 sys_largeobject 的 每 一 行 保 存 一 个 大 对 象 的 一 个 页 的 数 据, 从 对 象 内 部 的 字 节 偏 移 量 (pageno * LOBLKSIZE)开始。现在的实现允许稀疏存储:页面可能丢失,并且可能比 LOBLKSIZE 字节短(即便不是最后 一页)。一个大对象中丢失的区域会被读出为 0。 3.1.37 sys_largeobject_metadata 目录 sys_largeobject_metadata 保持着与大对象有关的元数据。真正的大对象数据被存储在sys_largeobject 中。 表 3.1.38: sys_largeobject_metadata 列 名称 类型 oid oid lomowner oid lomacl aclitem[] 引用 描述 行标识符 sys_authid.oid 大对象的拥有者 访问权限, 3.1.38 sys_namespace 目录 sys_namespace 存储名字空间。名字空间是 SQL 模式之下的结构:每个名字空间拥有一个独立的表、类型 等的集合,且其中没有名字冲突。 表 3.1.39: sys_namespace 列 名称 类型 引用 oid oid 行标识符 nspname name 名字空间的名字 nspowner oid sys_authid.oid 描述 名字空间的拥有者 见续表 196 第 3 章 静态数据词典视图 表 3.1.39 – 续表 名称 类型 引用 nspacl aclitem[] 描述 访问权限 3.1.39 sys_object_status 表 sys_object_status 存储数据库对象的状态信息。在系统表 sys_object_status 中,使用 classid 和 objid 两 组 OID 来确定一个数据库的唯一对象,再加以 objsubid 用于区分该对象是否为对象的子对象,当主对象为包或者对 象类型时,该对象的 objsubid 为 0 则表示该对象为对象声明,当 objsubid 为 1 时,则表示该对象为对象的 body。 status 列则用于记录该对象的具体状态, 表 3.1.40: sys_object_status 列 列名 类型 引用 含义 classid oid sys_class.oid 相关对象所属表的 OID objid oid 对象 oid 相关对象的 OID objsubid int32 无 标记对象的子对象,比如表的列, 包体或者对象类型体 status int32 无 相关对象的状态,包括有效、无效 或者 ddl_error 3.1.40 sys_opclass 目录 sys_opclass 定义索引访问方法的操作符类。每一个操作符类定义了一种特定数据类型和一种特定索引访 问方法的索引列的语义。一个操作符类实际上指定了一个特定的操作符族可以用于一个特定可索引列数据类型。该族 中可用于索引列的操作符能够接受该列的数据类型作为它们的左输入。 操作符类详见 索引的接口扩展。 表 3.1.41: sys_opclass 列 名称 类型 oid oid opcmethod oid 引用 描述 行标识符 sys_am.oid 操作符类所属的索引访问方法 见续表 197 第 3 章 静态数据词典视图 表 3.1.41 – 续表 名称 类型 引用 描述 opcname name opcnamespace oid sys_namespace.oid 操作符类所属的名字空间 opcowner oid sys_authid.oid 操作符类的拥有者 opcfamily oid sys_opfamily.oid 包含此操作符类的操作符族 opcintype oid sys_type.oid 操作符类索引的数据类型 opcdefault boolean 操作符类的名称 如果此操作符类为 opcintype 的默认值则为真 opckeytype oid sys_type.oid 存储在索引中的数据的类型,如 果值为 0 表示与 opcintype 相 同 一个操作符类的 opcmethod 必须匹配包含它的操作符族的 opfmethod。而且,对于任何给定的 opcmethod 和 opcintype 组合,只有不超过一个 sys_opclass 行的 opcdefault 值为真。 3.1.41 sys_operator 目录 sys_operator 存储关于操作符的信息。详见 CREATE OPERATOR 和 用户定义的操作符。 表 3.1.42: sys_operator 列 名称 类型 引用 描述 oid oid 行标识符 oprname name 操作符的名称 oprnamespace oid sys_namespace.oid 操作符所属的名字空间的 OID oprowner oid sys_authid.oid 操作符的拥有者 oprkind char b = 中缀 (“并”), l = 前缀 ( “左”), r = 后缀 (“右”) oprcanmerge boolean 该操作符是否支持归并连接 oprcanhash boolean 该操作符是否支持哈希连接 见续表 198 第 3 章 静态数据词典视图 表 3.1.42 – 续表 名称 类型 引用 描述 oprleft oid sys_type.oid 左操作数类型 oprright oid sys_type.oid 右操作数类型 oprresult oid sys_type.oid 结果类型 oprcom oid sys_operator.oid 该操作符的交换子(如果存在) oprnegate oid sys_operator.oid 该操作符的否定(如果存在) oprcode regproc sys_proc.oid 实现该操作符的函数 oprrest regproc sys_proc.oid 该操作符的限制选择度估算函数 oprjoin regproc sys_proc.oid 该操作符的连接选择度估算函数 未用的列包含零值。例如,一个前缀操作符的 oprleft 为 0。 3.1.42 sys_opfamily 目录 sys_opfamily 定义了操作符族。每一个操作符族是操作符和相关支持例程的集合,支持例程用于实现一个 特定索引访问方法的语义。此外,按照访问方法指定的某种方式,一个族内的操作符都是“兼容的”。操作符族概念 允许在索引中使用跨数据类型操作符,并可以使用访问方法语义的知识推导出。 表 3.1.43: sys_opfamily 列 名称 类型 引用 描述 oid oid opfmethod oid opfname name opfnamespace oid sys_namespace.oid 操作符族所属的名字空间 opfowner oid sys_authid.oid 操作符族的拥有者 行标识符 sys_am.oid 操作符族适用的索引访问方法 操作符族的名字 定义操作符族的主要信息不在它的 sys_opfamily 行,而是在相关的sys_amop 、sys_amproc 和sys_opclass 行 中。 199 第 3 章 静态数据词典视图 3.1.43 sys_package 目录 sys_package 包的创建与函数的创建类似,都需要将相关的信息持久化,需要向系统表中插入一些必要的 信息,这些信息包括:包对象的信息、包中子对象的信息和依赖关系 表 3.1.44: sys_package 名称 类型 引用 描述 oid oid 对象所在系统表的 OID pkgname name 包名 pkgnamespace oid 模式 pkgowner oid 属主 pkgsecdef boolean 以创建者/访问者的身份执行存 储过程 pkgspecdata text 包规范数据拼接的字符串 pkgspecvars oid[] 包规范中变量的 OID 数组 pkgspectypes oid[] 包规范中类型的 OID 数组 pkgspecfuncs oid[] 解析后的包规范功能 pkgspecsrc text 包规范原字符串 pkgbodydata text 包体数据拼接的字符串 pkgbodyvars oid[] 包体中变量的 OID 数组 pkgbodytypes oid[] 包体中类型的 OID 数组 pkgbodyfuncs oid[] 解析后的包函数 pkgbodysrc text 包体原字符串 pkginitsrc text 初始化代码 pkgacl aclitem[] 访问控制列表 3.1.44 sys_partitioned_table 目录 sys_partitioned_table 存放有关表如何被分区的信息。子分区信息参见表sys_subpartition_table 。 200 第 3 章 静态数据词典视图 表 3.1.45: sys_partitioned_table 列 名称 类型 引用 描述 partrelid oid sys_class.oid 这个分区表的 sys_class 项的 OID partstrat 分区策略;h = 哈希分区表,l char = 列表分区表,r = 范围分区表 partnatts smallint partdefid oid 分区键中的列数 sys_class.oid 这个分区表的默认分区的 sys_class 项的 OID,如果这 个分区表没有默认分区则为零。 partattrs int2vector sys_attribute.attnum 这是一个长度为 partnatts 值 的数组,它指示哪些表列是分区 键的组成部分。例如,值 1 3 表 示第一个和第三个表列组成了分 区键。这个数组中的零表示对应 的分区键列是一个表达式而不是 简单的列引用。 partclass oid[] sys_opclass.oid 对于 分 区键 中 的 每一 个 列, 这 个域包含要使用的操作符类的 OID。 partcollation oid[] sys_opclass.oid 对于分区键中的每一个列,这个 域包含要用于分区的排序规则的 O ID,如果该列不是一种可排 序数据类型则为零。 partexprs sys_node_tree 非简单列引用的分区键列的表达 式树(以 nodeToString() 的 表 达 方 式)。 这 是 一 个 列 表, partattrs 中每一个零项都有一 个元素。如果所有分区键列都是 简单列引用,则这个域为空。 3.1.45 sys_pkgitem 目录 sys_pkgitem 主要用于引用包变量和类型编译时,对相关对象的合法性检查。 201 第 3 章 静态数据词典视图 表 3.1.46: sys_pkgitem 名称 类型 引用 描述 oid oid 对象所在系统表的 OID pvname name 包中对象的名称 pkgoid oid 包的 OID pvtypoid oid 包中对象的类型 pvtypmod integer 包中对象的类型模式 pvtypcollation oid 包中对象的类型排序规则 pvtype char 包 中 对 象 的 类 别 (变 量、 RECORD、游标、类型) pvconstant boolean 如 果 是 变 量, 那 么 指 出 该 对 象 是 否 为 常 量 (其 它 对 象 此 值 都 是 FALSE) pvnotnull boolean 该对象是否为 notnull 对象 pvparent oid 若该对象为包内对象的子对象,pvparent 为其父对象在当前表中的 oid ptidxtypoid oid 关联数组类型的索引类型 oid ptidxtypmod integer 关联数组类型的索引类型的模式 ptidxtypcollation oid 关联数组类型的索引类型的排序规 则 pvnargs integer 包中对象的参数个数,0 表示没有参 数 pvncols integer 包中游标的信息, -1 表示没有返回值 -2 表示返回 RECORD 类型 -3 表示这个游标没有定义语句 pvsrc text 包中对象的定义语句 pvargnames text[] 包中游标的参数名数组 pvargdefaults text[] 包中游标的参数默认值的数组 202 第 3 章 静态数据词典视图 3.1.46 sys_pltemplate 目录 sys_pltemplate 存储了过程语言的“模板”信息。一个语言的模板允许我们在一个特定数据库中以一个简 单的 CREATE LANGUAGE 命令创建语言,而不需要指定实现细节。 和 大 部 分 系 统 目 录 不 同,sys_pltemplate 是 在 集 簇 的 所 有 数 据 库 之 间 共 享 的: 在 一 个 集 簇 中 只 有 一 份 sys_pltemplate 拷贝,而不是每个数据库一份。这使得在每个需要的数据库中都可以访问该信息。 表 3.1.47: sys_pltemplate 列 名称 类型 描述 tmplname name 该模板适用的语言名字 tmpltrusted boolean 如果语言被认为是可信的则为真 tmpldbacreate boolean 如果语言可以被一个数据库拥有者创建则为真 tmplhandler text 调用处理函数的名字 tmplinline text 匿名阻塞处理函数的名字,如果没有则为空 tmplvalidator text 验证函数的名字,如果没有则为空 tmpllibrary text 实现语言的共享库的路径 tmplacl aclitem[] 模板的访问权限(并未真正使用) 目前任何命令都不能操纵过程语言模板。要改变内建信息,超级用户必须使用普通的 INSERT、DELETE 或 UPDATE 命令修改该表。 注意: 在 KingbaseES 的某个未来版本的发布中,sys_pltemplate 很有可能会被移除,而这些关于过程语言的知识 可能会保持在它们相应的扩展安装脚本中。 3.1.47 sys_policy 目录 sys_policy 存储着表的行级安全性策略。一个策略包括它适用于的命令种类(可能适用于所有命令)、它 适用于的角色、被作为安全屏障条件增加到包括该表的查询的表达式以及被作为 WITH CHECK 选项增加到尝试向表增 加新纪录的查询的表达式。 203 第 3 章 静态数据词典视图 表 3.1.48: sys_policy 列 名称 类型 引用 描述 oid oid 行标识符 polname name 策略的名称 polrelid oid polcmd char sys_class.oid 策略适用的表 策 略 适 用 的 命 令 类 型:r 表示 SELECT,a 表示 INSERT,w 表示 UPDATE,d 表示 DELETE,* 表示所 有命令类型 polpermissive boolean polroles oid[] polqual sys_node_tree 策略是宽容性的还是限制性的? sys_authid.oid 策略适用的角色 被作为安全屏障条件增加到使用该 表的查询的表达式树 polwithcheck 被作为 WITH CHECK 条件增加到 sys_node_tree 尝试向表增加行的查询的表达式树 注意: 存储在 sys_policy 中的策略只有在它们所适用的表的 sys_class.relrowsecurity 被设置时才其作用。 3.1.48 sys_privilege 表 sys_privilege 查询用户是否拥有 SYBACKUP 权限。更多信息请参考 备份恢复权限。 表 3.1.49: sys_privilege 列 名称 类型 引用 描述 userid oid sys_authid.oid 用户 OID sysbackup boolean 是否拥有 sysbackup 权限 3.1.49 sys_proc 目录 sys_proc 存放有关函数、过程、聚集函数以及窗口函数(共称为例程)的信息。更多信息请参考 CREATE FUNCTION 、CREATE PROCEDURE 和 函数声明与定义。 204 第 3 章 静态数据词典视图 表 3.1.50: sys_proc 列 名称 类型 引用 oid oid 行标识符 proname name 函数的名字 pronamespace oid sys_namespace.oid 描述 函数所属的名字空间的 OID proowner oid sys_authid.oid 函数的拥有者 prolang oid sys_language.oid 实现语言或该函数的调用 接口 procost 估 计 的 执 行 代 价 (以 real cpu_operator_cost 为单 位),如果 proretset 为 真,这是每行返回的代价 prorows 估计的结果行数量(如果 real proretset 为假,该值为 0) provariadic oid sys_type.oid 可变数组参数的元素的数 据类型,如果函数没有可 变参数则为 0 prosupport regproc sys_proc.oid Optional planner support function for this function prokind char f 表示普通函数,p 表示 过程,a 表示聚集函数, w 表示窗口函数,P 表示 PIPELINED 函数 prosecdef boolean 函数是一个安全性定义者 (即, 一 个 “setuid” 函 数) 见续表 205 第 3 章 静态数据词典视图 表 3.1.50 – 续表 名称 类型 proleakproof boolean 引用 描述 该函数没有副作用。除了 通过返回值,没有关于参 数的信息被传播。任何会 抛出基于其参数值的错误 信息的函数都不是泄露验 证的。 proisstrict boolean 当任意调用函数为空时, 函 数 是 否 会 返 回 空 值。 在那种情况下函数实际 上 根 本 不 会 被 调 用。 非 “strict”函数必须准备好 处理空值输入。 proretset boolean 函数是否返回一个集合 (即,指定数据类型的多 个值) provolatile char provolatile 说明函数是 仅仅只依赖于它的输入参 数,还是会被外部因素影 响。值 i 表示“不变的” 函数,它对于相同的输入 总 是 输 出 相 同 的 结 果。 值 s 表示“稳定的”函 数,它的结果(对于固定 输入)在一次扫描内不会 变化。值 v 表示“不稳 定的”函数,它的结果在 任何时候都可能变化(使 用 v 页表示函数具有副作 用,所以对它们的调用无 法得到优化) 见续表 206 第 3 章 静态数据词典视图 表 3.1.50 – 续表 名称 类型 proparallel char 引用 描述 proparallel 说明该函 数在并行模式下是否能安 全地运行。对于能在并行 模式下不受限制安全运行 的函数,这列是 s。对于 可以在并行模式下运行但 是只限于由并行分组的领 导者执行的函数,这列是 r。对于在并行模式中不安 全的函数,这列是 u ,这 种函数的存在会强制一个 顺序执行计划。 pronargs integer 输入参数的个数 pronargdefaults integer 具有默认值的参数个数 prorettype oid sys_type.oid 返回值的数据类型 proargtypes oid[] sys_type.oid 一个函数参数的数据类 型 的 数 组。 这 只 包 括 输 入 参 数 (含 INOUT 和 VARIADIC 参数),因此也 表现了函数的调用特征。 proallargtypes oid[] sys_type.oid 一个函数参数的数据类型 的 数 组。 这 包 括 所 有 参 数(含 OUT 和 INOUT 参 数)。但是,如果所有参 数都是 IN 参数,这个域 将为空。注意下标是从 1 开始,然而由于历史原因 proargtypes 的下标是从 0 开始。 见续表 207 第 3 章 静态数据词典视图 表 3.1.50 – 续表 名称 类型 proargmodes char[] 引用 描述 一个函数参数的模式的数 组。编码为:i 表示 IN 参数,o 表示 ‘ OUT‘参 数,b 数,v 表示 INOUT 参 表 示 VARIADIC 参数,t 表示 table 参 数。如果所有的参数都是 IN 参数,这个域为空。 注意这里的下标对应着 proallargtypes 而不是 proargtypes 中的位置。 proargnames text[] 一个函数参数的名字的 数 组。 没 有 名 字 的 参 数 在数组中设置为空字符 串。 如 果 没 有 一 个 参 数 有 名 字, 这 个 域 为 空。 注意这里的下标对应着 proallargtypes 而不是 proargtypes 中的位置。 proargdefaults sys_node_tree 默 认 值 的 表 达 式 树 (按 照 nodeToString() 的 表 现 方 式)。 这 是 一 个 pronargdefaults 元素的 列表,对应于最后 “N“个 input 参数(即最后 “N“个 proargtypes 位置)。如 果没有一个参数具有默认 值,这个域为空。 protrftypes oid[] 要在其上应用转换的数据 类型的 OID。 见续表 208 第 3 章 静态数据词典视图 表 3.1.50 – 续表 名称 类型 prosrc text 引用 描述 这个域告诉函数处理者如 何调用该函数。它可能是 针对解释型语言的真实源 码、一个符号链接、一个 文件名或任何其他东西, 这取决于实现语言/调用规 范。 probin 关于如何调用函数的附加 text 信息。其解释是与语言相 关的。 proconfig 函数对于运行时配置变量 text[] 的本地设置值 proacl 访问权限 aclitem[] 对于编译好的函数,包括内建的和动态载入的,prosrc 包含了函数的 C 语言名字(链接符号)。对于所有其他 已知的语言类型,prosrc 包含函数的源码文本。除了对于动态载入的 C 函数之外,probin 是不被使用的。对于动态 载入的 C 函数,它给定了包含该函数的共享库文件的名称。 3.1.50 sys_protect 表 sys_protect 存储被保护的对象信息,更多保护对象功能信息参考插件 kdb_protect 。 表 3.1.51: sys_protect 列 名称 类型 引用 描述 objid oid nspid oid sys_namespace.oid 被保护的对象命名空间的 oid dbid oid sys_database.oid 被保护的对象所在数据库的 oid 被保护的对象 oid 见续表 209 第 3 章 静态数据词典视图 表 3.1.51 – 续表 名称 类型 objkind char 引用 描述 被 保 护 的 对 象 类 型: ’d’ -- database(数据库) ’s’ -- schema(模 式) ’t’ -- table(表/分区表) ’v’ -view/ materialized view(视图/物化 视图) ’f’ --function/ procedure(函 数/存储过程) 3.1.51 sys_publication 目录 sys_publication 包含数据库中创建的所有 publication。 表 3.1.52: sys_publication 列 名称 类型 引用 oid oid 行标识符 pubname name publication 的名称 pubowner oid puballtables boolean sys_authid.oid 描述 publication 的拥有者 如果为真,这个 publication 自动包 括数据库中的所有表,包括未来将 会创建的任何表。 pubinsert boolean 如果为真,为 publication 中的表复 制 INSERT 操作。 pubupdate boolean 如果为真,为 publication 中的表复 制 UPDATE 操作。 pubdelete boolean 如果为真,为 publication 中的表复 制 DELETE 操作。 pubtruncate boolean 如果为真,为 publication 中的表复 制 TRUNCATE 操作。 210 第 3 章 静态数据词典视图 3.1.52 sys_publication_rel 目录 sys_publication_rel 包含数据库中关系和 publication 之间的映射。这是一种多对多映射。这些信息对用 户更加友好的视图请参考sys_publication_tables 。 表 3.1.53: sys_publication_rel 列 名称 类型 引用 描述 oid oid prpubid oid sys_publication.oid 对 publication 的引用 prrelid oid sys_class.oid 对关系的引用 行标识符 3.1.53 sys_pwdht_shadow 表 sys_pwdht_shadow 存储口令历史管理的用户信息,更多口令历史管理功能参见插件 passwordhistory 。 表 3.1.54: sys_pwdht_shadow 列 名称 类型 引用 描述 userid oid sys_authid.oid 用户 oid timestamp timestamp with time zone 用户密码创建时间 password text 用户密码 3.1.54 sys_query_mapping 目录 sys_query_mapping 存储用户创建的 Query Mapping 规则。 关于 Query Mapping 规则的详细说明请参见 Query Mapping 规则 表 3.1.55: sys_query_mapping 列 名称 类型 引用 描述 oid oid 行标识符 qmname name 规则名称 见续表 211 第 3 章 静态数据词典视图 表 3.1.55 – 续表 名称 类型 引用 描述 qmenable boolean 该规则是否被启用 qmfromsql text 用于匹配的 SQL 字符串 qmreplacedsql text 用于替换的 SQL 字符串 qmcompiledfromsql text 匹配 SQL 对应的查询树 qmcompiledreplacesql text 替换 SQL 对应的查询树 qmlevel smallint 规则的级别: 0 = TEXT 1 = SEMANTICS 3.1.55 sys_range 目录 sys_range 存储关于范围类型的信息。它是类型在sys_type 中项的补充。 表 3.1.56: sys_range 列 名称 类型 引用 描述 rngtypid oid sys_type.oid 范围类型的 OID rngsubtype oid sys_type.oid 该范围类型的元素类型(子 类型)的 OID rngcollation oid sys_collation.oid 用于范围比较的排序规则的 OID ,如果没有则为 0 rngsubopc oid sys_opclass.oid 用于范围比较的子类型的操 作符类的 OID rngcanonical regproc sys_proc.oid 将一个范围值转换为规范形 式的函数的 OID ,如果没有 则为 0 rngsubdiff regproc sys_proc.oid 以双精度返回两个元素值不 同的函数的 OID ,如果没有 则为 0 rngsubopc``(加上\ ``rngcollation,如果元素类型是可排序的)决定了被该范围类型所使用的排序顺序。 rngcanonical 用于离散类型的元素类型。rngsubdiff 是可选的,但是提供它可以提高范围类型上的 GiST 索引性 212 第 3 章 静态数据词典视图 能。 3.1.56 sys_recyclebin 目录 sys_recyclebin 在开启回收站功能,存储用户删除的表信息,用于删除表闪回使用。 关于闪回功能见插件 kdb_flashback 。 表 3.1.57: sys_recyclebin 名称 类型 引用 描述 classid oid 对象所在系统表的 OID reloid oid 对象 OID nspname name schema OID object_name name 在回收站中对象名 original_name name 对象删除之前的名称 type char 类型 droptime timestamp with time zone 删除时间 3.1.57 sys_replication_origin sys_replication_origin 目录包含所有已创建的复制源。 和大部分系统目录不同,sys_replication_origin 在一个集簇的所有数据库之间共享:每个集簇只有一份 sys_replication_origin 拷贝,而不是每个数据库一份。 表 3.1.58: sys_replication_origin 列 名称 类型 引用 描述 roident oid 一个集簇范围内唯一的复制源标识符。应该绝不会脱离系统。 roname text 外部的由用户定义的复制源名称。 3.1.58 sys_resauthid 表 sys_resauthid 可查询数据库用户和资源组的关联关系。 213 第 3 章 静态数据词典视图 表 3.1.59: sys_resauthid 列 名称 类型 引用 描述 roloid oid sys_authid.oid 用户 oid rolname name resgoid oid 用户名 sys_resgroup.oid 关联的资源组 oid 3.1.59 sys_resgroup 表 sys_resgroup 存储资源组信息。 表 3.1.60: sys_resgroup 列 名称 类型 引用 描述 oid oid 资源组 oid rsgname name 资源组名称 parent oid 父资源组 oid(未启用) rstype smallint 资源组类型(未启用) 3.1.60 sys_resgroupcapability 表 sys_resgroupcapability 存储资源组关联的相关值限制信息。 表 3.1.61: sys_resgroup 列 名称 类型 引用 描述 resgroupid oid sys_resgroup.oid 资源组 oid reslimittype smallint 资源限制类型: • 3 代表 cpu_cfs_quota_us , 含义是绝对 CPU 使用率; • 4 代表 cpu_shares ,含义是相 对 CPU 使用率; 见续表 214 第 3 章 静态数据词典视图 表 3.1.61 – 续表 名称 类型 value text 引用 描述 资源限制类型对应的限制值 3.1.61 sys_rewrite 目录 sys_rewrite 存储对于表和视图的重写规则。 表 3.1.62: sys_rewrite 列 名称 类型 引用 oid oid 行标识符 rulename name 规则名称 ev_class oid ev_type char sys_class.oid 描述 使用该规则的表 使用该规则的事件类型:1 = ‘ SELECT‘,2 = ‘ UPDATE‘,3 = ‘ INSERT‘,4 = DELETE ev_enabled char 控 制 在 哪 种 sion_replication_role ses模式中触 发该规则。O = 规则在“origin”和 “lo cal”模式触发,D = 规则被禁 用,R = 规则在“repl ica”模式触 发,A = 规则总是被触发。 is_instead boolean 为真表示是一个 INSTEAD 规则 ev_qual sys_node_tree 规 则 条 件 的 表 达 式 树 (按 照 nodeToString() 的表现形式) ev_action sys_node_tree 规 则 动 作 的 查 询 树 (按 照 nodeToString() 的表现形式) 注意: 如果一个表在这个目录中有任何规则,sys_class.relhasrules 必须为真。 215 第 3 章 静态数据词典视图 3.1.62 sys_role_disable 表 sys_role_disable 可查询角色 role 的禁用信息。角色的禁用更多信息参考插件 roledisable 。 表 3.1.63: sys_role_disable 列 名称 类型 引用 描述 oid oid sys_authid.oid 角色 oid disabletime timestamp with time 角色被禁用的时间 zone 3.1.63 sys_seclabel 目录 sys_seclabel 存储数据库对象上的安全标签。安全标签可以通过 SECURITY LABEL 命令操纵。简单的 查看安全标签方法请见sys_seclabels 。 同时请见sys_shseclabel ,它对集簇共享的数据库对象的安全标签执行相似的功能。 表 3.1.64: sys_seclabel 列 名称 类型 引用 描述 objoid oid any OID column 该安全标签依附的对象的 OID classoid oid sys_class.oid 该对象所出现的系统目录的 OID objsubid integer 对 于 一 个 在 表 列 上 的 安 全 标 签, 这 将 是列号(objoid 和 classoid 指表本 身)。对于所有其他对象类型,本列为 0。 provider text 与该标签相关的标签提供者。 label text 应用于该对象的安全标签。 3.1.64 sys_sequence 目录 sys_sequence 包含有关序列的信息。一些序列的信息(例如名称和方案)放在 sys_class 中。 216 第 3 章 静态数据词典视图 表 3.1.65: sys_sequence 列 名称 类型 引用 描述 seqrelid oid sys_class.oid 这个序列的 sys_class 项的 OID seqtypid oid sys_type.oid 序列的数据类型 seqstart bigint 序列的起始值 seqincrement bigint 序列的增量值 seqmax bigint 序列的最大值 seqmin bigint 序列的最小值 seqcache bigint 序列的缓冲尺寸 seqcycle boolean 序列是否循环 3.1.65 sys_shdepend 目录 sys_shdepend 记录数据库对象和共享对象之间的依赖关系,例如角色。这些信息使得 KingbaseES 可以确 保对象在被删除时没有被其他对象引用。 另请参阅sys_depend ,它对单个数据库中对象之间的依赖提供了相似的功能。 与大部分其他系统目录不同,sys_shdepend 在整个集簇的所有数据库之间共享:在每一个集簇中只有一个 sys_shdepend 的拷贝,而不是每个数据库一份。 表 3.1.66: sys_shdepend 列 名称 类型 引用 描述 dbid oid sys_database.oid 依赖者对象所在的数据库 OID,如果是 一个共享对象则值为 0 classid oid sys_class.oid 依赖者对象所在的系统目录的 OID objid oid 任意 OID 列 依赖者对象的 OID objsubid integer 对于一个表列,这将是列号(objid 和 classid 指向表本身)。对于所有其他对 象类型,该列值为 0。 refclassid oid sys_class.oid 被引用对象所在的系统目录的 OID(必 须是一个共享的目录) 见续表 217 第 3 章 静态数据词典视图 表 3.1.66 – 续表 名称 类型 引用 描述 refobjid oid 任意 OID 列 被引用对象的 OID deptype char 定义该依赖关系的特定语义的代码,见 表后的说明 在所有情况下,一个 sys_shdepend 项表明被引用对象不能在没有删除其依赖对象的情况下被删除。但是,其中 也有多种依赖类型,由 deptype 标识: SHARED_DEPENDENCY_OWNER (o) 被引用对象(必须是一个角色)是依赖对象的拥有者。 SHARED_DEPENDENCY_ACL (a) 被 引 用 对 象 (必 须 是 一 个 角 色) 在 依 赖 对 象 的 ACL(访 问 控 制 列 表, 即 权 限 列 表) 中 被 提 到。(不 会 为 对 象 的 拥 有 者 创 建 一 个 SHARED_DEPENDENCY_ACL 项, 因 为 拥 有 者 将 会 有 一 个 SHARED_DEPENDENCY_OWNER 项。) SHARED_DEPENDENCY_POLICY (r) 作为一个依赖策略对象的目标被引用的对象(必须是一个角色)。 SHARED_DEPENDENCY_PIN (p) 没有依赖对象,这种类型的项是一个信号,用来指示系统本身依赖于被引用对象,并且 因此该对象必须永远不能被删除。这种类型的项只能被 initdb 创建。这种项中关于依赖对象的列值都为 0。 未来可能会需要其他的依赖类型。特别要注意的是在当前定义中只支持角色作为被引用对象。 3.1.66 sys_shdescription 目录 sys_shdescription 存储共享数据库对象的可选描述(注释)。描述可以通过 COMMENT 命令操作,并 且可以使用 ksql 的\d 命令来查看。 另请参阅sys_description ,它对单个数据库中对象之间的依赖提供了相似的功能。 与大部分其他系统目录不同,sys_shdescription 在整个集簇的所有数据库之间共享:在每一个集簇中只有一个 sys_shdescription 的拷贝,而不是每个数据库一份。 表 3.1.67: sys_shdescription 列 名称 类型 引用 描述 objoid oid 任意 OID 列 该描述所属的对象的 OID classoid oid sys_class.oid 该对象所在系统目录的 OID description text 作为该对象描述的任意文本 218 第 3 章 静态数据词典视图 3.1.67 sys_shseclabel 目录 sys_shseclabel 存储共享数据库对象上的安全标签。安全标签可以通过 SECURITY LABEL 命令操纵。 更简单的查看安全标签的方式请见sys_seclabels 。 另请参阅sys_seclabel ,它对单个数据库中对象的安全标签提供了相似的功能。 与大部分其他系统目录不同,sys_shseclabel 在整个集簇的所有数据库之间共享:在每一个集簇中只有一个 sys_shseclabel 的拷贝,而不是每个数据库一份。 表 3.1.68: sys_shseclabel 列 名称 类型 引用 描述 objoid oid 任意 OID 列 该安全标签所属对象的 OID classoid oid sys_class.oid 对象所属系统目录的 OID provider text 与此标签关联的标签提供者 label text 应用到该对象的安全标签 3.1.68 sys_statistic 目录 sys_statistic 存储有关数据库内容的统计数据。其中的项由 ANALYZE 创建,查询规划器会使用这些数 据来进行查询规划。注意所有的统计数据天然就是近似的,即使它刚刚被更新。 通常对于数据表中一个已经被 ANALYZE 过的列,在本目录中会存在一个 stainherit = false 的项。如果该 列所在的表具有后代(即有其他表继承该表),对于该列还会创建第二个 stainherit = true 的项。stainherit = true 的项表示列在整个继承树上的统计数据,即通过 SELECT column FROM “table“* 看到的数据的统计,而 stainherit = false 的项表示对 SELECT column FROM ONLY “table“的结果的统计。 sys_statistic 也存储关于索引表达式值的统计数据,就好像它们是真正的数据列,但在这种情况中 starelid 指索引。对一个普通非表达式索引列不会创建项,因为它将是底层表列的项的冗余。当前,索引表达式的项都具有 stainherit = false。 因为不同类型的统计信息适用于不同类型的数据,sys_statistic``被设计成不太在意自己存储的是什么类型的 统计。只有极为常用的统计信息(比如 NULL 的含量)才在\ ``sys_statistic 里给予专用的字段。其它所有东西 都存储在“槽位”中,而槽位是一组相关的列,它们的内容用槽位中的一个列里的代码表示。更详细的信息请参阅 src/include/catalog/sys_statistic.h。 sys_statistic 不应该是公共可读的,因为即使是一个表内容的统计性信息也可能被认为是敏感的(例子:一个 薪水列的最大和最小值可能是非常有趣的)。sys_stats 是 sys_statistic 上的一个公共可读的视图,它只会显示出 当前用户可读的表的信息。 sys_statistic 不应该是公众可读的,因为即使是关于表内容的统计信息也可能被认为是敏感的。(示例:工资 列的最小值和最大值可能非常有趣。)sys_stats 是在 sys_statistic 之上的一个公共可读的视图,它只公开当前用 户可读的表信息。 219 第 3 章 静态数据词典视图 相似地,sys_statistic_ext_data 不应该是公众可读的,因为内容可能被认为是敏感的。(示例:列中最 常见的值组合可能非常有趣。)sys_stats_ext 是在 “sys_statistic_ext_data“之上的一个公共可读的视图(连接 sys_statistic_ext 之后),它只公开关于当前用户可读的表和列的信息。 表 3.1.69: sys_statistic 列 名称 类型 引用 描述 starelid oid sys_class.oid 对应表的 oid staattnum smallint sys_attribute.attnum 对应列的编号 stainherit boolean 是否为继承表 stanullfrac real NULL 值 比 率, 即 该 列 中 NULL 值所占的比率 stawidth 该列的平均宽度,以字节计 integer 算 stadistinct 表示该列消除重复后的数据 real 的个数或者所占比率,它有 三种类型的取值:1)= 0: 表示未知或者未计算 2)> 0:表示去重后的个数 3)< 0:它的绝对值表示去重之后 的个数占总个数的比率 stakind[i] smallint staop[i] oid 统计信息的类型值 sys_operator.oid 统计信息中涉及的操作符的 oid stacoll[i] oid sys_collation.oid 对于可排序的列的统计信息 的排序编码的 oid stanumbers[i] real[] 存的是 MCV 最频值的频率 值数组,或者相关系数值 stavaluesN anyarray 存的是 MCV 最频值的字面 值数组,跟 MCV 频率值一 一对应,或者存的是直方图 的桶的值的数组 220 第 3 章 静态数据词典视图 3.1.69 sys_statistic_ext 目录 sys_statistic_ext 保持有扩展的规划器统计信息的定义。这个目录中的每一行对应于一个用 CREATE STATISTICS 创建的统计信息对象。 表 3.1.70: sys_statistic_ext 列 名称 类型 oid oid stxrelid oid stxname name stxnamespace oid 引用 描述 统计对象的 oid sys_class.oid 统计对象对应的表的 oid 统计对象的名称 sys_namespace.oid 统计信息对象所在的名字空间的 oid stxowner oid sys_authid.oid 创建该统计对象的用户的 oid stxkeys int2vector sys_attribute.attnum 该统计信息所涉及的列的编号数 组 stxkind char[] 该统计信息对应的多列统计类型 的 char 数组,共有三种,每一 个字符对应一种类型: • d 代 表 STATS_EXT_NDISTINCT, 和单列中的 stadistinct 类 似 stadistinct 中记录的是单列中去 掉 NULL 值和消除重复值之后 的数据量或者数据比例 • f 代 表 STATS_EXT_DEPENDENCIES, 计算各个列之间的函数依 赖度 再通过函数依赖度计算各个列之 间的依赖关系,从而得到统计信 息 • m 代 表 STATS_EXT_MCV, 多 列的 MCV 最频值 221 第 3 章 静态数据词典视图 创 建 统 计 对 象 时 填 充 stxkind 字 段, 指 示 需 要 的 统 计 类 型。 统 计 信 息 (通 过 ANALYZE 计 算) 存储 在sys_statistic_ext_data 目录中。 3.1.70 sys_statistic_ext_data 目录 sys_statistic_ext_data 持有在 sys_statistic_ext 中定义的扩展计划统计数据。这个目录中的每一行 都对应一个统计对象,该对象是用 CREATE STATISTICS 创建的。 sys_statistic_ext 表记录元信息,而sys_statistic_ext_data 表记录的是具体的多列统计信息数据。 表 3.1.71: sys_statistic_ext_data 列 名称 类型 引用 描述 stxoid oid sys_statistic_ext.oid 对应sys_statistic_ext 表 的 oid,即多列统计对象 的 oid stxdndistinct sys_ndistinct STATS_EXT_NDISTINCT 类型的统计信息数据,它 使用了一个类似数组的表 达形式,其每一个元素的 格式为:{” 列号 1,列号 2”: 去掉重复值之后的数 量(包含 NULL)} 见续表 222 第 3 章 静态数据词典视图 表 3.1.71 – 续表 名称 类型 stxddependencies sys_dependencies 引用 描述 STATS_EXT_DEPENDENCIES 类型表示的是多列之间的 函 数 依 赖 度, 所 谓 函 数 依 赖 (functional depen- dency),是对一个表上的 两个列(属性)进行描述 的一种方法:如果对于 X 属性中的每一个值在 Y 属 性上有且只有一个和它一 一对应的值,那么 Y 对 X 满足函数依赖关系,记 做 X->Y;主键的特性满 足:” 一一对应” 和” 有 且只有。实际上,很多属 性列之间并不严格满足函 数依赖关系,因此对于多 列统计信息,KES 采取的 方式是建立一种” SOFT” 的函数依赖关系,记录的 是一个“函数依赖度”, 即两个属性之间满足函数 依赖的值占总体数量的比 例。使用了一个类似数组 的表达形式,其每一个元 素的格式为:{” 列号 1 => 列号 2” : 函数依赖比 例} 见续表 223 第 3 章 静态数据词典视图 表 3.1.71 – 续表 名称 类型 引用 stxdmcv sys_mcv_list 描述 STATS_EXT_MCV 类 型表示多列的 MCV 最 频值,它保存的是序列化 后的多列 MCV 数据, 序列化前对应的数据结构 为 MCVList,多列的多个 MCV 字面值 (value) 和出 现比例 (frequency) 保存 在 MCVList->items[ ] 数 组元素里,而该数组的元 素类型为 MCVItemt 3.1.71 sys_subpartition_table 表 sys_subpartition_table 存储子分区表信息。分区表信息可参考表sys_partitioned_table 。 表 3.1.72: sys_subpartition_table 列 名称 类型 引用 描述 partrelid oid sys_class.oid 分区表 oid partstrat char 子分区策略:h = 哈希分区,l = 列 表分区,r = 范围分区 partnatts smallint partdefid oid 子分区键中的列个数 sys_class.oid 这 个 分 区 表 的 默 认 分 区 的 sys_class 项的 OID, 如 果 这 个分区表没有默认分区则为 0。 partattrs int2vector sys_attribute.attnum 子分区键的列编号。如果值为 0 代 表分区键是一个表达式。 partclass oid[] sys_opclass.oid 对于子分区键中的每一个列,这个 域包含要使用的操作符类的 OID。 见续表 224 第 3 章 静态数据词典视图 表 3.1.72 – 续表 名称 类型 引用 描述 partcollation oid[] sys_opclass.oid 对于子分区键中的每一个列,这个 域包含要用于分区的排序规则的 OID,如果该列不是一种可排序数 据类型则为 0。 partexprs 非简单列引用的子分区键列的表达 sys_node_tree 式树(以 nodeToString() 的表达 方式)。这是一个列表,partattrs 中每一个零项都有一个元素。如果 所有子分区键列都是简单列引用, 则这个域为空。 partspec 分区说明列表 sys_node_tree 3.1.72 sys_subscription 目录 sys_subscription 包含所有现有的逻辑复制订阅。 和 大 部 分 系 统 目 录 不 同,sys_subscription 在 集 簇 的 所 有 数 据 库 之 间 共 享: 每 个 集 簇 只 有 一 份 sys_subscription 拷贝,而不是每个数据库一份。 对列 subconninfo 的访问被从普通用户那里收回,因为该列可能含有明文口令。 表 3.1.73: sys_subscription 列 名称 类型 oid oid subdbid oid subname name subowner oid subenabled boolean 引用 描述 行标识符 sys_database.oid 订阅所在的数据库的 OID 订阅的名称 sys_authid.oid 订阅的拥有者 如 果 为 真, 订 阅 被 启 用 并 且 应 该 被 复 制。 subsynccommit text 包含订阅工作者的 synchronous_commit 设置的值。 见续表 225 第 3 章 静态数据词典视图 表 3.1.73 – 续表 名称 类型 引用 描述 subconninfo text 到上游数据库的连接字符串 subslotname name 上游数据库中的复制槽的名称。也被用 于本地复制源名称。 subpublications 被订阅的 public ation 名称的数组。这 text[] 些引用的是发布者服务器上的 publication。 3.1.73 sys_subscription_rel 目录 sys_subscription_rel 包含每个订阅中每个被复制关系的状态。这是一种多对多映射。 这个目录仅包含运行 CREATE SUBSCRIPTION 或 ALTER SUBSCRIPTION ... REFRESH PUBLICATION 以后对订阅 已知的表。 表 3.1.74: sys_subscription_rel 列 名称 类型 引用 描述 srsubid oid sys_subscription.oid 对订阅的引用 srrelid oid sys_class.oid 对关系的引用 srsubstate char 状态代码:i = 初始化,d = 数据正 在被拷贝,s = 已同步,r = 准备好 (普通复制) srsublsn sys_lsn s 和 r 状态的结束 LSN。 3.1.74 sys_synonym 目录 sys_synonym 存储了有关同义词的信息。 226 第 3 章 静态数据词典视图 表 3.1.75: sys_synonym 列 名称 类型 引用 描述 oid oid 行标识符 synname name 同义词名称 synnamespace oid sys_namespace.oid 同义词所在模式 oid synowner oid sys_authid.oid 同义词拥有者的 oid refobjnspname name 同义词引用对象所在模式的名称 refobjname name 同义词引用对象的名称 dblinkschema text 同义词关联的 dblink 所在模式的名称 dblinkname text 同义词关联的 dblink 名称 3.1.75 sys_sysaudit_ids_setting 表 sys_sysaudit_ids_setting 存储入侵检测审计信息。 表 3.1.76: sys_sysaudit_ids_setting 列 名称 类型 引用 描述 ruleName name ids 规则名 actionName name 审计的操作名 userOid oid sys_authid.oid 用户 oid schOid oid sys_namespace.oid 对象模式 oid objOid oid sys_class.oid 对象 oid whenever name 检查审计的时机 interval integer 触发检查的最长时间间隔 times integer 触发检查次数的阈值 userName name 审计用户名 schName name 审计对象模式名 见续表 227 第 3 章 静态数据词典视图 表 3.1.76 – 续表 名称 类型 引用 描述 objName name 审计对象名 IP text 触发审计的客户端 ip start_end_time text 触发检查的时间区间 3.1.76 sys_sysaudit_setting 表 sys_sysaudit_setting 存储审计策略信息。 表 3.1.77: sys_sysaudit_setting 列 名称 类型 引用 描述 oid oid 审计规则 oid audit_target smallint 审计目标 audit_type integer 审计类型 audit_user oid sys_authid.oid 审计用户 audit_dboid oid sys_database.oid 审计指定数据库 id audit_schemaoid oid sys_namespace.oid 审计指定对象模式 id audit_objoid oid sys_class.oid 审计指定对象 id audit_objtype integer audit_cid oid audit_dbname name 审计指定数据库名 audit_shename name 审计指定对象模式名 audit_objname name 审计对象名 审计对象类型 sys_authid.oid 审计规则创建用户 oid 3.1.77 sys_sysprivilege 表 sys_sysprivilege 可查询出所有拥有系统 ANY 权限的用户信息。 228 第 3 章 静态数据词典视图 表 3.1.78: sys_sysprivilege 列 名字 类型 引用 描述 grantee oid sys_authid.oid 接受授权的用户或角色的 OID。 privilege integer ANY 权限 ID 号 admin_option boolean 指示授予是否与 ADMIN OPTION 一起使用 3.1.78 sys_tablespace 目录 sys_tablespace 存储关于可用表空间的信息。表可以被放置在特定表空间中以实现磁盘布局的管理。 与大部分其他系统目录不同,sys_tablespace 在整个集簇的所有数据库之间共享:在每一个集簇中只有一个 sys_tablespace 的拷贝,而不是每个数据库一份。 表 3.1.79: sys_tablespace 列 名称 类型 引用 描述 oid oid 行标识符 spcname name 表空间名 spcowner oid 表空间的拥有者,通常是创建它的 sys_authid.oid 用户 spcacl aclitem[] 访问权限 spcoptions text[] 表 空 间 级 别 的 选 项, 形 如 “keyword=value”的字符串 3.1.79 sys_transform 目录 sys_transform 存储有关转换的信息,转换是一种让数据类型适应过程语言的机制。详见 CREATE TRANSFORM 。 表 3.1.80: sys_transform 列 名称 类型 oid oid 引用 描述 行标识符 见续表 229 第 3 章 静态数据词典视图 表 3.1.80 – 续表 名称 类型 引用 描述 trftype oid sys_type.oid 这个转换所针对的数据类型的 OID trflang oid sys_language.oid 这个转换所针对的语言的 OID trffromsql regproc sys_proc.oid 一个函数的 OID,该函数用来将数据类 型转换为过程语言的输入(例如函数参 数)。如果不支持这种操作,这里存储 零。 trftosql regproc sys_proc.oid 一个函数的 OID,该函数被用来转换过 程语言的输出(例如返回值)为该数据 类型。如果不支持这种操作,这里存储 零。 3.1.80 sys_trigger 目录 sys_trigger 存储表和视图上的触发器。详见 CREATE TRIGGER 。 表 3.1.81: sys_trigger 列 名称 类型 oid oid tgrelid oid tgname name 引用 描述 行标识符 sys_class.oid 触发器所在的表 触发器名(在同一个表的触发 器中必须唯一) sys_proc.oid 要被触发器调用的函数 tgfoid oid tgtype smallint 触发器触发条件的位掩码 tgenabled char 控 制 触 发 器 在 ses- sion_replication_role 模 式中的触发。O = 触发器在 “origin” 和 “local” 模 式 触 发,D = 触发器被禁用,R = 触 发 器 在 “replica” 模 式 触 发,A = 触发器总是触发。 见续表 230 第 3 章 静态数据词典视图 表 3.1.81 – 续表 名称 类型 tgisinternal boolean 引用 描述 为真表示触发器是内部生 成 的 (通 常 是 为 了 强 制 由 tgconstraint 指定的约束) tgconstrrelid oid sys_class.oid 被一个引用完整性约束引用的 表 tgconstrindid oid sys_class.oid 支持一个唯一、主键、引用完 整性约束或者排除约束的索引 tgconstraint oid sys_constraint.oid 可能存在的与触发器相关的 sys_constraint 项 tgdeferrable boolean 如果约束触发器可推迟则为真 tginitdeferred boolean 如果约束触发器初始可推迟则 为真 tgnargs 传递给触发器函数的参数字符 smallint 串个数 tgattr smallintvector sys_attribute.attnum 如果触发器是列限定的,这里 存放列号;否则这是一个空数 组 tgargs bytea 传递给触发器的参数字符串, 每一个都以 NULL 结尾 tgqual sys_node_tree 触发器 WHEN 条件的表达式树 (以 nodeToString() 的表现 形式),如果没有则为空 tgoldtable name OLD TABLE 的 REFERENCING 子句名称,如果没有则为空 tgnewtable name NEW TABLE 的 REFERENCING 子句名称,如果没有则为空 当前,列限定触发器只被 UPDATE 事件支持,因此 tgattr 只用于这种事件类型。tgtype 页可以包含用于其他 事件类型的位,但其他事件类型是表范围的触发器且会忽略 tgattr。 注意: 当 tgconstraint 非零时,tgconstrrelid、tgconstrindid、tgdeferrable 和 tginitdeferred 与被引用 的 sys_constraint 项有很大的冗余。但是,存在将一个不可延迟触发器关联到一个可延迟约束的可能性:外键约束 231 第 3 章 静态数据词典视图 可以有一些可延迟和一些不可延迟触发器。 注意: 如果一个关系在本目录中拥有任何触发器,其 sys_class.relhastriggers 必须为真。 3.1.81 sys_ts_config sys_ts_config 目录包含表示文本搜索配置的选项。一个配置指定了一个特定的文本搜索分析器和一个用于分析 器输出记号的字典列表。分析器由 sys_ts_config 项展现,而记号到字典的映射则由sys_ts_config_map 中的辅助 项定义。 KingbaseES 的文本搜索特性在 文本搜索类型中有更详尽的描述。 表 3.1.82: sys_ts_config 列 名称 类型 引用 描述 oid oid 行标识符 cfgname name 文本搜索配置名 cfgnamespace oid sys_namespace.oid 包含该配置的名字空间的 OID cfgowner oid sys_authid.oid 配置的拥有者 cfgparser oid sys_ts_parser.oid 该配置的文本搜索分析器的 OID 3.1.82 sys_ts_config_map sys_ts_config_map 目录包含的项展示了对于每一个文本搜索配置的每一种输出记号类型,有哪些文本搜索字典 可供查询以及以何种顺序。 KingbaseES 的文本搜索特性在 文本搜索类型中有更详尽的描述。 表 3.1.83: sys_ts_config_map 列 名称 类型 引用 描述 mapcfg oid sys_ts_config.oid 拥 有 该 映 射 项 的 sys_ts_config 项的 OID 见续表 232 第 3 章 静态数据词典视图 表 3.1.83 – 续表 名称 类型 maptokentype integer 引用 描述 一种由配置的分析器送出的 记号类型 mapseqno 查询该项的顺序(mapseqno integer 值小的优先) mapdict oid sys_ts_dict.oid 查询的文本搜索字典的 OID 3.1.83 sys_ts_dict sys_ts_dict 目录包含定义文本搜索字典的项。一个字典依赖于一个文本搜索模板,它指定了所有需要的函数 实现,字典本身则为模板支持的用户可设置参数提供值。这种分工允许无权限的用户创建字典。参数由一个文本串 dictinitoption 定义,其格式和意义随着模板而变化。 KingbaseES 的文本搜索特性在 文本搜索类型中有更详尽的描述。 表 3.1.84: sys_ts_dict 列 名称 类型 引用 描述 oid oid 行标识符 dictname name 文本搜索字典名 dictnamespace oid sys_namespace.oid 包含该字典的名字空间 OID dictowner oid sys_authid.oid 字典的拥有者 dicttemplate oid sys_ts_template.oid 该字典的文本搜索模板的 OID dictinitoption text 模板的初始化选项串 3.1.84 sys_ts_parser sys_ts_parser 目录包含定义文本搜索分析器的项。一个分析器负责将输入文本分割成词位并为每一个词位分配 一个记号类型。由于一个分析器必须用 C 语言级别的函数实现,创建新分析器的工作只限于数据库的超级用户。 KingbaseES 的文本搜索特性在 文本搜索类型中有更详尽的描述。 233 第 3 章 静态数据词典视图 表 3.1.85: sys_ts_parser 列 名称 类型 引用 描述 oid oid 行标识符 prsname name 文本搜索分析器的名字 prsnamespace oid sys_namespace.oid 包含此分析器的名字空间的 OID prsstart regproc sys_proc.oid 分析器启动函数的 OID prstoken regproc sys_proc.oid 分析器的下一记号函数的 OID prsend regproc sys_proc.oid 分析器的关闭函数的 OID prsheadline regproc sys_proc.oid 分析器的大标题函数的 OID prslextype regproc sys_proc.oid 分析器的词汇类型函数的 OID 3.1.85 sys_ts_template sys_ts_template 目录包含定义文本搜索模板的项。一个模板是一类文本搜索字典的实现骨架。由于一个模板必 须用 C 语言级别的函数实现,新模板的创建只限于数据库超级用户。 KingbaseES 的文本搜索特性在 文本搜索类型中有更详尽的描述。 表 3.1.86: sys_ts_template 列 名称 类型 引用 描述 oid oid 行标识符 tmplname name 文本搜索模板的名字 tmplnamespace oid sys_namespace.oid 包含此模板的名字空间的 OID tmplinit regproc sys_proc.oid 模板的初始化函数的 OID tmpllexize regproc sys_proc.oid 模板的词汇化函数的 OID 3.1.86 sys_type 目录 sys_type 存储有关数据类型的信息。基类和枚举类型(标度类型)使用 CREATE TYPE 创建,而域使用 CREATE DOMAIN 创建。数据库中的每一个表都会有一个自动创建的组合类型,用于表示表的行结构。也可以使用 CREATE TYPE AS 创建组合类型。 234 第 3 章 静态数据词典视图 表 3.1.87: sys_type 列 名称 类型 引用 oid oid 行标识符 typname name 数据类型的名字 typnamespace oid sys_namespace.oid 描述 包含此类型的名字空间的 OID typowner oid typlen smallint sys_authid.oid 类型的拥有者 对于一个固定尺寸的类型, typlen 是该类型内部表示 的字节数。对于一个变长类 型,typlen 为负值。- 1 表示 一个“varlena”类型(具有 长度字),-2 表示一个以空 值结尾的 C 字符串。 typbyval boolean typbyval 判断内部例程传递 这个类型的数值时是通过传 值还是传引用。如果 typlen 不是 1、2 或 4(或者在 Da tum 为 8 字节的机 器上为 8),因此 typbyval 最好是假。变长类型总是传 引用。注意即使长度允许传 值,typbyval 也可以为假。 typtype char typtype 可以是:b 表示一个 基类,c 表示一个组合类型 (例 如 一 个 表 的 行 类 型), d 表示一个域,e 表示一个 枚举类型,p 表示一个伪类 型,或 r 表示一个范围类 型。另请参阅 typrelid 和 typbasetype. typcategory char typcategory 是一种任意的 数据类型分类,它被分析器 用来决定哪种隐式转换“更 好”。参见表 1-64 见续表 235 第 3 章 静态数据词典视图 表 3.1.87 – 续表 名称 类型 typispreferred boolean 引用 描述 如 果 此 类 型 在 它 的 typcategory 中是一个 更好的转换目标,此列为真 typisdefined 如果此类型已被定义则为 boolean 真,如果此类型只是一个表 示还未定义类型的占位符则 为假。当 typisdefined 为 假,除了类型名字、名字空 间和 OID 之外什么都不能被 依赖。 typdelim 在分析数组输入时,分隔两 char 个此类型值的字符。注意该 分隔符是与数组元素数据类 型相关联的,而不是和数组 的数据类型关联。 typrelid oid sys_class.oid 如果这是一个复合类型(见 typtype),那么这个列指向 sys_class 中定义对应表的 项(对于自由存在的复合类 型,sys_class 项并不表示 一个表,但不管怎样该类型 的 sys_attribute 项需要链 接到它)。对非复合类型此 列为零。 见续表 236 第 3 章 静态数据词典视图 表 3.1.87 – 续表 名称 类型 引用 描述 typelem oid sys_type.oid 如果 typelem 不为 0 , 则它标识 sys_type 里面的 另外一行。当前类型可以被 加上下标得到一个值为类型 typelem 的数组来描述。一 个“真的”数组类型是变长 的(typlen = -1),但是一 些定长的(typlen > 0)类 型 也 拥 有 非 零 的 typelem, name 和 point。如果一个定 长类型拥有一个 ‘ typelem‘, 则它的内部形式必须是某个 ‘ typelem‘数据类型的值,不 能有其它数据。变长数组类 型有一个由该数组子例程定 义的头。 typarray oid sys_type.oid 如果 typarray 不是 0,则 它标识 sys_type 中的另一 行,这一行是一个将此类型 作为元素的“真的”数组类 型 typinput regproc sys_proc.oid 输入转换函数(文本格式) typoutput regproc sys_proc.oid 输出转换函数(文本格式) typreceive regproc sys_proc.oid 输 入 转 换 函 数 (二 进 制 格 式),如果没有则为 0 typsend regproc sys_proc.oid 输 出 转 换 函 数 (二 进 制 格 式),如果没有则为 0 typmodin regproc sys_proc.oid 类型修改器输入函数,如果 类型没有提供修改器则为 0 typmodout regproc sys_proc.oid 类型修改器输出函数,如果 类型没有提供修改器则为 0 typanalyze regproc sys_proc.oid 自定义 ANALYZE 函数,0 表 示使用标准函数 见续表 237 第 3 章 静态数据词典视图 表 3.1.87 – 续表 名称 类型 typalign char 引用 描述 typalign 是当存储此类型值 时要求的对齐性质。它应用 于磁盘存储以及该值在 King baseES 内部的大多数表现 形式。如果数值是连续存放 的,比如在磁盘上的一个完 整行,在这种类型的数据前 会插入填充,这样它就可以 按照指定边界存储。对齐引 用是该序列中第一个数据的 开头。对齐引用是序列中第 一个数据的开始。可能的值 有:.. container:: item- izedlist - c = char 对齐,即 不需要对齐。- s = ‘ short‘对 齐(在大部分机器上为 2 字 节)。- i = int 对齐(在 大部分机器上为 4 字节)。 - d = double 对齐(在很多 机器上为 8 字节,但绝不是 全部)。.. note:: 对于系统 表中使用的类型,很关键的 是,sys_type 中定义的尺寸 和对齐方式要和编译器在表 示表行的结构中布局列的方 式保持一致。 见续表 238 第 3 章 静态数据词典视图 表 3.1.87 – 续表 名称 类型 typstorage char 引用 描述 如果一个变长类型(typlen = -1) 可 被 T OAST, typstorage 说明这种类型 的 列 应 采 取 的 默 认 策 略。 可能的值是:.. container:: itemizedlist p: 值 必 须 - 平 面 存 储。- e: 值 可 以 被 存 储 在 一 个 “二 级” 关 系 (如 果 有, 见 sys_class. reltoastrelid)。- m:值 可以被压缩线内存储。- x: 值可以被压缩线内存储或 存储在“二级”存储。注意 m 列也可以被移动到二级存 储,但只能是作为最后一种 方案(e 和 x 列会先被移 动)。 typnotnull typnotnull 表示类型上的一 boolean 个非空约束。只用于域。 typbasetype oid sys_type.oid 如 果 这 是 一 个 域 (见 typtype), 则 标识这个 typbasetype 域基于的类。如果此类不是 一个域则为 0。 typtypmod integer 域使用 typtypmod 来记录被 应用于它们基类型的 typmod (如果基类型不使用 typmod , 则 为-1)。 如 果 此 类 型 不 是一个域则为-1。 typndims integer 对 于 一 个 数 组 上 的 域, typndims 是数组维度数 (即,typbasetype 是一 个数组类型)。除数组类型 上的域之外的类型的此列为 0。 见续表 239 第 3 章 静态数据词典视图 表 3.1.87 – 续表 名称 类型 引用 描述 typcollation oid sys_collation.oid typcollation 指定此类 型 的 排 序 规 则。 如 果 类 型 不 支 持 排 序 规 则, 此 列 为 0。 支 持 排 序 的 基 类 型 在 这 里 有 一 个 非 零 值, 通 常 为 DEFAULT_COLLATION_OID。 如果为域指定了排序类型, 则排序类型上的域可以具有 与其基类型不同的排序类型 OID。 typdefaultbin sys_node_tree 如 果 typdefaultbin 为非 空,那么它是该类型默认表 达式的 nodeToString() 表 现形式。这个列只用于域。 typdefault text 如果某类型没有相关默认 值, 那 么 typdefault 为 空。如果 typdefaultbin 不 为空,那么 typdefault 必 须包含一个 typdefaultbin 所指的默认表达式的人 类 可 读 的 版 本。 如 果 typdefaultbin typdefault 为空但 不 为 空, 则 typdefault 是该类型默认值 的外部表现形式,它可以被 交给该类型的输入转换器来 产生一个常量。 typacl aclitem[] 访问权限 表 CATALOG-TYPCATEGORY-TABLE 列出了 typcategory 的系统定义值。任何未来对此列表的增加都将是 大写 ASCII 字母。所有其他 ASCII 字符都保留给用户定义的类别。 3.1.87 sys_user_mapping 目录 sys_user_mapping 存储从本地用户到远程的映射。对这个目录的访问对普通用户有限制,可使用视 图sys_user_mappings 替代。 240 第 3 章 静态数据词典视图 表 3.1.88: sys_user_mapping 列 名称 类型 oid oid umuser oid 引用 描述 行标识符 将要被映射的本地角色的 OID,如 sys_authid.oid 果用户映射是公共的则为 0 umserver oid sys_foreign_server.oid umoptions text[] 包含此映射的外部服务器的 OID 用户映射相关选项,以“keyword= value”字符串形式 3.1.88 kdb_job 表 kdb_job 存储用户创建的 job 信息, 该表作为系统共享表, 存储了所有 dba 用户创建的 job 信息, 所有用户都 可以读取该表, 但只有 dba 用户就进行写操作。 关于 job 的创建、更新、删除见 使用自动作业功能。 表 3.1.89: kdb_job 列 名称 类型 引用 描述 jobid integer 行标识符 jobjclid integer kdb_jobclass OID jobsjid integer kdb_schedule_job OID jobjaid integer kdb_job_action OID jobname text job 名称 jobdesc text job 描述信息 jobagentid integer 后端进程 ID jobenabled boolean job 开启标志 jobcreated timestamp with time zone job 创建时间 jobchanged timestamp with time zone job 修改时间 jobnextrun timestamp with time zone job 下一次执行时间 见续表 241 第 3 章 静态数据词典视图 表 3.1.89 – 续表 名称 类型 引用 描述 joblastrun timestamp with time zone job 上一次执行时间 jobrepeattimes integer job 失败最大重试次数 jobdbname name job 所属的 database 3.1.89 sysmac_obj 表 sysmac.sysmac_obj 保存对象级客体对应的标记。关于对象级强制访问控制功能参见 强制访问控制。 表 3.1.90: sysmac_obj 列 列名 类型 描述 policy_id oid 策略的 oid policy_name name 策略的名字 obj_type name 客体对象的类型 sch_id oid 客体对象的模式 oid obj_id oid 客体对象的 oid label_id oid 客体标记的 oid 3.1.90 sysmac_column_label 表 “sysmac.sysmac_column_label“ 保存列上的标记。关于列级强制访问控制功能参见 强制访问控制。 表 3.1.91: sysmac_column_label 列 名称 类型 描述 policy_id oid 策略的 oid reloid oid 表 oid col_num integer 列的序号 见续表 242 第 3 章 静态数据词典视图 表 3.1.91 – 续表 名称 类型 描述 label oid 列标记的 oid 3.2 系统视图 除系统表外,KingbaseES 提供了一些内建视图。一些系统视图为系统表上一些常用查询提供了便利的访问。其 他视图提供了对内部服务器状态的访问。 KingbaseES 信息模式 提供了一组可供选择的视图,它和系统视图在功能上有所重叠。由于信息模式是 SQL 标 准,而这里描述的视图是 KingbaseES 特有的,如果信息模式能提供你所需要的信息,通常最好使用它。 表 3.2.1 列出了这里描述的系统视图。每一个视图的详细文档都在后文中。 除了特别注明的,所有这里描述的视图都是只读的。 表 3.2.1: 系统视图 视图名字 用途 sys_available_extensions 可用的扩展 sys_available_extension_versions 所有版本的扩展 sys_config 编译时配置参数 sys_cursors 打开的游标 sys_depends 对象的依赖关系 sys_file_settings 配置文件内容摘要 sys_grant_privileges 授予权限的信息 sys_group 数据库用户组 sys_hba_file_rules 客户端认证配置文件内容的摘要 sys_indexes 索引 sys_locks 当前保持或者等待的锁 sys_matviews 物化视图 sys_policies 策略 见续表 243 第 3 章 静态数据词典视图 表 3.2.1 – 续表 视图名字 用途 sys_prepared_statements 预备好的语句 sys_prepared_xacts 预备好的事务 sys_publication_tables publication 和它们相关的表 sys_pwdht 口令历史管理的用户信息 sys_replication_origin_status 有关复制源的信息,包括复制进度 sys_replication_slots 复制槽信息 sys_resource_groups 资源组 sys_roles 数据库角色 sys_rules 规则 sys_seclabels 安全标签 sys_sequences 序列 sys_session 系统会话信息 sys_settings 参数设置 sys_shadow 数据库用户 sys_stats 规划器统计信息 sys_stats_ext extended planner statistics sys_tables 表 sys_timezone_abbrevs 时区简写 sys_timezone_names 时区名字 sys_triggers 触发器 sys_user 数据库用户 sys_users 数据库用户 sys_user_mappings 用户映射 sys_views 视图 见续表 244 第 3 章 静态数据词典视图 表 3.2.1 – 续表 视图名字 用途 recyclebin 回收站 user_any_privs 用户 ANY 权限 sysaudit_record_sao 审计记录 sysaudit_record_sso 审计记录 sysaudit.all_audit_rules 审计策略 sysaudit.all_ids_rules 审计入侵检测 anon.all_policy 数据脱敏策略 src_restrict.show_rules 用户来源限制 sysencrypt.show_encrypt_device 加密设备 sysencrypt.sys_table_encrypt 用户表加密状态 3.2.1 sys_available_extensions sys_available_extensions 视图列出了可用于安装的扩展。参见sys_extension 目录,它显示当前已安装的扩 展。 表 3.2.2: sys_available_extensions 列 名字 类型 描述 name name 扩展名 default_version text 默认版本的名字,如果没有指定则为 NULL installed_version text 当前已安装的扩展版本,如果没有安装则为 NULL comment text 来自于扩展的控制文件的注释字符串 sys_available_extensions 视图是只读的。 3.2.2 sys_available_extension_versions sys_available_extension_versions 视图列出了可用于安装的指定扩展版本。参见sys_extension 目录,它显 示当前已安装的扩展。 245 第 3 章 静态数据词典视图 表 3.2.3: sys_available_extension_versions 列 名字 类型 描述 name name 扩展名 version text 版本名 installed boolean 如果此版本的扩展当前已安装则为真 superuser boolean 如果只有超级用户被允许安装此扩展则为真 relocatable boolean 如果扩展能被重定位到另一个模式则为真 schema name 此扩展必须被安装到的模式名,如果此扩展是 部分或者全部可以重定位的,此列为 NULL requires name[] 先决条件扩展的名字,如果没有则为 NULL comment text 来自于扩展的控制文件的注释字符串 sys_available_extension_versions 视图是只读的。 3.2.3 sys_config 视图 sys_config 描述了当前安装的 KingbaseES 版本中的编译时配置参数。它存在的本意是用于那些要和 KingbaseES 交互的软件包,让它们能找到所需要的头文件和库。它提供了和sys_config KingbaseES 客户端应用相 同的基本信息。 默认情况下,sys_config 视图只能由超级用户读取。 表 3.2.4: sys_config 列 名称 类型 描述 name text 参数名 setting text 参数值 3.2.4 sys_cursors sys_cursors 视图列出了当前可用的游标。游标可以以几种方式定义: • 通过 SQL 中的 DECLARE 语句 • 通过前端/后端协议中的绑定消息 246 第 3 章 静态数据词典视图 • 通过服务器编程接口(SPI) sys_cursors 视图显示由任何这些方式创建的游标。视图只存在于定义它们的事务期间,除非声明了 WITH HOLD。因此非保持游标只在它们的创建事务结束前存在于这个视图中。 注意: 视图用于在内部实现 KingbaseES 的某些部件,例如过程语言。因此,sys_cursors 视图可能包括那些不是由 用户显式创建的游标。 表 3.2.5: sys_cursors 列 名称 类型 描述 name text 游标名 statement text 提交用于定义此游标的查询语句 is_holdable boolean 如果游标是可保持的(即,它可以在其定义事 务提交后被访问)则为 true,否则为否 is_binary boolean 如果游标被声明为 BINARY 则为 true,否则为 false is_scrollable boolean 如果游标是可滚动的(即,允许以一种非顺序 的方式检索行)则为 true,否则为 false creation_time timestamp with time zone 游标被声明的时间 sys_cursors 视图是只读的。 3.2.5 sys_depends 视图 sys_depends 提供对象的依赖关系信息。 247 第 3 章 静态数据词典视图 表 3.2.6: sys_depends 列 名称 类型 描述 oid oid 依赖者对象的 oid name name 依赖者对象名称 type text 依赖者对象类型:r = 普通表,i = 索引,S = 序列,t = 触发器,v = 视图,m = 物化视图, c = 组合类型,f = 外部表,p = 分区表,I = 分区索引 refrelid oid 被依赖者对象的 oid refrelname name 被依赖者对象名称 refreltype char 被依赖者对象类型:r = 普通表,i = 索引,S = 序列,t = 触发器,v = 视图,m = 物化视 图,c = 组合类型,f = 外部表,p = 分区表, I = 分区索引 3.2.6 sys_file_settings 视图 sys_file_settings 提供了服务器配置文件内容的概要。这个视图中的每一行表示配置文件中出现的一个 “name = value”项,还带有注解指示该值是否被成功地应用。在配置文件有问题时,有可能出现额外的行,它们没 有相关的“name = value”项,一个例子是配置文件中有语法错误。 这个视图有助于检查在配置文件中打算做的修改是否能工作,或者用来诊断之前的失败。注意这个视图报告的是 配置文件的当前内容,而不是服务器最后应用的值(这些值通常查看sys_settings 视图就够了)。 默认情况下,sys_file_settings 视图只有超级用户可读。 248 第 3 章 静态数据词典视图 表 3.2.7: sys_file_settings 列 名称 类型 描述 sourcefile text 配置文件的完整路径名 sourceline integer 该项在配置文件中出现的行号 seqno integer 项被处理的顺序(1..“n“) name text 配置参数名 setting text 被赋予给参数的值 applied boolean 为真表示值已被成功应用 error text 如果非空,表示一个错误消息,它说明为什么这个项不能被应用 如果 配置文 件包含语 法错 误 或者 非法参数名,服 务器将 不 会尝试 从 其中 应用任 何 设置, 并 且因此 所有的 applied 域都为假。在这种情况下,将会有一个或者多个行的 error 域为非空,它们说明了为什么出问题。否则, 将尽可能应用每个设置。如果一个设置不能被应用(例如非法值或者该设置不能在服务器开始后改变),会有一个合 适的消息存储在它的 error 域中。一个项的 applied 域为假的另一种情况是它被后面一个具有相同参数名的项所覆 盖,这种情况不会被认为是一种错误,因此在 error 域中不会有错误消息。 关于更改运行时参数的各种方法请见设置参数 。 3.2.7 sys_grant_privileges 视图 sys_grant_privileges 提供用户或者角色所授予和被授予的权限信息。 表 3.2.8: sys_grant_privileges 列 名称 数据类型 描述 grantor name 授予该权限的用户名或角色名 grantortype text 授予者类型 (用户或者角色) grantee name 被授予该权限的用户名或角色名 granteetype text 被授予者类型 (用户或者角色) object_name name 权限相关的对象名称 object_type text 权限相关的对象类型 object_schema name 权限相关的对象所属的模式 见续表 249 第 3 章 静态数据词典视图 表 3.2.8 – 续表 名称 数据类型 描述 privilege_type text 权限类型 is_grantable text 该特权是否为可授予的 3.2.8 sys_group 视图 sys_group 为向后兼容而存在:它模拟了存在于 KingbaseES V7 之前版本中的一个目录。它显式所有角色 的名称和未被标记 rolcanlogin 的成员,它是被用做组的角色集合的近似。 表 3.2.9: sys_group 列 名称 类型 引用 描述 groname name sys_authid.rolname 组名 grosysid oid sys_authid.oid 组 ID grolist oid[] sys_authid.oid 包含此组中角色 ID 的一个数组 3.2.9 sys_hba_file_rules 视图 sys_hba_file_rules 提供客户端认证配置文件 sys_hba.conf 内容的摘要。该文件中每个非空、非注释 行都会在这个视图中出现一行,行中还有标记表示该规则是否被成功地应用。 这个视图可用来检查认证配置文件中按计划的更改是否起作用,或者诊断之前的失败。注意这个视图报告的是该 文件的当前内容,而不是服务器最后一次载入的内容。 默认情况下,只有超级用户可以读取 sys_hba_file_rules 视图。 250 第 3 章 静态数据词典视图 表 3.2.10: sys_hba_file_rules 列 名称 类型 描述 line_number integer 这条规则在 sys_hba.conf 中的行号 type text 连接类型 database text[] 这条规则应用的数据库名列表 user_name text[] 这条规则应用的用户及组名列表 address text 主机名或 IP 地址,或者 all、samehost、 samenet 之一,对于本地连接为空 netmask text IP 地址掩码,如果不适用则为空 auth_method text 认证方法 options text[] 为认证方法指定的选项(如果有) error text 如果非空,则是一个错误消息,它表示为什么 这一行无法被处理 通常,反映一个不正确项的行只有 line_number 和 error 域中有值。 更多有关客户端认证配置的信息请参考 强身份验证. 3.2.10 sys_indexes 视图 sys_indexes 提供对于数据库中每一个索引信息的访问。 表 3.2.11: 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 命 令的重构) 251 第 3 章 静态数据词典视图 3.2.11 sys_locks 视图 sys_locks 提供了数据库服务器上活动进程中保持的锁的信息。 sys_locks 中对每一个活动可锁对象、请求锁模式和相关进程的组合都有一行。因此,如果多个进程持有或者正 在等待一个可锁对象上的锁,同一个可锁对象可能出现很多次。但是,一个当前没有被锁的对象根本不会出现。 有多种不同类型的可锁对象:整个关系(如表)、关系的单个页、关系的单个元组、事务 ID(包括虚拟和永久 ID)和普通数据库对象(由类 OID 和对象 OID 标识,和 sys_description 或 sys_depend 中的相同方式)。扩展 一个关系的权力也被表示为一个独立的可锁对象。“咨询”锁可以具有用户定义的意义。 表 3.2.12: sys_locks 列 名称 类型 locktype text 引用 描述 可 锁 对 象 的 类 型: relation,extend,page, tuple,transactionid, virtualxid,object, userlock 或 advisory database oid sys_database.oid 锁目标存在的数据库的 OID,如果目标是一个共享 对象则为 0 ,如果目标是一 个事务 ID 则为空 relation oid sys_class.oid 作为锁目标的关系的 OID, 如果目标不是一个关系或者 只是关系的一部分则此列为 空 page integer 作为锁目标的页在关系中的 页号,如果目标不是一个关 系页或元组则此列为空 tuple smallint 作为锁目标的元组在页中的 元组号,如果目标不是一个 元组则此列为空 virtualxid text 作为锁目标的事务虚拟 ID, 如果目标不是一个虚拟事务 ID 则此列为空 见续表 252 第 3 章 静态数据词典视图 表 3.2.12 – 续表 名称 类型 transactionid xid 引用 描述 作为锁目标的事务 ID,如果 目标不是一个事务 ID 则此列 为空 ID classid oid sys_class.oid 包含锁目标的系统目录的 OID ,如果目标不是一个普 通数据库对象则此列为空 objid oid 任意 OID 列 锁目标在它的系统目录中的 OID,如果目标不是一个普 通数据库对象则为空 objsubid smallint 锁的目标列号(classid 和 objid 指表本身),如果目 标是某种其他普通数据库对 象则此列为 0 ,如果目标不 是一个普通数据库对象则此 列为空 virtualtransaction text 保持这个锁或者正在等待这 个锁的事务的虚拟 ID pid integer 保持这个锁或者正在等待这 个锁的服务器进程的 P ID, 如果此锁被一个预备事务所 持有则此列为空 mode text 此进程已持有或者希望持有 的锁模式 granted boolean 如果锁已授予则为真,如果 锁被等待则为假 fastpath boolean 如果锁通过快速路径获得则 为真,通过主锁表获得则为 假 一个行的 granted 为真表示一个被指定进程持有的锁。为假表示该进程当前正在等待获取这个锁,这意味着至 少一个其他进程正持有或等待同一个可锁对象上的一个冲突锁。该等待进程将一直休眠直到其他锁被释放(或者一个 死锁状态被检测到)。单个进程在同一时间只能等待最多一个锁。 贯穿一个事务的运行,一个服务器进程在其生存周期内都持有一个在其虚拟事务 ID 上的排他锁。如果一个永久 ID 被分配给事务(通常发生在事务改变数据库状态时),它也会持有一个在其永久事务 ID 上的排他锁直到它结束。 253 第 3 章 静态数据词典视图 当一个事务发现它需要等待另一个事务,它也会尝试获取其他事务 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)会被一次性从每一个后端收集起来,且并不冻结整个锁管理器的状态。因此有可能某些锁在 上述信息被收集的过程中被获得或者释放。注意,不管怎样这些锁是已知不会和任何当前正在发生的锁冲突。在所有 后端已经查询了快速路径锁后,普通锁管理器的剩余部分被作为一个单元锁住,并且所有剩余锁的一个一致快照被作 为一个原子动作收集。在解锁普通锁管理器后,谓词锁管理器也被类似地锁住并且所有谓词锁被作为一个原子动作收 集。因此,在快速路径锁这种特殊情况下,每一个锁管理器会传递一个一致的结果组。但由于我们并不会同时锁上两 个锁管理器,在我们询问完普通锁管理器后或者询问谓词锁管理器之前,锁可以被获得或者释放。 如果对此视图频繁地访问,对普通或者谓词锁管理器加锁可能会对数据库性能产生一定影响。虽然这些锁只会在 最少的时间内被保持(足以从锁管理器获得数据),但这无法完全消除可能产生的性能影响。 254 第 3 章 静态数据词典视图 3.2.12 sys_matviews 视图 sys_matviews 提供了关于数据库中每一个物化视图的信息。 表 3.2.13: 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 查询) 3.2.13 sys_policies 视图 sys_policies 提供了有关数据库中行级安全性策略的信息。 表 3.2.14: sys_policies 列 名称 类型 引用 描述 schemaname name sys_namespace.nspname 包含策略所在表的模式的 名称 tablename name sys_class.relname 策略所在表的名称 policyname name sys_policy.polname 策略名称 permissive text 策略是宽容性的还是限制 性的 见续表 255 第 3 章 静态数据词典视图 表 3.2.14 – 续表 名称 类型 引用 描述 roles name[] 这个策略适用的角色 cmd text 这个策略适用的命令类型 qual text 作为这个策略适用的查询 的安全屏障条件增加的表 达式 with_check 作为尝试向该表增加行的 text 查询的 WITH CHECK 条 件增加的表达式 3.2.14 sys_prepared_statements sys_prepared_statements 视图显示在当前会话中可用的所有预备语句。关于预备语句详见 PREPARE 。 sys_prepared_statements 为每一个预备语句包含一行。当一个新的预备语句被创建时在此视图中会增加一 行,反之当一个预备语句被释放时在此视图中会删除一行(例如,通过 DEALLOCATE 命令)。 表 3.2.15: sys_prepared_statements 列 名字 类型 描述 name text 预备语句的标识符 statement text 客户端提交用于创建此预备语句的查询语句。对 于通过 SQL 创建的预备语句,这里是由客户端提 交的 PREPARE 语句。对于通过前端 /后端协议创 建的预备语句,这里是预备语句本身的文本。 prepare_time timestamp with time 预备语句被创建的时间 zone parameter_types regtype[] 预备语句期望的参数类型,以一个 regtype 数组 的形式。这个数组中一个元素所对应的 OID 可通 过将 regtype 值转换为 oid 获得。 from_sql boolean 如果预备语句通过 SQL 命令 PREPARE 创建, 则为 true;如果预备语句通过前端/后端协议创 建,则为 false sys_prepared_statements 视图为只读。 256 第 3 章 静态数据词典视图 3.2.15 sys_prepared_xacts 视图 sys_prepared_xacts 显示关于两阶段提交(详见 PREPARE TRANSACTION 当前准备好事务的信 息)。 sys_prepared_xacts 为每一个预备事务包含一行。当事务被提交或回滚时,相应的项将被移除。 表 3.2.16: 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 视图被访问时,内部事务管理器数据结构被暂时地锁住,并为视图的显示产生一个副 本。这确保了视图中是一组一致的结果,并且不会阻塞普通操作。不管怎样,当此视图被频繁访问时,会对数据库性 能有所影响。 3.2.16 sys_publication_tables 视 图 sys_publication_tables 提供 publication 与 其 所 包 含 的 表 之 间 的 映 射 信 息。 和 底 层 的 目 录 sys_publication_rel 不同,这个视图展开了定义为 FOR ALL TABLES 的 publication,这样对这类 publication 来说,每一个合格的表都有一行。 表 3.2.17: sys_publication_tables 列 名称 类型 引用 描述 pubname name sys_publication.pubname publication 名称 schemaname name sys_namespace.nspname 包含表的方案名称 tablename name sys_class.relname 表名 257 第 3 章 静态数据词典视图 3.2.17 sys_pwdht 视图 sys_pwdht 提供口令历史管理的用户信息。更多口令历史管理功能参见插件 passwordhistory 。 表 3.2.18: sys_pwdht 列 名称 类型 引用 描述 userid oid sys_authid.oid 用户 oid timestamp timestamp with time zone 用户密码创建时间 password text 用户密码 3.2.18 sys_replication_origin_status sys_replication_origin_status 视图包含有关一个特定源已经重放了多少的信息。 表 3.2.19: 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 已经 被复制到这里。使 用异步提交时,在 将数据持久化到磁 盘前用它来刷入提 交记录。 3.2.19 sys_replication_slots sys_replication_slots 视图提供了当前存在于数据库集簇上的所有复制槽的列表,其中也包括复制槽的当前 状态。 258 第 3 章 静态数据词典视图 表 3.2.20: sys_replication_slots 列 名称 类型 slot_name name 引用 描述 一个唯一的、集簇范围内的 复制槽标识符 plugin 包含这个逻辑槽正在使用的 name 输出插件的共享对象基础名 称,这个列对于物理槽为空 值。 slot_type 槽类型 - physical(物理) text 或者 logical(逻辑) datoid oid sys_database.oid 与这个槽相关的数据库的 OID,或 者 为 空值。 只 有 逻 辑槽具有相关的数据库。 database text sys_database.datname 与这个槽相关的数据库的名 称,或者为空值。只有逻辑 槽具有相关的数据库。 temporary boolean 如果这是一个临时复制槽则 为真。临时槽不会被保存在 磁盘上并且会在出错或会话 结束时自动被删除掉。 active boolean 如果这个槽当前正在被使用 则为真 active_pid integer 如果槽当前正在被使用,则 记录使用这个槽的会话的进 程 ID。如果槽没有被使用则 为 NULL。 xmin xid 这个槽要需要数据库保留的 最旧事务。VACUUM 不能移除 被其后续事务删除的元组。 catalog_xmin xid 这个槽要需要数据库保留的 影响系统目录的最旧事务。 VACUUM 不能移除被其后续事 务删除的目录元组。 见续表 259 第 3 章 静态数据词典视图 表 3.2.20 – 续表 名称 类型 restart_lsn sys_lsn 引用 描述 可能仍被这个槽的消费者 要求的最旧 WAL 地址 (LSN), 并 且 因 此 不 会 在 检查点期间自动被移除。如 果这个槽的 LSN 从未被保留 过,则为 NULL。 confirmed_flush_lsn 代表逻辑槽的消费者已经确 sys_lsn 认接收数据到什么位置的地 址(LSN )。比这个地址更 旧的数据已经不再可用。对 于物理槽这里是 NULL。 3.2.20 sys_resource_groups 视图 sys_resource_groups 提供了资源组的信息。更多资源限额管理功能内容参考插件 kdb_resource_group 。 表 3.2.21: sys_resource_groups 视图 名称 类型 描述 rsgroup_id oid 资源组 oid rsgroup_name objname 资源组名称 rsgroup_createtime timestamp with time zone 资源组创建时间 rsgroup_modifytime timestamp with time zone 资源组修改时间 rsgroup_users oid 加入资源组的用户 oid rsgroup_databases oid 加入资源组的数据库 oid rsgroup_options text 资源组的资源限额设置,子项有:cpu_list、mem_percent、mem_limi 3.2.21 sys_roles 视图 sys_roles 提供了关于数据库角色的信息。这是sys_authid 的一个公共可读视图,它隐去了口令域。 此视图显示了低层表的 OID 列,因为需要它来和其他目录做连接。 260 第 3 章 静态数据词典视图 表 3.2.22: sys_roles 列 名称 类型 引用 描述 oid oid sys_authid.oid 角色的 oid rolname name 角色名 rolsuper boolean 角色是否具有超级用户权限 rolinherit boolean 如果此角色是另一个角色的 成员,角色是否能自动继承 另一个角色的权限 rolcreaterole boolean 角色能否创建更多角色 rolcreatedb boolean 角色能否创建数据库 rolcanlogin boolean 角色是否能登录,即此角色 能否被作为初始会话授权标 识符 rolreplication boolean 角色是一个复制角色。复制 角色可以开启复制连接并且 创建和删除复制槽。 rolconnlimit integer 对于一个可登录的角色,这 里设置角色可以发起的最大 并 发 连 接 数。-1 表示无限 制。 rolpassword text 不 是 口 令 (看 起 来 是 ********) rolvaliduntil timestamp with 口令失效时间(只用于口令 time zone 认证),如果永不失效则为 空 rolbypassrls boolean 绕过每一条行级安全性策略 的角色 rolconfig text[] 运行时配置变量的角色特定 默认值 261 第 3 章 静态数据词典视图 3.2.22 sys_rules 视图 sys_rules 提供对查询重写规则的信息访问。 表 3.2.23: sys_rules 列 名称 类型 引用 描述 schemaname name sys_namespace.nspname 包含表的模式名 tablename name sys_class.relname 规则适用的表名 rulename name sys_rewrite.rulename 规则名 definition text 规则定义(创建命令的重构) sys_rules 视图排除了视图和物化视图的 ON SELECT 规则,它们可以在 sys_views 和 sys_matviews 中找到。 3.2.23 sys_seclabels 视图 sys_seclabels 提供对安全标签的信息访问。它是sys_seclabel 目录的一个便于查询的版本。 表 3.2.24: sys_seclabels 列 名称 类型 引用 描述 objoid oid any OID column 安全标签所属对象的 OID classoid oid sys_class.oid 对象出现的系统目录的 OID objsubid integer 对于一个表列上的安全标 签,这里是列号(objoid 和 classoid 指表本身)。对于 所有其他对象类型,此列为 0。 objtype 此标签应用的对象类型,以 text 文本方式。 objnamespace oid sys_namespace.oid 如果适用,为此对象的名字 空间的 OID;否则为空。 objname text 此标签应用的对象名,以文 本形式。 见续表 262 第 3 章 静态数据词典视图 表 3.2.24 – 续表 名称 类型 引用 描述 provider text sys_seclabel.provider 与此标签相关的标签提供 者。 label text sys_seclabel.label 应用于此对象的安全标签。 3.2.24 sys_sequences 视图 sys_sequences 提供对数据库中每个序列的信息的访问。 表 3.2.25: 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 最后一个被写入到磁盘的序 列值。如果使用了缓冲,这 个值可能比从序列中取出的 最后一个值大。如果还没有 从该序列读取过,则为空。 此外,如果当前用户没有该 序列上的 USAGE 或 SELECT 特权,则这个值为空。 263 第 3 章 静态数据词典视图 3.2.25 sys_session 视图 sys_session 提供了当前数据库系统的会话信息。 表 3.2.26: sys_session 列 名字 类型 描述 sess_id integer 会话 id curr_sch character varying(32 byte) 会话所属模式 usename name 会话所属用户名 client_ip inet 会话 ip 地址 create_start timestamp with time zone 会话创建时间 current_query text 会话 sql status text 会话状态 3.2.26 sys_settings 视图 sys_settings 提供了对服务器上运行时参数的访问。它本质上是 SHOW 和 SET 命令的可替换接口。它 还提供了 SHOW 不能提供的关于每一个参数的一些现实,例如最大值和最小值。 表 3.2.27: sys_settings 列 名字 类型 描述 name text 运行时配置参数名 setting text 参数的当前值 unit text 参数的隐式单元 category text 参数的逻辑组 short_desc text 参数的简短描述 extra_desc text 附加的参数的详细描述 context text 要求设置此参数值的上下文 vartype text 参 数 类 型 (boolean、enum、integer、real 或 string) 见续表 264 第 3 章 静态数据词典视图 表 3.2.27 – 续表 名字 类型 描述 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 中完成并且不需要重启服务器。它们也可以在一个连接请求包 265 第 3 章 静态数据词典视图 (例如,通过 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 重新修改它。 3.2.27 sys_shadow 视图 sys_shadow 的存在是为了向后兼容:它模拟了在 KingbaseESV7 版本之前的一个系统目录。它显 示sys_authid 中所有被标记为 rolcanlogin 的角色的属性。 由于这个表包含口令,所以不能是公众可读的,这也是采用 sys_shadow 这个名字的原因。而sys_user 是 sys_shadow 上的一个公共可读视图,它屏蔽了口令域。 表 3.2.28: sys_shadow 列 名称 类型 引用 描述 usename name sys_authid.rolname 用户名 usesysid oid sys_authid.oid 用户的 ID usecreatedb boolean 用户能否创建数据库 usesuper boolean 用户是否为一个超级用户 userepl boolean 用户能否开启流复制并将系 统设置或者取消备份模式。 usebypassrls boolean 用户能否绕过所有的行级安 全性策略 passwd text 口令(可能被加密),如果 没有则为空。关于加密口令 如何存储请参见 sys_authid 见续表 266 第 3 章 静态数据词典视图 表 3.2.28 – 续表 名称 类型 valuntil timestamp with 口令过期时间(仅用于口令 time zone 认证) text[] 运行时配置变量的会话默认 useconfig 引用 描述 值 3.2.28 sys_stats 视图 sys_stats 提供对存储在sys_statistic 目录中信息的访问。此视图能访问 sys_statistic 行是有限制的, 可访问行所对应的表必须是用户有读权限的。因此让所有用户都可以读此视图是安全的。 sys_stats 也被设计为能以更适合阅读的格式显示底层目录的信息—但代价是只要为 sys_statistic 定义了新 的槽类型,就必须要扩展此视图的模式。 表 3.2.29: sys_stats 列 名称 类型 引用 描述 schemaname name sys_namespace.nspname 包含表的模式名 tablename name sys_class.relname 表名 attname name sys_attribute.attname 被此行描述的列名 inherited boolean 如果为真,表示此行包括 继承子列,不仅仅是指定 表中的值 null_frac real 列项中为空的比例 avg_width integer 列项的平均字节宽度 见续表 267 第 3 章 静态数据词典视图 表 3.2.29 – 续表 名称 类型 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 等于 整 个 值 集 合, 则 此 列 为 空) 见续表 268 第 3 章 静态数据词典视图 表 3.2.29 – 续表 名称 类型 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 命 令 控 制, 或 者 设 置 de- fault_statistics_target 运行时参数从全局上进行控制。 3.2.29 sys_stats_ext sys_stats_ext 视图提供对存储在sys_statistic_ext 和sys_statistic_ext_data 目录的信息的访问。该视图只允 许访问 sys_statistic_ext 和 sys_statistic_ext_data 中用户有权读取的表,因此允许公共访问读取这个视图是 269 第 3 章 静态数据词典视图 安全的。 sys_stats_ext 也被设计成以比底层目录更可读的格式来表示信息--代价是每当向 sys_statistic_ext 添加新 类型的扩展统计信息时,必须对其模式进行扩展。 表 3.2.30: sys_stats_ext 列 名称 类型 引用 描述 schemaname name sys_namespace .nspname 包含表的模式名 tablename name sys_class.relname 表名 statistics name sys_namespace .nspname 包含扩展统计的模式名 name sys_statistic_ext .stx- 扩展统计名称 _schemaname statistics_name name statistics_owner name sys_authid.oid 扩展统计的所有者 attnames name[] sys_attribute .attname 定义扩展统计信息的列的 名称 kinds char[] 为记录启用的扩展统计信 息类型 n_distinct sys_ndistinct 对于列值的组合,有 n 个 不同的计数。如果远大于 零,不同值的估计数目在 组合中。如果小于 0,则 用不同值的负数除以根据 行数。(使用否定形式, 当 ANALYZE 认为不同值的 数量可能会随着表的增长 而增加; 当列似乎有固定数 目的可能值时,使用正数 形式)。例如,-1 表示列 的唯一组合,其中不同组 合的数量与行数相同。 dependencies sys_dependencies 函数相关统计数据 见续表 270 第 3 章 静态数据词典视图 表 3.2.30 – 续表 名称 类型 most_common_vals text[] 引用 描述 列中最常见的值组合的列 表。(如果没有比其他任 何组合更常见的组合,则 为 Null。) most_common_val_nulls 空 标 志 最 常 见 值 boolean[] 组 合 的 列 表。(当 most_common_vals 时 为 Null。) most_common _freqs double precision[] 频率最常见组合的列 表, 即, 每 个 的 出 现 次 数 除 以 总 行 数。(当 most_common_vals 时为 Null。) most_common_base_freqs double precision[] 基频率最常见组合的 列 表, 即,per-value 频 率 的 乘 积。(当 most_common_vals 时 为 Null。) 可以使用 ALTER TABLE SET STATISTICS 指令,或者通过全局地设置 default_statistics_target 运行时参数,来 按列控制数组字段中的最大条目数。 3.2.30 sys_tables 视图 sys_tables 提供了对数据库中每个表的有用信息的访问。 表 3.2.31: sys_tables 列 名字 类型 引用 描述 schemaname name sys_namespace.nspname 包含表的模式名 tablename name sys_class.relname 表名 tableowner name sys_authid.rolname 表拥有者的名字 见续表 271 第 3 章 静态数据词典视图 表 3.2.31 – 续表 名字 类型 引用 描述 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 如果表上启用了行安全性则 为真 3.2.31 sys_timezone_abbrevs 视图 sys_timezone_abbrevs 提供了对当前被时间输入例程识别的时区缩写的列表。当 timezone_abbreviations 运行时参数被修改,此视图的内容会发生变化。 表 3.2.32: sys_timezone_abbrevs 列 名字 类型 描述 abbrev text 时区缩写 utc_offset interval 相对于 UTC 的偏移(正值表示格林威治东部) is_dst boolean 如果这是一个夏令时缩写,则为真 虽然大部分时区缩写表示从 UTC 开始的固定偏移,但是有一些在历史上有值的变化。在这种情况下,这个视图 表示它们现在的含义。 3.2.32 sys_timezone_names 视图 sys_timezone_names 提供了一个被 SET TIMEZONE 识别的时区名字的列表,以及它们的相关缩写、UTC 偏移和夏令时状态(从技术上来说,KingbaseES 不使用 UTC 是因为闰秒没有被处理)。和sys_timezone_abbrevs 中展示的缩写不同,这里很多名字隐含了一组夏令时转换日期规则。因此,相关信息在本地 DST 边界间变化。所显 示的信息基于 CURRENT_TIMESTAMP 的当前值计算得来。 272 第 3 章 静态数据词典视图 表 3.2.33: sys_timezone_names 列 名字 类型 描述 name text 时区名 abbrev text 时区缩写 utc_offset interval 相对于 UTC 的偏移(正值表示格林威治东部) is_dst boolean 如果当前保持为夏令时则为真 3.2.33 sys_triggers 视图 sys_triggers 提供关于数据库触发器的信息。 表 3.2.34: sys_triggers 列 名字 类型 描述 tgrelid oid 触发器的 OID tgname name 触发器名称 schemaid oid 所在模式的 OID schemaname name 所在模式的名称 tgenabled char 控制触发器在 session_replication_role 模式中的触发。O = 触发器在“origin”和“local”模式 tablename name 触发器引用表的名称 tgtype smallint 触发器触发条件的位掩码 tgfoid oid 要被触发器调用的函数 OID tgconstrrelid oid 引用完整性约束的表 OID tgdeferrable boolean 触发器是否可推迟 tginitdeferred boolean 触发器初始是否可推迟则为真 tridef text 触发器 DDL 定义语句 tridefbody text 触发体 DDL 定义语句 owner name 触发器拥有者 273 第 3 章 静态数据词典视图 表 3.2.34 – 续表 名字 类型 描述 isinternal boolean 是否为内部触发器 3.2.34 sys_user 视图 sys_user 提供关于数据库用户的信息。这是sys_shadow 的一个公共可读的视图,它消除了口令域。 表 3.2.35: sys_user 列 名字 类型 描述 usename name 用户名 usesysid oid 用户的 ID usecreatedb boolean 用户是否能创建数据库 usesuper boolean 用户是否为超级用户 userepl boolean 用户能否开启流复制以及将系统转入/转出备份模式。 usebypassrls boolean 用户能否绕过所有的行级安全性策略 passwd text 不是口令(总是显示为 ********) valuntil timestamp with time zone 口令过期时间(只用于口令认证) useconfig text[] 运行时配置变量的会话默认值 3.2.35 sys_users 视图 sys_users 提供关于数据库用户的信息。在查询系统用户信息时,超级用户可以查看所有用户信息,非超 级用户只能查看自己的信息。 表 3.2.36: sys_users 列 名字 类型 描述 usename name 用户名 usesysid oid 用户的 ID 见续表 274 第 3 章 静态数据词典视图 表 3.2.36 – 续表 名字 类型 描述 usecreatedb boolean 用户是否能创建数据库 usesuper boolean 用户是否为超级用户 userepl boolean 用户能否开启流复制以及将系统转入/转出备份模式。 usebypassrls boolean 用户能否绕过所有的行级安全性策略 passwd text 不是口令(总是显示为 ********) valuntil timestamp with time zone 口令过期时间(只用于口令认证) useconfig text[] 运行时配置变量的会话默认值 3.2.36 sys_user_mappings 视图 sys_user_mappings 提供有关用户映射的信息。这是sys_user_mapping 的一个公共可读视图,它对无权 使用的用户省去了选项域。 表 3.2.37: 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 特权 275 第 3 章 静态数据词典视图 • 当前用户是服务器的拥有者并且映射是用于 PUBLIC • 当前用户是一个超级用户 3.2.37 sys_views 视图 sys_views 提供了数据库中每个视图的信息。 表 3.2.38: sys_views 列 名称 类型 引用 描述 schemaname name sys_namespace.nspname 包含视图的模式名 viewname name sys_class.relname 视图名称 viewowner name sys_authid.rolname 视图拥有者的名字 definition text isupdateable integer 视图定义(一个重构的 SELECT 查询) 是否可更新 sys_authid.rolname 3.2.38 recyclebin 视图 recyclebin 提供回收站的信息。 表 3.2.39: recyclebin 列 名称 类型 引用 描述 oid oid sys_class.oid 被删除对象 OID original_name name sys_class.relname 对象删除之前的名称 droptime timestamp wiht time zone type text 对象删除时间 sys_class.relkind 对象类型 3.2.39 user_any_privs 视图 user_any_privs 用于提供权限 ID 的转换,显示为权限具体的名字。每个用户只可以查看自己的拥有的 ANY 权限。 276 第 3 章 静态数据词典视图 表 3.2.40: user_any_privs 列 名字 类型 描述 grantee name 接受授权的用户或角色的名称。 privilege text ANY 权限名称 admin_option text 指示授予是否与 ADMIN OPTION 一起使用 3.2.40 sysaudit_record_sao 数据库审计员 sao 可以在 security 数据库下查询视图 sysaudit_record_sao,查看超级用户(包括数据库管理员 system)和数据库安全员 sso 的审计记录信息。更多审计功能信息参见 数据库审计。 表 3.2.41: sysaudit_record_sao 列 名称 类型 描述 session_id text 会话 id proc_id integer 进程号 vxid text 虚事务 id xid integer 事务 id user_id oid 用户 id username text 用户名 remote_addr text ip 地址/端口 db_id oid 数据库 id db_name text 数据库名 rule_id bigint 审计策略编号 rule_type text 审计类型 opr_type text 操作类型 obj_type text 对象类型 schm_id oid 模式 id schm_name text 模式名 见续表 277 第 3 章 静态数据词典视图 表 3.2.41 – 续表 名称 类型 描述 obj_id oid 对象 id obj_name text 对象名 sqltext text SQL 文本 params text 参数 errcode text SQLSTATE 错误码 errmsg text 错误消息内容 audit_ts timestamp with time zone 操作时间 result text 操作成功是 success,失败是 failure record_type smallint 审计记录类型 aud_client text 客户端名字 server_type text 集群时服务器类型,M 是主机,S 是备机 authen_method text 认证方式。非用户登录进程此字段 显示 unknown 3.2.41 sysaudit_record_sso 数据库安全员 sso 可以在 security 数据库下查询视图 sysaudit_record_sso,查看普通用户和数据库审计员 sao 的审计记录信息。更多审计功能信息参见 数据库审计。 sysaudit_record_sso 的视图结构与sysaudit_record_sao 相同。 3.2.42 sysaudit.all_audit_rules 视图 all_audit_rules 提供审计策略设置信息。视图在 sysaudit 模式下,查询使用 sysaudit.all_audit_rules 。 278 第 3 章 静态数据词典视图 表 3.2.42: all_audit_rules 列 名称 类型 描述 audit_id int 审计策略编号 audit_target smallint 审计目标(事件、语句、对象) audit_type text 审计类型 audit_users text 审计用户 audit_schema text 审计对象所在模式 audit_objnames text 审计对象名称 audit_objoid oid 审计对象 oid creator_name text 策略设置者名称 3.2.43 sysaudit.all_ids_rules 视图 all_ids_rules 提供审计入侵检测策略信息。视图在 sysaudit 模式下,查询使用 sysaudit.all_ids_rules 。 表 3.2.43: all_ids_rules 列 名称 类型 描述 rulename text ids 规则名 actionname text 审计的操作名 useroid integer 用户 oid username text 审计用户名 schoid oid 对象模式 oid schname text 审计对象模式名 objoid oid 对象 oid objname text 审计对象名 whenever text 检查审计的时机 ip text 触发审计的客户端 ip 见续表 279 第 3 章 静态数据词典视图 表 3.2.43 – 续表 名称 类型 描述 start_end_time text 触发检查的时间区间 interval_time integer 触发检查的最长时间间隔 times integer 触发检查次数的阈值 3.2.44 anon.all_policy 视图 all_policy 提供数据脱敏策略设置信息。加载数据脱敏插件 sys_anon 后,视图存在 anon 模式下,查询 使用 anon.show_rules 。 表 3.2.44: all_policy 列 名称 类型 描述 policy_name text 数据脱敏策略名 table_name text 脱敏对象名 schema_name text 脱敏对象模式名 column_name text 脱敏列名 masking_user text 被脱敏用户名 masking_func text 脱敏函数 func_parameters text 脱敏函数参数列表 3.2.45 src_restrict.show_rules 视图 show_rules 提供查看当前的用户来源限制规则信息,包括登录数据库的用户及 IP 的黑白名单。在加载来 源限制功能的插件 src_restrict 后,查询使用 src_restrict.show_rules 。 表 3.2.45: show_rules 列 名称 类型 描述 filter_type text 规则的类型,allow 代表白名单,reject 代表黑名单 见续表 280 第 3 章 静态数据词典视图 表 3.2.45 – 续表 名称 类型 描述 rule_user text[] 规则的用户名 rule_ip text 规则的 IP netmask text 规则 IP 对应的子网掩码 login_limited_info text 登录限制信息(包括 IP 段,mac 地址,日期时间段) 3.2.46 sysencrypt.show_encrypt_device 视图 show_encrypt_device 提 供 查 询 加 密 设 备 信 息。 加 载 数 据 加 解 密 插 件 sysencrypt 后, 查 询 使 用 sysencrypt.show_encrypt_device 。 表 3.2.46: show_encrypt_device 列 名称 类型 描述 device text 加密设备或算法 devicelib text 加密设备库名 driverlib text 算法驱动库名 maxkeylen integer 密钥的最大长度 align integer 算法加解密数据对齐最大长度,分组算法为 2 的整数 倍,流算法为 0 isdefault boolean 是否为数据库内默认加密设备 isuse boolean 是否正在使用 ip text 加密设备的 IP 地址 port integer 加密设备的端口号 3.2.47 sysencrypt.sys_table_encrypt 视图 sys_table_encrypt 显示数据库内的用户表加密状态。加载数据加解密插件 sysencrypt 后,查询使用 sysencrypt.sys_table_encrypt 。 281 第 3 章 静态数据词典视图 表 3.2.47: sys_table_encrypt 列 名称 类型 描述 oid oid 加密表 oid tablename name 表名 tablespace oid 表空间 oid schema name 表所在的模式名 isencrypted boolean 加密表为 t,非加密表为 f 3.3 兼容 Oracle 视图 表 3.3.1 列出了当前 KingbaseES 兼容的所有 Oracle 视图。 每一个视图的详细文档都在后文中。 表 3.3.1: 系统视图 目录名 用途 all_all_tables 描述当前用户可以访问的对象表和关系表。 all_arguments 列出了当前用户可以访问的过程和函数的参数。 all_col_comments 描述当前用户可访问的所有序列。 all_col_privs 当前用户下可以查看的所有列级权限,既包括user_col_privs 中的内 容,同时也包含 GRANTEE 是当前角色的列级权限。 all_cons_columns 描述当前用户可访问的所有约束的列。 all_constraints 描述当前用户可以访问的表上的约束定义。 all_db_links 数据库中 dblink 外部链接的信息。 all_directories 数据库中目录信息。 all_ind_columns 描述当前用户所能获取到的表上建有索引的列信息。 all_indexes 描述当前用户所能获取到的表上的索引信息。 all_objects 当前用户下可以查看的所有对象。 见续表 282 第 3 章 静态数据词典视图 表 3.3.1 – 续表 目录名 用途 all_part_tables 显 示 当 前 用 户 所 拥 有 及 能 访 问 到 的 所 有 分 区 表, 其 字 段 与dba_part_tables 相同。 all_sequences 描述当前用户可访问的所有序列。 all_source 描述当前用户可访问的存储对象的文本源。 all_synonyms 描述当前用户所能查看的同义词信息。 all_tab_cols 描述了当前用户可以访问的表,视图的列。视图结构与dba_tab_cols 相同。 all_tab_columns 描 述 了 当 前 用 户 可 以 访 问 的 表, 视 图 的 非 隐 藏 列。 视 图 结 构 与dba_tab_columns 相同。 all_tab_comments 在当前用户可以访问的表和视图上显示注释。 all_tab_partitions 显示当前用户所拥有的所有分区,字段与dba_tab_partitions 相同。 all_tab_privs 描述当前用户对所有对象授予。视图结构与dba_tab_privs 相同。 all_tables 当前用户下可以查看的所有表。 all_trigger_cols 描述当前用户可访问的所有触发器的列。 all_triggers 描述当前用户可访问的所有触发器。 all_types 描述当前用户可以访问的对象表和关系表。 all_users 列出当前用户可见的数据库的所有用户。 all_views 描述当前用户所能查看的所有的视图信息。 db_files 数据库中所有表空间、表空间使用的存储容量及表空间所在存储设备 的容量信息。 dba_all_tables 描述当前数据库所有的对象表和关系表。视图结构与all_all_tables 相 同。 dba_arguments 列出数据库中可用的过程和函数的参数。视图结构与all_arguments 结 构相同。 dba_col_comments 在 数 据 库 中 所 有 表 和 视 图 的 列 上 显 示 注 释。 视 图 结 构 与all_col_comments 相同。 dba_col_privs 所有列级权限。与all_col_privs 视图结构相同。 见续表 283 第 3 章 静态数据词典视图 表 3.3.1 – 续表 目录名 用途 dba_cons_columns 描述约束中指定的数据库中的所有列。视图结构与all_cons_columns 相同。 dba_constraints 描述当前用户所拥有的表的所有约束定义。视图结构与all_constraints 相同。 dba_db_links 数据库中 dblink 外部链接的信息。视图结构与:ref:all_db_links 相 同。 DBA_DIRECTORIES 数据库目录信息。视图结构与:ref:all_directories 相同。 dba_free_space 数据库中每个表空间的可用空间。 dba_ind_columns 数据库中所有建有索引的列的信息。视图结构与all_ind_columns 相 同。 dba_indexes 数据库中所有索引的信息。视图结构与all_indexes 相同。 dba_objects 当前用户下可以查看的所有对象。 dba_part_tables 显示数据库内所有分区表,其字段与all_part_tables 相同。 dba_role_privs 授予所有用户的角色以及数据库中的角色。 dba_roles 列出数据库中存在的所有角色。 dba_sequences 数据库中所有的序列。视图结构与all_sequences 相同。 dba_source 描述数据库中所有存储对象的文本源。视图结构与all_source 相同。 dba_synonyms 数据库中所有同义词的信息。视图结构与all_synonyms 相同。 dba_tab_cols 描述当前所在数据库中,所有的表、视图的列信息。 dba_tab_columns 描述当前所在数据库中,所有的表、视图的非隐藏列信息。 dba_tab_comments 显示数据库中所有表和视图的注释。视图结构与all_tab_comments 相 同。 dba_tab_partitions 显示 DBA 所拥有的所有分区。视图结构与all_tab_partitions 相同。 dba_tab_privs 描述数据库中的所有对象授予。视图结构与all_tab_privs 相同。 dba_tables 当前数据库中的所有表。 dba_tablespace 描述数据库中的表空间。视图结构与dba_tablespaces 相同。 见续表 284 第 3 章 静态数据词典视图 表 3.3.1 – 续表 目录名 用途 dba_tablespaces 描述数据库中的所有表空间。 dba_trigger_cols 数据库中所有触发器的列。视图结构与all_trigger_cols 相同。 dba_triggers 数据库中所有的触发器。视图结构与all_triggers 相同。 dba_types 描述当前数据库所有的对象类型。视图结构与all_types 相同。 dba_users 数据库中所有用户的信息。 dba_views 当前用户的所有视图的信息。视图结构与all_views 的区别只是没有 OWNER 列。 user_all_tables 描述当前用户拥有的对象表和关系表。视图结构与all_all_tables 相 同。 user_arguments 描述当前用户拥有的过程和函数的参数。视图结构与all_arguments 的 区别只是没有 OWNER 列。 user_col_comments 在 当 前 用 户 拥 有 的 表 和 视 图 的 列 上 注 释。 视 图 结 构 与all_col_comments 的区别只是没有 OWNER 列。 user_col_privs 当前用户下的列级权限表。与all_col_privs 视图结构相同。 user_cons_columns 描 述 当 前 用 户 拥 有 并 在 约 束 中 指 定 的 列。 视 图 结 构 与all_cons_columns 相同。 user_constraints 描述当前用户所拥有的表的所有约束定义。视图结构与all_constraints 相同。 user_db_links 当前用户拥有的 dblink 信息。视图结构与all_db_links 相同。 user_directories 当前用户可访问的数据库目录信息。视图结构与all_directories 相同。 user_free_space 描 述 当 前 用 户 可 访 问 的 表 空 间 中 的 自 由 扩 展 区。 其 列 与dba_free_space 中的列相同。 user_ind_columns 数据库中所有建有索引的列的信息。视图结构与all_ind_columns 相 同。 user_indexes 当前用户拥有的所有索引信息。视图结构与all_indexes 相同 user_objects 当前用户的所有对象的信息。 user_part_tables 显示当前用户所拥有的所有分区表,除了不显示 owner 字段,其他字 段与all_part_tables 相同。 见续表 285 第 3 章 静态数据词典视图 表 3.3.1 – 续表 目录名 用途 user_role_privs 描述授予当前用户的角色。 user_sequences 当前用户的所有序列的信息。视图结构与all_sequences 相同。 user_source 当前用户的所有程序源的信息。视图结构与all_source 相同。 user_synonyms 数据库中用户所有同义词的信息。视图结构与all_synonyms 相同。 user_tab_cols 描述了当前用户可以访问的表,视图的列。视图结构与dba_tab_cols 的区别只是没有 OWNER 列。 user_tab_columns 数据库中所有表列的信息。视图结构与dba_tab_columns 的区别只是 没有 OWNER 列。 user_tab_comments 当前用户拥有的表和视图上的注释。视图结构与all_tab_comments 的 区别只是没有 OWNER 列。 user_tab_partitions 显示当前用户所拥有及能访问到的所有分区,除了无 table_owner 字 段,其他字段与all_tab_partitions 相同。 user_tab_privs 描述当前用户的对象权限,该用户可以是对象的所有者、授予者或者 被授予者。视图结构与dba_tab_privs 相同。 user_table_cols 当前用户可访问的表的所有列信息,包括隐藏列和虚拟列。 user_tables 当前用户的所有表的信息。与all_tables 的视图结构的区别只是没有 OWNER 列。 user_tablespace 描 述 当 前 用 户 可 访 问 的 表 空 间。 其 列 (除 外 PLUGGED_IN) 与dba_tablespace 相同。 user_tablespaces 描 述 当 前 用 户 可 访 问 的 表 空 间。 其 列 (除 外 PLUGGED_IN) 与dba_tablespaces 相同。 user_trigger_cols 当前用户用的所有触发器的列信息。视图结构与all_trigger_cols 相 同。 user_triggers 当前用户的所有触发器的信息。视图结构与all_triggers 的区别只是没 有 OWNER 列。 user_types 描述当前用户可访问的对象类型。视图结构与all_types 的区别只是没 有 OWNER 列。 user_users 描述当前用户可见的数据库的所有用户信息。 见续表 286 第 3 章 静态数据词典视图 表 3.3.1 – 续表 目录名 用途 user_views 当前用户的所有视图的信息。视图结构与all_views 相同。 V$CONTEXT 描述当前会话中 context 的属性值。 V$DATABASE 描述当前数据库信息。 V$INSTANCE 描述当前实例信息。 V$LOCK 列出了数据库当前持有的锁以及对锁的未完成请求。 V$LOCKED_OBJECT 描述当前被锁定的对象。 V$PARAMETER 列出影响当前会话的初始化参数信息。 V$SESSION 描述当前会话信息。 V$SYSSTAT 描述当前系统统计信息。 recyclebin 描述当前库下处于回收站中的对象信息和被删除的时间。 3.3.1 all_all_tables 描述当前用户可以访问的对象表和关系表。 表 3.3.2: ALL_ALL_TABLES 列 名称 类型 OWNER CHARACTER 描述 VARYING(128 表的属主。 VARYING(128 表名。 VARYING(30 表空间名。 VARYING(128 cluster 名字。 VARYING(128 索引结构表的名字。 BYTE) TABLE_NAME CHARACTER BYTE) TABLESPACE_NAME CHARACTER BYTE) CLUSTER_NAME CHARACTER BYTE) IOT_NAME CHARACTER BYTE) 见续表 287 第 3 章 静态数据词典视图 表 3.3.2 – 续表 名称 类型 STATUS CHARACTER 描述 VARYING(8 表的状态。 BYTE) PCT_FREE NUMERIC 块中空闲空间的最小百分率。 PCT_USED NUMERIC 块中已使用空间的最小百分率。 INI_TRANS NUMERIC 事务数的初始化大小。 MAX_TRANS NUMERIC 最大事务数。 INITIAL_EXTENT NUMERIC 初始化的大小。 NEXT_EXTENT NUMERIC 扩展的大小。 MIN_EXTENTS NUMERIC 段中允许扩展的最小值。 MAX_EXTENTS NUMERIC 段中允许扩展的最大值。 PCT_INCREASE NUMERIC 扩展时增加的百分率。 FREELISTS NUMERIC 空闲的进程数权限。 FREELIST_GROUPS NUMERIC 空闲列表的群数。 LOGGING CHARACTER VARYING(3 表示表上的修改是否记录。 VARYING(1 权限该表从上次修改到现在是否做 BYTE) BACKED_UP CHARACTER BYTE) 了备份 NUM_ROWS NUMERIC 表的行数。 BLOCKS NUMERIC 已使用的数据块数。 EMPTY_BLOCKS NUMERIC 空闲的数据块数。 AVG_SPACE NUMERIC 平均的空闲空间数。 CHAIN_CNT NUMERIC 表中跨数据块的行数。 AVG_ROW_LEN NUMERIC 平均一行的数据长度。 AVG_SPACE_FREELIST_BLOCKS NUMERIC 一个空闲列表中的所有数据块的平 均空闲值。 NUM_FREELIST_BLOCKS NUMERIC 空闲列表中的数据块数。 见续表 288 第 3 章 静态数据词典视图 表 3.3.2 – 续表 名称 类型 DEGREE CHARACTER 描述 VARYING(10 扫描表时一个实例中的线程数。 VARYING(10 扫描表时的实例数。 VARYING(5 该表是否在缓存 CACHE 中。 VARYING(8 该表是否被锁住。 BYTE) INSTANCES CHARACTER BYTE) CACHE CHARACTER BYTE) TABLE_LOCK CHARACTER BYTE) SAMPLE_SIZE NUMERIC 分析表时的采样率。 LAST_ANALYZED DATE 最近一次 ANALYZE 的时间。 PARTITIONED CHARACTER VARYING(3 该表是否是分区表。 VARYING(12 索引组织表的类型。 VARYING(16 对象类型。 VARYING(128 表类型属主。 VARYING(128 表类型。 BYTE) IOT_TYPE CHARACTER BYTE) OBJECT_ID_TYPE CHARACTER BYTE) TABLE_TYPE_OWNER CHARACTER BYTE) TABLE_TYPE CHARACTER BYTE) TEMPORARY CHARACTER VARYING(1 该数据是否为临时表。 VARYING(1 该对象是否是其他方法生成的二级 BYTE) SECONDARY CHARACTER 对象。 BYTE) NESTED CHARACTER VARYING(3 该表是否是嵌套的。 VARYING(7 该对象的缺省的缓冲区。 BYTE) BUFFER_POOL CHARACTER BYTE) 见续表 289 第 3 章 静态数据词典视图 表 3.3.2 – 续表 名称 类型 FLASH_CACHE CHARACTER 描述 VARYING(7 表数据块使用的数据库缓存提示。 VARYING(7 表数据块使用的数据库闪存单元缓 BYTE) CELL_FLASH_CACHE CHARACTER 存提示。 BYTE) ROW_MOVEMENT CHARACTER VARYING(8 分区表的行是否允许移动。 VARYING(3 收集统计信息或者增量维护则为 BYTE) GLOBAL_STATS CHARACTER ‘YES’,否则为‘NO’。 BYTE) USER_STATS CHARACTER VARYING(3 用户的状态。 VARYING(15 临时表的存在时间。 VARYING(8 在索引扫描时是否忽略块标记中 BYTE) DURATION CHARACTER BYTE) SKIP_CORRUPT CHARACTER 断。 BYTE) MONITORING CHARACTER VARYING(3 该表是否设置了监控属性。 BYTE) CLUSTER_OWNER CHARACTER VARYING(128 cluster 的属主。 BYTE) DEPENDENCIES CHARACTER VARYING(8 行级依赖跟踪是否可用。 VARYING(8 该表是否压缩。 VARYING(30 哪种操作默认压缩。 VARYING(3 该表是否被删除。 VARYING(3 段是否已经创建。 VARYING(8 表是否使用内存列存储。 BYTE) COMPRESSION CHARACTER BYTE) COMPRESS_FOR CHARACTER BYTE) DROPPED CHARACTER BYTE) SEGMENT_CREATED CHARACTER BYTE) INMEMORY CHARACTER BYTE) 见续表 290 第 3 章 静态数据词典视图 表 3.3.2 – 续表 名称 类型 INMEMORY_PRIORITY CHARACTER 描述 VARYING(8 表在内存列存储中的填充优先级。 VARYING(15 表在内存列存储分布方式。 VARYING(17 内存存储压缩等级。 VARYING(13 内存列存储重复设置方式。 VARYING(3 是否为外部表。 VARYING(3 是否为混合分区。 VARYING(24 闪存单元列压缩取值。 VARYING(12 内存列存储在不同实例中存放方 BYTE) INMEMORY_DISTRIBUTE CHARACTER BYTE) INMEMORY_COMPRESSION CHARACTER BYTE) INMEMORY_DUPLICATE CHARACTER BYTE) EXTERNAL CHARACTER BYTE) HYBRID CHARACTER BYTE) CELLMEMORY CHARACTER BYTE) INMEMORY_SERVICE CHARACTER 式。 BYTE) INMEMORY_SERVICE_NAME CHARACTER VARYING(1000 内存列存储名称。 BYTE) MEMOPTIMIZE_READ CHARACTER VARYING(8 是否使用基于快速键访问。 VARYING(8 仅内部使用。 VARYING(3 是否有敏感列。 VARYING(8 是否使用逻辑复制。 BYTE) MEMOPTIMIZE_WRITE CHARACTER BYTE) HAS_SENSITIVE_COLUMN CHARACTER BYTE) LOGICAL_REPLICATION CHARACTER BYTE) 3.3.2 all_arguments ALL_ARGUMENTS 视图列出了当前用户可以访问的过程和函数的参数。 291 第 3 章 静态数据词典视图 表 3.3.3: ALL_ARGUMENTS 列 名称 类型 描述 OWNER VARCHAR 对象所有者 PACKAGE_NAME VARCHAR 包名称 OBJECT_NAME VARCHAR 对象名称 OBJECT_ID OID 对象编号 POSITION VARCHAR 参数位置 ARGUMENT_NAME INTEGER 参数名称 IN_OUT VARCHAR 参数 IN OUT 类型 TYPE_NAME VARCHAR 参数类型名称 OVERLOAD VARCHAR 保留列 SUBPROGRAM_ID INTEGER 保留列 SEQUENCE INTEGER 参数序列 DATA_LEVEL INTEGER 保留列 DATA_TYPE VARCHAR 数据类型 DATA_LENGTH INTEGER 数据长度 DEFAULTED VARCHAR (包除外)是否含默认值 DEFAULT_VALUE TEXT 保留列 DEFAULT_LENGTH INTEGER 保留列 DATA_PRECISION INTEGER 十进制或者二进制表示的长度 DATA_SCALE INTEGER 保留列 RADIX INTEGER 数字的参数基数 CHARACTER_SET_NAME VARCHAR 保留列 TYPE_OWNER VARCHAR 类型所有者 TYPE_SUBNAME VARCHAR 保留列 TYPE_LINK VARCHAR 保留列 见续表 292 第 3 章 静态数据词典视图 表 3.3.3 – 续表 名称 类型 描述 TYPE_OBJECT_TYPE VARCHAR 保留列 PLS_TYPE VARCHAR 保留列 CHAR_LENGTH INTEGER 保留列 CHAR_USED VARCHAR BYTE 参数或 CHAR 类型参数 ORIGIN_CON_ID INTEGER 数据来源的容器的 ID。 3.3.3 all_col_comments 描述当前用户可访问的所有序列。 表 3.3.4: ALL_COL_COMMENTS 列 名称 类型 描述 OWNER CHARACTER VARYING(63 BYTE) 对象的所有者。 TABLE_NAME CHARACTER VARYING(63 BYTE) 表的名称。 COLUMN_NAME CHARACTER VARYING(63 BYTE) 列名。 COMMENTS CHARACTER VARYING(4000 CHAR) 列注释。 3.3.4 all_col_privs 当前用户下可以查看的所有列级权限,既包括user_col_privs 中的内容,同时也包含 GRANTEE 是当前角色的 列级权限。 表 3.3.5: ALL_COL_PRIVS 列 名称 类型 描述 GRANTOR character varying(63BYTE)) 授权者。 OWNER character varying(63BYTE)) 属主。 GRANTEE character varying(63BYTE)) 被授权者。 见续表 293 第 3 章 静态数据词典视图 表 3.3.5 – 续表 名称 类型 描述 TABLE_CATALOG character varying(63BYTE)) 数据库名。 TABLE_SCHEMA character varying(63BYTE)) 模式名。 TABLE_NAME character varying(63BYTE)) 表名或者视图名。 COLUMN_NAME character varying(63BYTE)) 列名。 PRIVILEGE_TYPE character varying(40BYTE)) 权限。 IS_GRANTABLE character varying(63BYTE)) 是否具有可将该权限授予其他对象的权限。 3.3.5 all_cons_columns 描述当前用户可访问的所有约束的列。 表 3.3.6: ALL_CONS_COLUMNS 列 名称 类型 描述 OWNER CHARACTER VARYING(63BYTE) 约束定义的所有者。 CONSTRAINT_NAME CHARACTER VARYING(63BYTE) 约束定义的名称。 TABLE_NAME CHARACTER VARYING(63BYTE) 约束定义的表名。 COLUMN_NAME VARCHAR2(4000CHAR) 约束定义中指定的列名称或对象类型列的属性。 POSITION NUMERIC 列或属性在对象定义中的原始位置。 3.3.6 all_constraints 描述当前用户可以访问的表上的约束定义。 294 第 3 章 静态数据词典视图 表 3.3.7: ALL_CONSTRAINTS 列 名称 类型 OWNER CHARACTER 描述 VARYING(63 约束的所有者。 VARYING(63 约束的名字。 VARYING(1 约束的类型。 VARYING(63 与约束相关的表。 BYTE) CONSTRAINT_NAME CHARACTER BYTE) CONSTRAINT_TYPE CHARACTER BYTE) TABLE_NAME CHARACTER BYTE) SEARCH_CONDITION TEXT R_OWNER CHARACTER 检查约束的条件。 VARYING(63 有者。 BYTE) R_CONSTRAINT_NAME CHARACTER 一个参照完整性约束所引用表的所 VARYING(63 所引用表的约束定义名称。 VARYING(9 参照完整性约束的删除规则。 VARYING(8 约束的状态。 VARYING(14 定义约束是否为可延迟操作。 VARYING(9 指定约束是否已经被设置为延迟操 BYTE) DELETE_RULE CHARACTER BYTE) STATUS CHARACTER BYTE) DEFERRABLE CCHARACTER CHAR) DEFERRED CHARACTER 作。 CHAR) VALIDATED CHARACTER VARYING(13 是否所有数据都遵循约束。 VARYING(14 是否约束的名字由用户或者系统生 BYTE) GENERATED CHARACTER 成。 BYTE) BAD CHARACTER VARYING(3 标志是否为两位模糊的年份格式。 VARYING(4 是否是一个可用的约束。 CHAR) RELY CHARACTER CHAR) 见续表 295 第 3 章 静态数据词典视图 表 3.3.7 – 续表 名称 类型 描述 LAST_CHANGE TIMESTAMP(0) WITHOUT TIME 当前约束的最后启用或禁用的时 ZONE 间。 INDEX_OWNER CHARACTER VARYING(63 索引所有者的用户名。 VARYING(63 索引的名称。 VARYING(7B 是否约束被置为无效。 VARYING(14 视图上的约束是否含有依赖关系。 BYTE) INDEX_NAME CHARACTER BYTE) INVALID CHARACTER YTE) VIEW_RELATED CHARACTER BYTE) 3.3.7 all_db_links 描述数据库 dblink 的信息, 视图结构与dba_db_links 相同。 表 3.3.8: ALL_DB_LINKS 列 名称 类型 描述 OWNER VARCHAR DBLINK 的属主 DB_LINK NAME DBLINK 名称 USERNAME VARCHAR DBLINK 连接用户名 HOST VARCHAR DBLINK 连接 IP 地址 CREATED TIMESTAMP WITH TIME ZONE DBLINK 创建时间 3.3.8 all_directories 描述数据库目录的信息, 视图结构与DBA_DIRECTORIES 相同。 296 第 3 章 静态数据词典视图 表 3.3.9: ALL_DIRECTORIES 列 名称 类型 描述 OWNER CHARACTER VARYING(63 BYTE) 目录的属主 DIRECTORY_NAME CHARACTER VARYING(63 BYTE) 目录名称 DIRECTORY_PATH CHARACTER VARYING(1023 BYTE) 目录路径 ORIGIN_CON_ID CHARACTER VARYING(63 BYTE) 默认置 0 3.3.9 all_ind_columns 描述当前用户所能获取到的表上建有索引的列信息。 表 3.3.10: ALL_IND_COLUMNS 列 名称 类型 描述 INDEX_OWNER CHARACTER VARYING(63 索引的所有者。 BYTE) INDEX_NAME CHARACTER VARYING(63 索引的名字。 BYTE) TABLE_OWNER CHARACTER VARYING(63 该索引所属对象的所有者。 BYTE) TABLE_NAME CHARACTER VARYING(63 该索引所属对象的名字。 BYTE) COLUMN_NAME CHARACTER VARY- 含有索引的列的名字。 ING(4000 CHAR) COLUMN_POSITION SMALLINT 列在索引中的位置。比如在 (col2, col1) 上建有 索引,那么 col2 的这一列的值是 1,col1 为 2 COLUMN_LENGTH NUMERIC 本列显示了索引所在的列的数据类型的长 度, 以 byte 为 单 位 (如 果 是 以 单 位 的 字 符 串, 那 么 是 char 为 NULL;numeric/ number 类型的话,该值为 0,此时建议与 ALL_TAB_COLUMNS 组合使用)。 见续表 297 第 3 章 静态数据词典视图 表 3.3.10 – 续表 名称 类型 描述 CHAR_LENGTH NUMERIC 显示了所有以 char 为单位的字符串的长度,其 他类型为 NULL。 DESCEND CHARACTER VARYING(4 索引是升序(ASC)还是降序(DESC)的。 CHAR) 3.3.10 all_indexes 描述当前用户所能获取到的表上的索引信息。 表 3.3.11: ALL_INDEXES 列 名称 类型 OWNER CHARACTER 描述 VARYING(63 索引的所有者。 VARYING(63 索引的名字。 VARYING(63 索引的类型。 VARYING(63 该索引所属对象的所有者。 VARYING(63 该索引所属对象的名字。 BYTE) INDEX_NAME CHARACTER BYTE) INDEX_TYPE CHARACTER BYTE) TABLE_OWNER CHARACTER BYTE) TABLE_NAME CHARACTER BYTE) TABLE_TYPE TEXT UNIQUENESS CHARACTER 该索引所属对象的类型。 VARYING(9 引。 CHAR) COMPRESSION CHARACTER 该索引是唯一索引或者非唯一索 VARYING(8 是否启用压缩索引。 CHAR) PREFIX_LENGTH NUMERIC TABLESPACE_NAME CHARACTER 压缩键的前缀的长度。 VARYING(63 索引所在表空间的名字。 BYTE) 见续表 298 第 3 章 静态数据词典视图 表 3.3.11 – 续表 名称 类型 INI_TRANS CHARACTER 描述 VARYING(7 事务的初始值。 VARYING(7 事务的最大值。 VARYING(7 块的初始块的大小。 VARYING(7 递增块大小。 VARYING(7 在块中允许的最小扩展的数量。 VARYING(7 在块中允许最大扩展的数量。 VARYING(7 增量的百分比。 VARYING(7 阈值的百分比。 VARYING(7 包含的列。 VARYING(7 分配空间的 freelists 的进程号。 VARYING(7 分配空间的 freelists 的组号。 VARYING(7 在一个块中,释放空间的最低百 CHAR) MAX_TRANS CHARACTER CHAR) INITIAL_EXTENT CHARACTER CHAR) NEXT_EXTENT CHARACTER CHAR) MIN_EXTENTS CHARACTER CHAR) MAX_EXTENTS CHARACTER CHAR) PCT_INCREASE CHARACTER CHAR) PCT_THRESHOLD CHARACTER CHAR) INCLUDE_COLUMN CHARACTER CHAR) FREELISTS CHARACTER CHAR) FREELIST_GROUPS CHARACTER CHAR) PCT_FREE CHARACTER 分比。 CHAR) LOGGING CHARACTER VARYING(7 日志信息。 VARYING(7 深度的索引从根到叶子遍历。 VARYING(7 索引中叶子的块数。 CHAR) BLEVEL CHARACTER CHAR) LEAF_BLOCKS CHARACTER CHAR) 见续表 299 第 3 章 静态数据词典视图 表 3.3.11 – 续表 名称 类型 DISTINCT_KEYS CHARACTER 描述 VARYING(7 DISTINCT 键值。 VARYING(7 平均数。 VARYING(7 数据块的平均数。 VARYING(7 基本表上索引的行数。 VARYING(8 表示一个没有分区索引是有效的 CHAR) AVG_LEAF_BLOCKS_PER_KEY CHARACTER CHAR) AVG_DATA_BLOCKS_PER_KEY CHARACTER CHAR) CLUSTERING_FACTOR CHARACTER CHAR) STATUS CHARACTER 或无效的。 CHAR) NUM_ROWS CHARACTER VARYING(7 索引所在行数。 VARYING(7 索引分析所使用的遍历大小。 VARYING(20 在这个索引上最接近分析的数据 CHAR) SAMPLE_SIZE CHARACTER CHAR) LAST_ANALYZED CHARACTER 号。 CHAR) DEGREE CHARACTER VARYING(40 数。 CHAR) INSTANCES CHARACTER 扫描 索 引时, 每 个 实例 的 线 程 VARYING(40 扫描索引时,实例数。 VARYING(3 是否是分区索引。 VARYING(1 索引所在的表是否是临时表。 VARYING(1 索引的名称是否是系统生成的。 VARYING(1 索引是否是次要对象。 VARYING(7 被用于索引块的默认缓冲池的名 CHAR) PARTITIONED CHARACTER CHAR) TEMPORARY CHARACTER CHAR) GENERATED CHARACTER CHAR) SECONDARY CHARACTER CHAR) BUFFER_POOL CHARACTER CHAR) 称。 见续表 300 第 3 章 静态数据词典视图 表 3.3.11 – 续表 名称 类型 USER_STATS CHARACTER 描述 VARYING(3 统计数据是否由用户输入。 VARYING(15 表示一个临时表的持续时间。 VARYING(7 对于在一个索引组织表的辅助索 CHAR) DURATION CHARACTER CHAR) PCT_DIRECT_ACCESS CHARACTER 引,在估计有效的行的百分比。 CHAR) ITYP_OWNER CHARACTER VARYING(63 者。 CHAR) ITYP_NAME PARAMETERS CHARACTER 一个 索 引的 区 域, 类型 的 所 有 VARYING(63 一个 索 引的 区 域, 名称 的 所 有 CHAR) 者。 CHARACTER VARYING(1000 一个索引的区域,参数字符串。 CHAR) GLOBAL_STATS CHARACTER VARYING(3 为一个整体索引。 CHAR) DOMIDX_STATUS CHARACTER 是否通过分析收集的统计数据作 VARYING(12 索引范围的状态。 VARYING(6 索引范围的操作状态。 VARYING(8 函数索引的状态。 CHAR) DOMIDX_OPSTATUS CHARACTER CHAR) FUNCIDX_STATUS CHARACTER CHAR) JOIN_INDEX TEXT 索引是否是联合索引。 IOT_REDUNDANT_PKEY_ELIM TEXT 索引是否有多余的主键从索引组 织表的辅助索引中被消除。 DROPPED TEXT 索引是否已经被删除并且已经在 回收站。 3.3.11 all_objects 当前用户下可以查看的所有对象。 301 第 3 章 静态数据词典视图 表 3.3.12: ALL_OBJECTS 列 名称 类型 描述 OWNER CHARACTER VARYING(63 BYTE) 对象的属主。 OBJECT_NAME CHARACTER VARYING(63 BYTE) 对象名。 SUBOBJECT_NAME CHARACTER VARYING(63 BYTE) 子对象名,目前值为 NULL。 OBJECT_ID NUMERIC(38,0) 对象的 OID。 DATA_OBJECT_ID NUMERIC(38,0) 保留字段。 OBJECT_TYPE CHARACTER VARYING(19 BYTE) 对象的类型。 CREATED DATE 对象创建的时间,目前值为 NULL。 LAST_DDL_TIME DATE 对象最近一次的修改时间。目前值为 NULL。 TIMESTAMP CHARACTER VARYING(20 BYTE) 该对象的说明定义的时间。 STATUS CHARACTER VARYING(7 BYTE) 对象的状态。 TEMPORARY CHARACTER VARYING(1 BYTE) 该对象是否是临时的。 GENERATED CHARACTER VARYING(1 BYTE) 对象名是否是系统生成的。 SECONDARY CHARACTER VARYING(1 BYTE) 该对象是否是其他方法生成的二级对象。 NAMESPACE NUMERIC(38,0) 对象的模式名。 3.3.12 all_part_tables 显示当前用户所拥有及能访问到的所有分区表,其字段与dba_part_tables 相同。 表 3.3.13: ALL_PART_TABLES 列 列名 数据类型 功能描述 OWNER VARCHAR2(128) 创建分区表的用户 TABLE_NAME VARCHAR2(128) 显示数据库中分区表的名称(只支持声明式分 区表,不支持继承式分区表) PARTITIONING_TYPE VARCHAR2(9) 分区表的分区策略,包含:- RANGE:范围分 区 - HASH:哈希分区 - LIST:列表分区 见续表 302 第 3 章 静态数据词典视图 表 3.3.13 – 续表 列名 数据类型 功能描述 SUBPARTITIONING_TYPE VARCHAR2(9) 子分区分区策略,支持:- RANGE:范围分 区 - HASH:哈希分区 - LIST:列表分区 NONE:分区表没有声明子分区(当使用 pg 语 法创建分区时,此字段显示为 NONE。) PARTITION_COUNT NUMBER 显示表分区的分区数量,对于 interval 分区表, 此列数值始终为 1048575。 DEF_SUBPARTITION_COUNTNUMBER 使用声明式分区时在语句中显式指定的子分区 数量,(例如哈希分区和模板分区)。 PARTITIONING_KEY_COUNTNUMBER 分区键所包含的列的数量 SUBPARTITIONING_KEY_COUNT NUMBER 子分区键所包含的列的数量 STATUS VARCHAR2(8) 固定置 valid DEF_TABLESPACE_NAME VARCHAR2(30) 固定置 sys_default DEF_PCT_FREE NUMBER 固定置 NULL DEF_PCT_USED NUMBER 固定置 NULL DEF_INI_TRANS NUMBER 固定置 NULL DEF_MAX_TRANS NUMBER 固定置 NULL DEF_INITIAL_EXTENT VARCHAR2(40) 固定置 DEFAULT DEF_NEXT_EXTENT VARCHAR2(40) 固定置 DEFAULT DEF_MIN_EXTENTS VARCHAR2(40) 固定置 DEFAULT DEF_MAX_EXTENTS VARCHAR2(40) 固定置 DEFAULT DEF_PCT_INCREASE VARCHAR2(40) 固定置 DEFAULT DEF_FREELISTS NUMBER 固定置 NULL DEF_FREELIST_GROUPS NUMBER 固定置 NULL DEF_LOGGING VARCHAR2(7) 固定置 YES DEF_COMPRESSION VARCHAR2(8) 固定置 DISABLED DEF_BUFFER_POOL VARCHAR2(7) 固定置 DEFAULT 303 第 3 章 静态数据词典视图 3.3.13 all_sequences 描述当前用户可访问的所有序列。 表 3.3.14: ALL_SEQUENCES 列 名称 类型 描述 SEQUENCE_OWNER CHARACTER VARYING(63 序列所有者的名称。 BYTE) SEQUENCE_NAME CHARACTER VARYING(63 序列名称。 BYTE) MIN_VALUE NUMBER 序列的最小值。 MAX_VALUE NUMBER 序列的最大值。 INCREMENT_BY NUMBER 序列的步长。 CYCLE_FLAG VARCHAR2(1) 序列是否在达到极限时回绕。 ORDER_FLAG VARCHAR2(1) 是否按顺序生成序列号。 CACHE_SIZE NUMBER 要缓存的序列号数。 LAST_NUMBER NUMBER 最后写入磁盘的序列号。如果序列使用缓存, 则写入磁盘的数字是序列缓存中的最后一个 数字。该数字可能大于所使用的最后一个序列 号。 START_VALUE 序列起始值。 BIGINT 3.3.14 all_source 描述当前用户可访问的存储对象的文本源。 表 3.3.15: ALL_SOURCE 列 名称 类型 描述 OWNER CHARACTER VARYING(63 对象所有者。 BYTE) 见续表 304 第 3 章 静态数据词典视图 表 3.3.15 – 续表 名称 类型 描述 NAME CHARACTER VARYING(63 对象名称。 BYTE) TYPE TEXT CHARACTER VARYING(12 对 象 类 型:FUNCTION,PROCEDURE, BYTE) AGGREGATE,WINDOW。 CLOB 存储对象的文本源。 3.3.15 all_synonyms 描述当前用户所能查看的同义词信息。包括: 1. 当前用户的私有同义词。 2. 所有的 public 同义词。 3. 本地同义词(DB_LINK 列为空)所指向,或者嵌套指向的对象,当前用户有权限查看。 对于指向远程数据库对象的同义词,及一些指向非法对象的同义词,它们指向对象的属主 (TABLE_OWNER) 为空。 表 3.3.16: all_synonyms 列 名称 类型 OWNER CHARACTER 描述 VARYING(63 同义词的所有者。 VARYING(63 同义词所在的模式的名称。 VARYING(63 同义词的名字。 VARYING(63 同义词指向对象的所有者。 VARYING(63 同义词指向对象所在的模式。 VARYING(63 同义词指向对象的名字。 CHAR) SYNONYM_NAMESPACE_NAME CHARACTER BYTE) SYNONYM_NAME CHARACTER BYTE) TABLE_OWNER CHARACTER BYTE) TABLE_NAMESPACE_OWNER CHARACTER BYTE) TABLE_NAME CHARACTER CHAR) 见续表 305 第 3 章 静态数据词典视图 表 3.3.16 – 续表 名称 类型 描述 DB_LINK TEXT 同义词所使用的数据库链接(如果 存在)。 3.3.16 all_tab_cols 描述了当前用户可以访问的表,视图的列。视图结构与dba_tab_cols 相同。 3.3.17 all_tab_columns 描述了当前用户可以访问的表,视图的非隐藏列。视图结构与dba_tab_columns 相同. 3.3.18 all_tab_comments 在当前用户可以访问的表和视图上显示注释。 表 3.3.17: ALL_TAB_COMMENTS 列 名称 类型 描述 OWNER CHARACTER VARYING(63 BYTE) 对象所有者。 TABLE_NAME CHARACTER VARYING(63 BYTE) 对象名称。 TABLE_TYPE CHARACTER VARYING(11 BYTE) 对象类型。 COMMENTS CHARACTER VARYING(4000 CHAR) 对象的注释。 3.3.19 all_tab_partitions 显示当前用户所拥有的所有分区,字段与dba_tab_partitions 相同。 表 3.3.18: ALL_TAB_PARTITIONS 列 列名 数据类型 功能描述 TABLE_OWNER VARCHAR2(128) 表用户 见续表 306 第 3 章 静态数据词典视图 表 3.3.18 – 续表 列名 数据类型 功能描述 TABLE_NAME VARCHAR2(128) 表名 COMPOSITE VARCHAR2(3) 分区表是否声明子分区 - YES: 声明子分区 NO: 未声明子分区(当使用 pg 语法创建多级子 分区时,此字段返回 NO。) PARTITION_NAME VARCHAR2(128) 分区名。与 oracle 不同的是,oracle 只显示分 区名,KES 中会以“表名 _ 分区名”的格式进 行显示。 SUBPARTITION_COUNT NUMBER 如果声明了子分区,返回子分区数量,否则返 回 0。当使用 pg 语法创建多级子分区时,此字 段返回 0。 HIGH_VALUE LONG 分区边界的表达式(适用于 RANGE 和 LIST 分区),哈希分区此列为 NULL。与 oracle 不 同的是,KES 在此列显示时会在表达式外添加 小括号“()”,oracle 在表达式外不显示小括 号。 HIGH_VALUE_LENGTH NUMBER 分区边界表达式的长度。(由于 KES 添加了括 号,会比 ORACLE 对应的值大 2) PARTITION_POSITION NUMBER 分区在表中的索引,根据 HIGH_VALUE 的字 符顺序,从 1 开始计数。此处与 Oracle 不同, Oracle 中按照表达式声明的顺序排序。 TABLESPACE_NAME VARCHAR2(30) 分 区 所 在 表 空 间, 未 指 定 时 默 认 为 sys_default。 PCT_FREE NUMBER 固定置 NULL PCT_USED NUMBER 固定置 NULL INI_TRANS NUMBER 固定置 NULL MAX_TRANS NUMBER 固定置 NULL INITIAL_EXTENT NUMBER 固定置 NULL NEXT_EXTENT NUMBER 固定置 NULL MIN_EXTENT NUMBER 固定置 NULL 见续表 307 第 3 章 静态数据词典视图 表 3.3.18 – 续表 列名 数据类型 功能描述 MAX_EXTENT NUMBER 固定置 NULL PCT_INCREASE NUMBER 固定置 NULL FREELISTS NUMBER 固定置 NULL FREELIST_GROUPS NUMBER 固定置 NULL LOGGING VARCHAR2(7) 固定置 YES COMPRESSION VARCHAR2(8) 固定置 DISABLED NUM_ROWS NUMBER 同 sys_class.reltuples(此列不实时更新) BLOCKS NUMBER 同 sys_class.relpages(此列不实时更新) EMPTY_BLOCKS NUMBER 固定置 NULL AVG_SPACE NUMBER 固定置 NULL CHAIN_CNT NUMBER 固定置 NULL AVG_ROW_LEN NUMBER 分区中每一行的平均存储长度 SAMPLE_SIZE NUMBER 固定置 NULL 3.3.20 all_tab_privs 描述当前用户对所有对象授予信息。 表 3.3.19: ALL_TAB_PRIVS 列 名称 类型 描述 GRANTEE CHARACTER VARYING(63 BYTE) 被授予权限的用户 OWNER CHARACTER VARYING(63 BYTE) 权限的拥有者 TABLE_NAME CHARACTER VARYING(63 BYTE) 表名 GRANTOR CHARACTER VARYING(63 BYTE) 被授予权限的用户 PRIVILEGE CHARACTER VARYING(40 CHAR) 权限类型 见续表 308 第 3 章 静态数据词典视图 表 3.3.19 – 续表 名称 类型 描述 GRANTABLE CHARACTER VARYING(3 BYTE) 是否可以转授权限 3.3.21 all_tables 当前用户下可以查看的所有表。 表 3.3.20: ALL_TABLES 列 名称 类型 OWNER CHARACTER 描述 VARYING(63 表的属主。 VARYING(63 表名。 VARYING(63 表空间名。 VARYING(63 CLUSTER 名字。 VARYING(63 索引结构表的名字。 VARYING(63 表的状态。 BYTE) TABLE_NAME CHARACTER BYTE) TABLESPACE_NAME CHARACTER BYTE) CLUSTER_NAME CHARACTER BYTE) IOT_NAME CHARACTER BYTE) STATUS CHARACTER BYTE) PCT_FREE INTEGER 块中空闲空间的最小百分率。 PCT_USED INTEGER 块中已使用空间的最小百分率。 INI_TRANS INTEGER 事务数的初始化大小。 MAX_TRANS INTEGER 最大事务数。 INITIAL_EXTENT INTEGER 初始化的大小。 NEXT_EXTENT INTEGER 扩展的大小。 MIN_EXTENTS INTEGER 段中允许扩展的最小值。 MAX_EXTENTS INTEGER 段中允许扩展的最大值。 见续表 309 第 3 章 静态数据词典视图 表 3.3.20 – 续表 名称 类型 描述 PCT_INCREASE INTEGER 扩展时增加的百分率。 FREELISTS INTEGER 空闲的进程数。 FREELIST_GROUPS INTEGER 空闲列表的群数。 LOGGING CHARACTER VARYING(3 LOGGING 属性。 VARYING(1 该表从上次修改到现在是否做了备 BYTE) BACKED_UP CHARACTER BYTE) 份。 NUM_ROWS INTEGER 表的行数。 BLOCKS INTEGER 已使用的数据块数。 EMPTY_BLOCKS INTEGER 空闲的数据块数。 AVG_SPACE INTEGER 平均的空闲空间数。 CHAIN_CNT INTEGER 表中跨数据块的行数。 AVG_ROW_LEN INTEGER 平均一行的数据长度。 一个空闲列表中的所有数据块的平 AVG_SPACE_FREELIST_BLOCKS INTEGER 均空闲值。 NUM_FREELIST_BLOCKS INTEGER DEGREE CHARACTER 空闲列表中的数据块数。 VARYING(10 扫描表时一个实例中的线程数。 VARYING(10 扫描表时的实例数。 VARYING(5 该表是否在缓存 CACHE 中。 VARYING(8 该表是否被锁住。 BYTE) INSTANCES CHARACTER BYTE) CACHE CHARACTER BYTE) TABLE_LOCK CHARACTER BYTE) SAMPLE_SIZE INTEGER 分析表时的采样率。 LAST_ANALYZED DATE 最近一次 ANALYZE 的时间。 见续表 310 第 3 章 静态数据词典视图 表 3.3.20 – 续表 名称 类型 PARTITIONED CHARACTER 描述 VARYING(3 该表是否是分区表。 VARYING(12 索引组织表的类型。 VARYING(1 该数据是否只有当前会话可见。 VARYING(1 该对象是否是其他方法生成的二级 BYTE) IOT_TYPE CHARACTER BYTE) TEMPORARY CHARACTER BYTE) SECONDARY CHARACTER 对象。 BYTE) NESTED CHARACTER VARYING(3 该表是否是嵌套的。 VARYING(7 该对象的缺省的缓冲区。 VARYING(8 分区表的行是否允许移动。 VARYING(3 分区表的统计信息。 VARYING(3 用户的状态。 VARYING(15 临时表的生存时间。 VARYING(8 在索引扫描时是否忽略块标记中 BYTE) BUFFER_POOL CHARACTER BYTE) ROW_MOVEMENT CHARACTER BYTE) GLOBAL_STATS CHARACTER BYTE) USER_STATS CHARACTER BYTE) DURATION CHARACTER BYTE) SKIP_CORRUPT CHARACTER 断。 BYTE) MONITORING CHARACTER VARYING(3 该表是否设置了监控属性。 VARYING(63 CLUSETR 的属主。 VARYING(8 行级依赖跟踪是否可用。 VARYING(8 该表是否压缩。 BYTE) CLUSTER_OWNER CHARACTER BYTE) DEPENDENCIES CHARACTER BYTE) COMPRESSION CHARACTER BYTE) 见续表 311 第 3 章 静态数据词典视图 表 3.3.20 – 续表 名称 类型 DROPPED CHARACTER 描述 VARYING(3 该表是否被删除。 BYTE) 3.3.22 all_trigger_cols 描述当前用户可访问的所有触发器的列。 表 3.3.21: ALL_TRIGGER_COLS 列 名称 类型 描述 TRIGGER_OWNER CHARACTER VARYING(63 BYTE) 触发器所有者的名称。 TRIGGER_NAME CHARACTER VARYING(63 BYTE) 触发器名称。 TABLE_OWNER CHARACTER VARYING(63 BYTE) 定义触发器的表的所有者。 TABLE_NAME CHARACTER VARYING(63 BYTE) 定义触发器的表。 COLUMN_NAME CHARACTER VARYING(4000 char) 触发器中使用的列的名称。 3.3.23 all_triggers 描述当前用户可访问的所有触发器。 表 3.3.22: ALL_TRIGGERS 列 名称 类型 描述 OWNER CHARACTER VARYING(63 BYTE) 触发器所有者的名称。 TRIGGER_NAME CHARACTER VARYING(63 BYTE) 触发器名称。 TRIGGER_TYPE CHARACTER VARYING(16 BYTE) 触发器的类型。 TRIGGERING_EVENT CHARACTER VARYING(216 BYTE) 触发触发器的 DML,DDL 或数据库事 件。 TABLE_OWNER CHARACTER VARYING(63 BYTE) 定义触发器的表的所有者。 见续表 312 第 3 章 静态数据词典视图 表 3.3.22 – 续表 名称 类型 描述 TABLE_NAME CHARACTER VARYING(63 BYTE) 如果触发器的基础对象类型为 SCHEMA 或 DATABASE,则此列为 NULL; 如 果触发器的基础对象类型为 TABLE 或 VIEW,则此列指示定义触发器的表/视 图名称。 BASE_OBJECT_TYPE CHARACTER VARYING(16 BYTE) 基本对象类型 COLUMN_NAME CHARACTER VARYING(4000 CHAR) 表列的名称。 REFERENCING_NAMES CHARACTER VARYING(422 BYTE) 引用的名称 DESCRIPTION CHARACTER VARYING(4000 CHAR) 描述。 STATUS VARCHAR2(8) 指示触发器是启用还是禁用。 TRIGGER_BODY TEXT 触发器触发时执行的语句。 3.3.24 all_types 描述当前用户可以访问的对象表和关系表。 313 第 3 章 静态数据词典视图 表 3.3.23: ALL_TYPES 列 名称 类型 描述 OWNER CHARACTER VARYING(128 BYTE) 类型的属主。 TYPE_NAME CHARACTER VARYING(128 BYTE) 类型的名字。 TYPE_OID OID 类型的 oid。 TYPECODE CHARACTER VARYING(128 BYTE) 类型的编码。 ATTRIBUTES NUMERIC 类型的属性个数。 METHODS NUMERIC 类型的方法个数。 PREDEFINED CHARACTER VARYING(3 BYTE) 类型是否为预定义。 INCOMPLETE CHARACTER VARYING(3 BYTE) 类型是否为不完整类型。 FINAL CHARACTER VARYING(3 BYTE) 类型是否为最终类型。 INSTANTIABLE CHARACTER VARYING(3 BYTE) 类型是否可实例化。 PERSISTABLE CHARACTER VARYING(3 BYTE) 类型是否可持久化。 SUPERTYPE_OWNER CHARACTER VARYING(128 BYTE) 父类型的属主。 SUPERTYPE_NAME CHARACTER VARYING(128 BYTE) 父类型的名称。 LOCAL_ATTRIBUTES NUMERIC 子类型不包含继承的属性个数。 LOCAL_METHODS NUMERIC 子类型不包含继承的方法个数。 TYPEID BYTEA 类型的 ID 值。 3.3.25 all_users 列出当前用户可见的数据库的所有用户。 表 3.3.24: ALL_USERS 列 名称 类型 描述 USERNAME CHARACTER VARYING(63 BYTE) 用户名。 USER_ID NUMBER 用户的 ID 号。 CREATED DATE 用户创建日期。 314 第 3 章 静态数据词典视图 3.3.26 all_views 描述当前用户所能查看的所有的视图信息。 表 3.3.25: ALL_VIEWS 列 名称 类型 描述 OWNER CHARACTER VARYING(63 视图的所有者。 BYTE) VIEW_NAME CHARACTER VARYING(63 视图的名字。 BYTE) TEXT_LENGTH NUMBER 生成视图的语句的长度。 TEXT TEXT 生成视图的语句。 TYPE_TEXT_LENGTH NUMBER 由该视图所形成的数据类型的名字长度。 TYPE_TEXT CHARACTER VARY- 由该视图形成的数据类型的名字。该类型的每 一个对象,其结构相当于视图中的每一个元组 ING(4000 CHAR) 的结构。 OID_TEXT_LENGTH 带有 OID 的指向临时对象的语句长度,为 NUMBER NULL。 OID_TEXT CHARACTER VARY- 带有 OID 的指向临时对象的语句,为 NULL。 ING(4000 CHAR) VIEW_TYPE_OWNER CHARACTER VARYING(63 由视图所形成的数据类型的所有者。 BYTE) VIEW_TYPE SUPERVIEW_NAME CHARACTER VARYING(63 由视图所形成的数据类型,如果它是一个类型 BYTE) 视图的话。解释详见 TYPE_TEXT。 CHARACTER VARYING(63 父视图,为 NULL。 BYTE) EDITIONING_VIEW CHARACTER VARYING(1 留待后用,目前为’N’。 VARYING(1 该视图是否是只读的(’Y’/’N’,’N’ 表示视图可 CHAR) READ_ONLY CHARACTER CHAR) 更新)。 315 第 3 章 静态数据词典视图 3.3.27 db_files 数据库中所有表空间、表空间使用的存储容量及表空间所在存储设备的容量信息。 表 3.3.26: DB_FILES 列 名称 类型 描述 NAME NAME 表空间名称或总用量 TOTAL USED BIGINT 表空间已使用容量,单位 MB。TOTAL 时为数据目录所在存储设备已使用容量,单位 MB。 CAPACITY BIGINT 表空间所在存储设备容量,单位 MB。TOTAL 时为数据目录所在存储设备容量,单位 MB。 RATIO NUMERIC 使用率,scale 为 15 3.3.28 dba_all_tables 描述当前数据库所有的对象表和关系表。视图结构与all_all_tables 相同。 3.3.29 dba_arguments 列出数据库中可用的过程和函数的参数。视图结构与all_arguments 结构相同。 3.3.30 dba_col_comments 在数据库中所有表和视图的列上显示注释。视图结构与all_col_comments 相同。 3.3.31 dba_col_privs 所有列级权限。与all_col_privs 视图结构相同. 3.3.32 dba_cons_columns 描述约束中指定的数据库中的所有列。视图结构与all_cons_columns 相同。 3.3.33 dba_constraints 描述当前用户所拥有的表的所有约束定义。视图结构与all_constraints 相同。 316 第 3 章 静态数据词典视图 3.3.34 dba_db_links 描述数据库 dblink 的信息,视图结构与all_db_links 相同。 表 3.3.27: DBA_DB_LINKS 列 名称 类型 描述 OWNER VARCHAR DBLINK 的属主 DB_LINK NAME DBLINK 名称 USERNAME VARCHAR DBLINK 连接用户名 HOST VARCHAR DBLINK 连接 IP 地址 CREATED TIMESTAMP WITH TIME DBLINK 创建时间 ZONE 3.3.35 DBA_DIRECTORIES 描述数据库目录的信息,视图结构与all_directories 相同。 表 3.3.28: DBA_DIRECTORIES 列 名称 类型 描述 OWNER CHARACTER VARYING(63 目录的属主 BYTE) DIRECTORY_NAME CHARACTER VARYING(63 目录名称 BYTE) DIRECTORY_PATH VARY- 目录路径 CHARACTER VARYING(63 默认置 0 CHARACTER ING(1023 BYTE) ORIGIN_CON_ID BYTE) 3.3.36 dba_free_space 数据库中每个表空间的可用空间。 317 第 3 章 静态数据词典视图 表 3.3.29: DBA_FREE_SPACE 列 名称 类型 描述 TABLESPACE_NAME CHARACTER VARYING(63 BYTE) 包含空闲空间的表空间的名称。 FILE_ID NUMBER 包含空闲空间的文件的文件标识号。 BLOCK_ID NUMBER 空闲空间的起始块号。 BYTES NUMBER 空闲空间的大小(以字节为单位)。 BLOCKS NUMBER 空闲空间的大小(以块为单位)。 RELATIVE_FNO NUMBER 包含空闲空间的文件的相对文件号。 3.3.37 dba_ind_columns 数据库中所有建有索引的列的信息。视图结构与all_ind_columns 相同。 3.3.38 dba_indexes 数据库中所有索引的信息。视图结构与all_indexes 相同 3.3.39 dba_objects 当前用户下可以查看的所有对象。 表 3.3.30: DBA_OBJECTS 视图定义 名称 类型 描述 OWNER CHARACTER VARYING(63 BYTE) 对象的属主。 OBJECT_NAME CHARACTER VARYING(63 BYTE) 对象名。 SUBOBJECT_NAME CHARACTER VARYING(63 BYTE) 子对象名,目前值为 NULL。 OBJECT_ID NUMERIC(38,0) 对象的 OID。 DATA_OBJECT_ID NUMERIC(38,0) 保留字段。 OBJECT_TYPE CHARACTER VARYING(20 BYTE) 对象的类型。 见续表 318 第 3 章 静态数据词典视图 表 3.3.30 – 续表 名称 类型 描述 CREATED DATE 对象创建的时间,目前值为 NULL。 LAST_DDL_TIME DATE 对象最近一次的修改时间。目前值为 NULL。 TIMESTAMP CHARACTER VARYING(20 BYTE) 该对象的说明定义的时间。 STATUS CHARACTER VARYING(7 BYTE) 对象的状态。 TEMPORARY CHARACTER VARYING(1 BYTE) 该对象是否是临时的。 GENERATED CHARACTER VARYING(1 BYTE) 对象名是否是系统生成的。 SECONDARY CHARACTER VARYING(1 BYTE) 该对象是否是其他方法生成的二级对象。 NAMESPACE NUMERIC(38,0) 对象的模式名。 3.3.40 dba_part_tables 显示数据库内所有分区表,其字段与all_part_tables 相同。 3.3.41 dba_role_privs 授予所有用户的角色以及数据库中的角色。 表 3.3.31: DBA_ROLE_PRIVS 列 名称 类型 描述 GRANTEE CHARACTER VARYING(63 接受授权的用户或角色的名称。 BYTE) GRANTED_ROLE CHARACTER VARYING(63 授予角色名称。 BYTE) ADMIN_OPTION VARYING(3 指示授予是否与 ADMIN OPTION 一起使用。 >CHARACTER VARYING(3 指示是否将角色指定为 DEFAULT ROLE 用 BYTE) 户。 CHARACTER BYTE) DEFAULT_ROLE 319 第 3 章 静态数据词典视图 3.3.42 dba_roles 列出数据库中存在的所有角色。 表 3.3.32: DBA_ROLES 列 名称 类型 描述 ROLE CHARACTER VARYING(63 BYTE) 角色名称。 PASSWORD_REQUIRED CHARACTER VARYING(8 BYTE) 指示角色是否需要启用密码。 3.3.43 dba_sequences 数据库中所有的序列。视图结构与all_sequences 相同。 3.3.44 dba_source 描述数据库中所有存储对象的文本源。视图结构与all_source 相同。 3.3.45 dba_synonyms 数据库中所有同义词的信息。视图结构与all_synonyms 相同 3.3.46 dba_tab_cols 描述当前所在数据库中,所有的表、视图的列信息,包括隐藏列和虚拟列。 表 3.3.33: DBA_TAB_COLS 列 名称 类型 OWNER CHARACTER 描述 VARYING(63 表、视图的所有者。 VARYING(63 表、视图的名字。 VARYING(63 列名字。 BYTE) TABLE_NAME CHARACTER BYTE) COLUMN_NAME CHARACTER BYTE) 见续表 320 第 3 章 静态数据词典视图 表 3.3.33 – 续表 名称 类型 DATA_TYPE CHARACTER 描述 VARYING(106 列的数据类型。 BYTE) DATA_TYPE_MOD CHARACTER VARYING(3 列的修改的数据类型。 VARYING(63 列的类型的所有者。 CHAR) DATA_TYPE_OWNER CHARACTER BYTE) DATA_LENGTH NUMERIC 列的长度。 DATA_PRECISION NUMERIC 数据精度。 DATA_SCALE NUMERIC 数字的小数点右侧位数。 NULLABLE CHARACTER VARYING(1 描述列是否可以为 NULL。 CHAR) COLUMN_ID NUMERIC 列的编号。 DEFAULT_LENGTH NUMERIC 列的默认长度。 DATA_DEFAULT TEXT 列的默认值。 NUM_DISTINCT NUMERIC 列上的 distinct 的值的数量。 LOW_VALUE NUMERIC 列的最小值。 HIGH_VALUE NUMERIC 列的最大值。 DENSITY NUMERIC 列的密度。 NUM_NULLS NUMERIC 在列上空值的数量。 NUM_BUCKETS NUMERIC 列上的大量数据的直方图。 LAST_ANALYZED TIMESTAMP(0) WITHOUT TIME 是否约束被置为无效。 ZONE SAMPLE_SIZE NUMERIC CHARACTER_SET_NAME CHARACTER 索引分析所使用的遍历大小。 VARYING(44 字符集名称。 CHAR) CHAR_COL_DECL_LENGTH NUMERIC 声明列的字符类型长度。 见续表 321 第 3 章 静态数据词典视图 表 3.3.33 – 续表 名称 类型 GLOBAL_STATS CHARACTER 描述 VARYING(3 信息。 CHAR) USER_STATS CHARACTER 是否将分区表作为整体来收集列的 VARYING(3 是否由用户输入。 CHAR) AVG_COL_LEN NUMERIC 平均长度(字节)。 CHAR_LENGTH NUMERIC 列中的字符的长度。 CHAR_USED CHARACTER VARYING(1 使用的类型。 VARYING(3 列中的数据是否是 8.0 图像格式。 VARYING(3 列的数据是否已经升级到最新版本 CHAR) V90_FMT_IMAGE CHARACTER CHAR) DATA_UPGRADED CHARACTER 的格式类型。 CHAR) HIDDEN_COLUMN CHARACTER VARYING(3 该列是否是一个隐藏的列。 VARYING(3 列是否是一个虚拟列。 CHAR) VIRTUAL_COLUMN CHARACTER CHAR) SEGMENT_COLUMN_ID NUMERIC 在划分中,列的编号。 INTERNAL_COLUMN_ID NUMERIC 内部的编号。 HISTOGRAM CHARACTER VARYING(15 类型使用频率的柱状图。 CHAR) QUALIFIED_COL_NAME CHARACTER VARYING(4000 符合要求的列名。 CHAR) 3.3.47 dba_tab_columns 描述当前所在数据库中,所有的表、视图的非隐藏列信息。 该视图的所有列来自于 DBA_TAB_COLS 的同名列,但是该视图显示的是非隐藏列信息。 322 第 3 章 静态数据词典视图 表 3.3.34: DBA_TAB_COLUMNS 列 名称 类型 OWNER CHARACTER 描述 VARYING(63 表、视图的所有者。 VARYING(63 表、视图的名字。 VARYING(63 列名字。 VARYING(106 列的数据类型。 BYTE) TABLE_NAME CHARACTER BYTE) COLUMN_NAME CHARACTER BYTE) DATA_TYPE CHARACTER BYTE) DATA_TYPE_MOD CHARACTER VARYING(3 列的修改的数据类型。 VARYING(63 列的类型的所有者。 BYTE) DATA_TYPE_OWNER CHARACTER BYTE) DATA_LENGTH NUMERIC 列的长度。 DATA_PRECISION NUMERIC 数据精度。针对 numeric 和 float 类 型。 DATA_SCALE 数字的小数点右侧位数。针对 nu- NUMERIC meric 类型。 NULLABLE CHARACTER VARYING(1 描述列是否可以为 NULL, CHAR) ’Y’/’N’。 COLUMN_ID NUMERIC 列的编号。 DEFAULT_LENGTH NUMERIC 列 的 默 认 长 度。 没 有 默 认 值 时 为 NULL。 DATA_DEFAULT TEXT 列 的 默 认 值。 没 有 默 认 值 时 为 NULL。 NUM_DISTINCT NUMERIC 列上的 distinct 的值的数量。 LOW_VALUE NUMERIC 列的最小值。 HIGH_VALUE NUMERIC 列的最大值。 DENSITY NUMERIC 列的密度。 见续表 323 第 3 章 静态数据词典视图 表 3.3.34 – 续表 名称 类型 描述 NUM_NULLS NUMERIC 在列上空值的数量。 NUM_BUCKETS NUMERIC 列上的大量数据的直方图。 LAST_ANALYZED TIMESTAMP(0) WITHOUT TIME 是否约束被置为无效。 ZONE SAMPLE_SIZE NUMERIC CHARACTER_SET_NAME CHARACTER 声明列的字符类型长度。 VARYING(44 字符集名称。 CHAR) CHAR_COL_DECL_LENGTH NUMERIC GLOBAL_STATS CHARACTER 声明列的字符类型长度。 VARYING(3 信息。 CHAR) USER_STATS CHARACTER 是否将分区表作为整体来收集列的 VARYING(3 是否由用户输入。 CHAR) AVG_COL_LEN NUMERIC 平均长度(字节)。 CHAR_LENGTH NUMERIC 列 中 的 字 符 的 长 度。 单 位 为 字 符 (CHAR)。 非 VARCHAR, BPCHAR,CHAR 类型为 NULL。 CHAR_USED CHARACTER VARYING(1 使用的类型。’B’ 表示字串以 byte 为单位,’C’ 表示以 CHAR 为单 CHAR) 位。例如 VARCHAR(40 CHAR)。 V90_FMT_IMAGE CHARACTER VARYING(3 列中的数据是否是 8.0 图像格式。 VARYING(3 列的数据是否已经升级到最新版本 CHAR) DATA_UPGRADED CHARACTER 的格式类型。 CHAR) HISTOGRAM CHARACTER VARYING(15 类型使用频率的柱状图。 CHAR) 3.3.48 dba_tab_comments 显示数据库中所有表和视图的注释。视图结构与all_tab_comments 相同。 324 第 3 章 静态数据词典视图 3.3.49 dba_tab_partitions 显示 DBA 所拥有的所有分区。视图结构与all_tab_partitions 相同。 3.3.50 dba_tab_privs 描述数据库中的所有对象授予。视图结构与all_tab_privs 相同。 3.3.51 dba_tables 当前数据库中的所有表。 表 3.3.35: DBA_TABLES 列 名称 类型 OWNER CHARACTER 描述 VARYING(63 表的属主。 VARYING(63 表名。 VARYING(63 表空间名。 VARYING(63 CLUSTER 名字。 VARYING(63 索引结构表的名字。 VARYING(63 表的状态。 BYTE) TABLE_NAME CHARACTER BYTE) TABLESPACE_NAME CHARACTER BYTE) CLUSTER_NAME CHARACTER BYTE) IOT_NAME CHARACTER BYTE) STATUS CHARACTER BYTE) PCT_FREE INTEGER 块中空闲空间的最小百分率。 PCT_USED INTEGER 块中已使用空间的最小百分率。 INI_TRANS INTEGER 事务数的初始化大小。 MAX_TRANS INTEGER 最大事务数。 INITIAL_EXTENT INTEGER 初始化的大小。 NEXT_EXTENT INTEGER 扩展的大小。 见续表 325 第 3 章 静态数据词典视图 表 3.3.35 – 续表 名称 类型 描述 MIN_EXTENTS INTEGER 段中允许扩展的最小值。 MAX_EXTENTS INTEGER 段中允许扩展的最大值。 PCT_INCREASE INTEGER 扩展时增加的百分率。 FREELISTS INTEGER 空闲的进程数。 FREELIST_GROUPS INTEGER 空闲列表的群数。 LOGGING CHARACTER VARYING(3 LOGGING 属性。 VARYING(1 该表从上次修改到现在是否做了 BYTE) BACKED_UP CHARACTER BYTE) 备份。 NUM_ROWS INTEGER 表的行数。 BLOCKS INTEGER 已使用的数据块数。 EMPTY_BLOCKS INTEGER 空闲的数据块数。 AVG_SPACE INTEGER 平均的空闲空间数。 CHAIN_CNT INTEGER 表中跨数据块的行数。 AVG_ROW_LEN INTEGER 平均一行的数据长度。 AVG_SPACE_FREELIST_BLOCKS INTEGER 一个空闲列表中的所有数据块的 平均空闲值。 NUM_FREELIST_BLOCKS INTEGER DEGREE CHARACTER 空闲列表中的数据块数。 VARYING(10 扫描表时一个实例中的线程数。 VARYING(10 扫描表时的实例数。 VARYING(5 该表是否在缓存 CACHE 中。 VARYING(8 该表是否被锁住。 BYTE) INSTANCES CHARACTER BYTE) CACHE CHARACTER BYTE) TABLE_LOCK CHARACTER BYTE) SAMPLE_SIZE INTEGER 分析表时的采样率。 见续表 326 第 3 章 静态数据词典视图 表 3.3.35 – 续表 名称 类型 描述 LAST_ANALYZED DATE 最近一次 ANALYZE 的时间。 PARTITIONED CHARACTER VARYING(3 该表是否是分区表。 VARYING(12 索引组织表的类型。 VARYING(1 该数据是否只有当前会话可见。 VARYING(1 该对象是否是其他方法生成的二 BYTE) IOT_TYPE CHARACTER BYTE) TEMPORARY CHARACTER BYTE) SECONDARY CHARACTER 级对象。 BYTE) NESTED CHARACTER VARYING(3 该表是否是嵌套的。 VARYING(7 该对象的缺省的缓冲区。 VARYING(8 分区表的行是否允许移动。 VARYING(3 分区表的统计信息。 VARYING(3 用户的状态。 VARYING(15 临时表的生存时间。 VARYING(8 在索引扫描时是否忽略块标记中 BYTE) BUFFER_POOL CHARACTER BYTE) ROW_MOVEMENT CHARACTER BYTE) GLOBAL_STATS CHARACTER BYTE) USER_STATS CHARACTER BYTE) DURATION CHARACTER BYTE) SKIP_CORRUPT CHARACTER 断。 BYTE) MONITORING CHARACTER VARYING(3 该表是否设置了监控属性。 VARYING(63 CLUSETR 的属主。 VARYING(8 行级依赖跟踪是否可用。 BYTE) CLUSTER_OWNER CHARACTER BYTE) DEPENDENCIES CHARACTER BYTE) 见续表 327 第 3 章 静态数据词典视图 表 3.3.35 – 续表 名称 类型 COMPRESSION CHARACTER 描述 VARYING(8 该表是否压缩。 VARYING(3 该表是否被删除。 BYTE) DROPPED CHARACTER BYTE) 3.3.52 dba_tablespace 描述数据库中的表空间。视图结构与dba_tablespaces 相同。 3.3.53 dba_tablespaces 描述数据库中的所有表空间。 表 3.3.36: DBA_TABLESPACES 列 名称 类型 描述 TABLESPACE_NAME VARCHAR(63 BYTE) 表空间名称。 INITIAL_EXTENT NUMBER 默认初始范围大小。 NEXT_EXTENT NUMBER 默认增量扩展区大小。 MIN_EXTENTS NUMBER 默认最小范围。 MAX_EXTENTS NUMBER 默认最大范围数。 PCT_INCREASE NUMBER 范围大小的默认增加百分比。 MIN_EXTLEN NUMBER 该表空间的最小扩展区大小。 STATUS VARCHAR(9 BYTE) 表 空 间 状 态:ONLINE、OFFLINE、 READ ONLY。 CONTENTS VARCHAR(9 BYTE) 表空间内容。 LOGGING VARCHAR(9 BYTE) 默认日志记录属性。 见续表 328 第 3 章 静态数据词典视图 表 3.3.36 – 续表 名称 类型 描述 EXTENT_MANAGEMENT VARCHAR(10 BYTE) 指示表空间中的扩展区是字典管理的 (DICTIONARY) 还 是 本 地 管 理 的 (LOCAL). ALLOCATION_TYPE VARCHAR(9 BYTE) 对表空间有效的扩展区分配类型。 PLUGGED_IN VARCHAR(3 BYTE) 指示表是否插好(YES)或(NO)。 3.3.54 dba_trigger_cols 数据库中所有触发器的列。视图结构与all_trigger_cols 相同。 3.3.55 dba_triggers 数据库中所有的触发器。视图结构与all_triggers 相同。 3.3.56 dba_types 描述当前数据库所有的对象类型。视图结构与all_types 相同。 3.3.57 dba_users 数据库中所有用户的信息。 表 3.3.37: DBA_USERS 列 名称 类型 USERNAME CHARACTER 描述 VARY- 用户名。 ING(63 BYTE) USER_ID NUMERIC(38,0) PASSWORD CHARACTER ING(63 BYTE) 用户 ID。 VARY- 用 户 的 密 码, 此 处 为 NULL。 见续表 329 第 3 章 静态数据词典视图 表 3.3.37 – 续表 名称 类型 ACCOUNT_STATUS CHARACTER 描述 VARY- 用户状态。 ING(32 BYTE) LOCK_DATE DATE 该帐号被锁定的时间。 EXPIRY_DATE DATE 该帐号密码到期日期。 DEFAULT_TABLESPACE CHARACTER VARY- 缺省表空间,保留字段。 VARY- 临时表空间。保留字段。 ING(63 BYTE) TEMPORARY_TABLESPACE CHARACTER ING(63 BYTE) CREATED DATE PROFILE CHARACTER 创建该用户的时间。 VARY- 保留字段。 VARY- 保留字段。 VARY- 用户的外部名。 CHARACTER VARYING(8 密码类别信息。 ING(63 BYTE) INITIAL_RSRC_CONSUMER_GROUP CHARACTER ING(63 BYTE) EXTERNAL_NAME CHARACTER ING(4000 BYTE) PASSWORD_VERSIONS BYTE) EDITIONS_ENABLED CHARACTER VARYING(1 是否可编辑。 BYTE) 3.3.58 dba_views 当前用户的所有视图的信息。视图结构与all_views 的区别只是没有 OWNER 列。 3.3.59 user_all_tables 描述当前用户拥有的对象表和关系表。视图结构与all_all_tables 相同。 3.3.60 user_arguments 描述当前用户拥有的过程和函数的参数。视图结构与all_arguments 的区别只是没有 OWNER 列。 330 第 3 章 静态数据词典视图 3.3.61 user_col_comments 在当前用户拥有的表和视图的列上注释。视图结构与all_col_comments 的区别只是没有 OWNER 列。 3.3.62 user_col_privs 当前用户下的列级权限表。与all_col_privs 视图结构相同。 3.3.63 user_cons_columns 描述当前用户拥有并在约束中指定的列。视图结构与all_cons_columns 相同。 3.3.64 user_constraints 描述当前用户所拥有的表的所有约束定义。视图结构与all_constraints 相同。 3.3.65 user_db_links 描述当前用户所拥有的 dblink 信息。视图结构与all_db_links 相同。 3.3.66 user_directories 描述当前用户可访问的目录信息。视图结构与all_directories 相同。 3.3.67 user_free_space 描述当前用户可访问的表空间中的自由扩展区。其列与dba_free_space 中的列相同 3.3.68 user_ind_columns 数据库中所有建有索引的列的信息。视图结构与all_ind_columns 相同。 3.3.69 user_indexes 当前用户拥有的所有索引信息。视图结构与all_indexes 相同 331 第 3 章 静态数据词典视图 3.3.70 user_objects 当前用户的所有对象的信息。 表 3.3.38: USER_OBJECTS 列 名称 类型 描述 OBJECT_NAME CHARACTER VARYING(63 BYTE) 对象名。 SUBOBJECT_NAME CHARACTER VARYING(63 BYTE) 子对象名,目前值为 NULL。 OBJECT_ID NUMERIC(38,0) 对象的 OID。 DATA_OBJECT_ID NUMERIC(38,0) 保留字段。 OBJECT_TYPE CHARACTER VARYING(20 BYTE) 对象的类型。 CREATED DATE 对象创建的时间,目前值为 NULL。 LAST_DDL_TIME DATE 对象最近一次的修改时间。目前值为 NULL。 TIMESTAMP CHARACTER VARYING(20 BYTE) 该对象的说明定义的时间。 STATUS CHARACTER VARYING(7 BYTE) 对象的状态。 TEMPORARY CHARACTER VARYING(1 BYTE) 该对象是否是临时的。 GENERATED CHARACTER VARYING(1 BYTE) 对象名是否是系统生成的。 SECONDARY CHARACTER VARYING(1 BYTE) 该对象是否是其他方法生成的二级对象。 NAMESPACE NUMERIC(38,0) 对象的模式名。 3.3.71 user_part_tables 显示当前用户所拥有的所有分区表,除了不显示 owner 字段,其他字段与all_part_tables 相同。 3.3.72 user_role_privs 描述授予当前用户的角色。 332 第 3 章 静态数据词典视图 表 3.3.39: USER_ROLE_PRIVS 列 名称 类型 USERNAME CHARACTER 描述 VARYING(63 接受授权的用户或角色的名称。 VARYING(63 授予角色名称。 VARYING(3 指示授予是否与 ADMINOPTION BYTE) GRANTED_ROLE CHARACTER BYTE) ADMIN_OPTION CHARACTER 一起使用。 BYTE) DEFAULT_ROLE CHARACTER VARYING(3 BYTE) 指示是否将角色指定为 DEFAULT ROLE 用户。 3.3.73 user_sequences 当前用户的所有序列的信息。视图结构与all_sequences 相同。 3.3.74 user_source 当前用户的所有程序源的信息。视图结构与all_source 相同。 3.3.75 user_synonyms 数据库中用户所有同义词的信息。视图结构与all_synonyms 相同。 3.3.76 user_tab_cols 描述了当前用户可以访问的表,视图的列。视图结构与dba_tab_cols 的区别只是没有 OWNER 列。 3.3.77 user_tab_columns 数据库中所有表列的信息。视图结构与dba_tab_columns 的区别只是没有 OWNER 列。 3.3.78 user_tab_comments 当前用户拥有的表和视图上的注释。视图结构与all_tab_comments 的区别只是没有 OWNER 列。 333 第 3 章 静态数据词典视图 3.3.79 user_tab_partitions 显示当前用户所拥有及能访问到的所有分区,除了无 table_owner 字段,其他字段与all_tab_partitions 相同。 3.3.80 user_tab_privs 描述当前用户的对象权限,该用户可以是对象的所有者、授予者或者被授予者。视图结构与dba_tab_privs 相 同。 3.3.81 user_table_cols 描述当前用户可访问的所有的表、视图的列信息,包括隐藏列和虚拟列。 表 3.3.40: USER_TABLE_COLS 列 名称 类型 TABLE_NAME CHARACTER 描述 VARYING(63 表、视图的名字。 VARYING(63 列名字。 VARYING(106 列的数据类型。 BYTE) COLUMN_NAME CHARACTER BYTE) DATA_TYPE CHARACTER BYTE) DATA_TYPE_MOD CHARACTER VARYING(3 列的修改的数据类型。 VARYING(63 列类型的所有者。 CHAR) DATA_TYPE_OWNER CHARACTER BYTE) DATA_LENGTH NUMERIC 列的长度。 DATA_PRECISION NUMERIC 列数据精度。 DATA_SCALE NUMERIC 数字的小数点右侧位数。针对 numeric 类型。 NULLABLE COLUMN_ID CHARACTER VARYING(1 描述列是否可以为 CHAR) ’Y’/’N’。 NUMERIC 列的编号。 NULL, 见续表 334 第 3 章 静态数据词典视图 表 3.3.40 – 续表 名称 类型 描述 DEFAULT_LENGTH NUMERIC 列 的 默 认 长 度。 没 有 默 认 值 时 为 NULL。 DATA_DEFAULT 列 的 默 认 值。 没 有 默 认 值 时 为 TEXT NULL。 NUM_DISTINCT NUMERIC 列上的 distinct 的值的数量。 LOW_VALUE NUMERIC 列的最小值。 HIGH_VALUE NUMERIC 列的最大值。 DENSITY NUMERIC 列的密度。 NUM_NULLS NUMERIC 在列上空值的数量。 NUM_BUCKETS NUMERIC 列上的大量数据的直方图。 LAST_ANALYZED TIMESTAMP(0) WITHOUT TIME 是否约束被置为无效。 ZONE SAMPLE_SIZE NUMERIC CHARACTER_SET_NAME CHARACTER 声明列的字符类型长度。 VARYING(44 字符集名称。 CHAR) CHAR_COL_DECL_LENGTH NUMERIC GLOBAL_STATS CHARACTER 声明列的字符类型长度。 VARYING(3 信息。 CHAR) USER_STATS CHARACTER 是否将分区表作为整体来收集列的 VARYING(3 是否由用户输入。 CHAR) AVG_COL_LEN NUMERIC 平均长度(字节)。 CHAR_LENGTH NUMERIC 列 中 的 字 符 的 长 度。 单 位 为 字 符 (CHAR)。 非 VARCHAR, BPCHAR,CHAR 类型为 NULL。 CHAR_USED CHARACTER CHAR) VARYING(1 使用的类型。’B’ 表示字串以 byte 为单位,’C’ 表示以 CHAR 为单 位。例如 VARCHAR(40 CHAR)。 见续表 335 第 3 章 静态数据词典视图 表 3.3.40 – 续表 名称 类型 V90_FMT_IMAGE CHARACTER 描述 VARYING(3 列中的数据是否是 8.0 图像格式。 VARYING(3 列的数据是否已经升级到最新版本 CHAR) DATA_UPGRADED CHARACTER 的格式类型。 CHAR) HIDDEN_COLUMN CHARACTER VARYING(3 该列是否是一个隐藏的列。 VARYING(3 列是否是一个虚拟列。 CHAR) VIRTUAL_COLUMN CHARACTER CHAR) SEGMENT_COLUMN_ID NUMERIC 在划分中,列的编号。 INTERNAL_COLUMN_ID NUMERIC 内部的列编号。 HISTOGRAM CHARACTER VARYING(15 类型使用频率的柱状图。 CHAR) QUALIFIED_COL_NAME CHARACTER VARYING(4000 符合要求的列名。 CHAR) 3.3.82 user_tables 当前用户的所有表的信息。与all_tables 的视图结构的区别只是没有 OWNER 列。 3.3.83 user_tablespace 描述当前用户可访问的表空间。其列(除外 PLUGGED_IN)与dba_tablespace 相同。 3.3.84 user_tablespaces 描述当前用户可访问的表空间。其列(除外 PLUGGED_IN)与dba_tablespaces 相同。 3.3.85 user_trigger_cols 当前用户用的所有触发器的列信息。视图结构与all_trigger_cols 相同。 336 第 3 章 静态数据词典视图 3.3.86 user_triggers 当前用户的所有触发器的信息。视图结构与all_triggers 的区别只是没有 OWNER 列。 3.3.87 user_types 描述当前用户拥有的对象类型。视图结构与all_types 相同。 3.3.88 user_users 描述当前用户可见的数据库的所有用户信息。 表 3.3.41: USER_USERS 列 名称 类型 描述 USERNAME CHARACTER VARYING(63 BYTE) 用户名 USER_ID NUMERIC(38,0) 用户 ID ACCOUNT_STATUS CHARACTER VARYING(32 BYTE) 账户状态 LOCK_DATE DATE 被锁定时间 EXPIRY_DATE DATE 用户到期时间 DEFAULT_TABLESPACE CHARACTER VARYING(63 BYTE) 默认表空间 TEMPORARY_TABLESPACE CHARACTER VARYING(63 BYTE) 临时表空间 CREATED DATE 被创建的时间 INITIAL_RSRC_CONSUMER_GROUP CHARACTER VARYING(63 BYTE) 默认置 NULL EXTERNAL_NAME 默认置 NULL CHARACTER VARYING(63 BYTE) 3.3.89 user_views 当前用户的所有视图的信息。视图结构与all_views 相同。 3.3.90 V$CONTEXT 描述当前会话中 context 的属性值。 337 第 3 章 静态数据词典视图 表 3.3.42: V$CONTEXT 列 名称 类型 描述 NAMESPACE TEXT Context 名字。 ATTRIBUTE TEXT Context 中属性名。 VALUE TEXT Context 中属性值。 CON_ID INTEGER 保留列。 3.3.91 V$DATABASE 描述当前数据库信息。 表 3.3.43: V$DATABASE 列 名称 类型 描述 DBID NUMBER 创建数据库并将其存储在 所有文件头中时计算出的 数据库标识符。 NAME CHARACTER VARYING (63BYTE) 数据库名称。 CREATED DATE 数据库的创建日期。 LOG_MODE CHARACTER VARYING (12BYTE) 存档日志模式。 CHECKPOINT_CHANGE NUMBER 上一个 SCN 检查点。 CONTROLFILE_TIME DATE 备份控制文件中的最后一 个时间戳;如果控制文件 不是备份,则为 null。 OPEN_MODE CHARACTER VARYING (10BYTE) 开放模式信息。 CONTROLFILE_CHANGE NUMBER 备份控制文件中的最后一 个 SCN;如果控制文件不 是备份,则为 null。 见续表 338 第 3 章 静态数据词典视图 表 3.3.43 – 续表 名称 类型 描述 CURRENT_SCN NUMBER 当前的 SCN;如果数据库 当前未打开,则为 null。 对于备用数据库,它是介 质恢复期间已安装的物 理备用数据库的检查点 SCN,并且始终小于在中 跟踪的最后应用的 SCN。 MAX_SIZE 数据库单个文件最大大 NUMERIC(38,0) 小。 TOTAL_SIZE NUMERIC(38,0) 数据库总大小。 STATUS$ CHARACTER VARYING (10BYTE) 当前的 SCN;如果数据库 当前未打开,则为 null。 对于备用数据库,它是介 质恢复期间已安装的物 理备用数据库的检查点 SCN,并且始终小于在中 跟踪的最后应用的 SCN。 3.3.92 V$INSTANCE 描述当前实例信息。 表 3.3.44: V$INSTANCE 列 名称 类型 INSTANCE_NAME CHARACTER 描述 VARYING(16 实例名称。 VARYING(64 主机名。 VARYING(17 数据库版本。 BYTE) HOST_NAME CHARACTER BYTE) VERSION CHARACTER BYTE) STARTUP_TIME DATE 实例启动时间。 见续表 339 第 3 章 静态数据词典视图 表 3.3.44 – 续表 名称 类型 STATUS CHARACTER 描述 VARYING(12 实例状态。 VARYING(7 实例的静默状态。 VARYING(10 指示实例是处于非受限模式 BYTE) ARCHIVER CHARACTER BYTE) LOGIN CHARACTER 下, 允 许 所 有 用 户 登 录 (AL- BYTE) LOWED, 还 是 处 于 受 限 模 式 下, 仅允 许数 据 库 管理 员 登 录 (RESTRICTED)。 SHUTDOWN_PENDING CHARACTER VARYING(3 BYTE) 备份控制文件中的最后一个 SCN;如果控制文件不是备份, 则为 null。 DATABASE_STATUS CHARACTER VARYING(17 数据库状态。 VARYING(18 指 示 实 例 是 活 动 实 例 (PRI- BYTE) INSTANCE_ROLE CHARACTER BYTE) MARY_INSTANCE) 还 是 非 活 动 辅 助 实 例 (SECONDARY_INSTANCE), 或 者 UNKNOWN 实例是否已启 动但尚未挂载。 ACTIVE_STATE CHARACTER VARYING(9 实例的静默状态. VARYING(3 表示是否阻止了所有服务。 BYTE) BLOCKED CHARACTER BYTE) 3.3.93 V$LOCK 列出了数据库当前持有的锁以及对锁的未完成请求。 340 第 3 章 静态数据词典视图 表 3.3.45: V$LOCK 列 名称 类型 描述 ADDR character varying(16 byte) 锁定状态对象的地址。 KADDR character varying(16 byte) 锁地址。 SID NUMERIC 用户或系统锁定的类型。 TYPE VARCHAR2(2) 存档日志模式。 LMODE NUMERIC 锁模式。 REQUEST NUMERIC 进程请求锁定的锁定模式。 CTIME NUMERIC 自当前模式授予以来的时间。 BLOCK NUMERIC 指示有问题的锁是否正在阻止其他进程。 3.3.94 V$LOCKED_OBJECT 描述当前被锁定的对象。 表 3.3.46: V$LOCKED_OBJECT 列 名称 类型 描述 XIDUSN NUMBER 撤消段号。 XIDSLOT NUMBER 插槽号。 XIDSQN NUMBER 序列号。 OBJECT_ID NUMBER 对象 ID 被锁定。 SESSION_ID NUMBER 会话 ID。 ORACLE_USERNAME CHARACTER VARYING(63 BYTE) Oracle 用户名。 OS_USER_NAME CHARACTER VARYING(63 BYTE) 操作系统用户名。 PROCESS CHARACTER VARYING(63 BYTE) 操作系统进程 ID。 LOCKED_MODE NUMBER 锁定模式。 341 第 3 章 静态数据词典视图 3.3.95 V$PARAMETER 列出影响当前会话的初始化参数信息。 表 3.3.47: V$PARAMETER 列 名称 类型 描述 NUM NUMBER 参数编号。 NAME VARCHAR2(80) 参数名称。 TYPE NUMBER 参数类型。 VALUE VARCHAR2(512) 会话的参数值(如果在会话中修改); 否则,实例范围的参数值。 DISPLAY_VALUE VARCHAR2(512) 用户友好格式的参数值。 ISSES_MODIFIABLE VARCHAR2(5 指示是否可以通过 ALTER SESSION 更 改参数。 ISpg_MODIFIALBE VARCHAR2(9) 指示是否可以在 PG 内修改参数。 ISMODIFIED VARCHAR2(10) 指示在实例启动后是否已修改参数。 DESCRIPTION VARCHAR2(255) 参数说明。 3.3.96 V$SESSION 描述当前会话信息。 表 3.3.48: V$SESSION 列 名称 类型 SADDR CHARACTER 描述 VARYING(20 会话地址。 BYTE) SID NUMBER 会话 ID。 SERIAL# NUMBER 保留列。 AUDSID NUMBER 保留列。 见续表 342 第 3 章 静态数据词典视图 表 3.3.48 – 续表 名称 类型 PADDR CHARACTER 描述 VARYING(20 保留列。 BYTE) USER# NUMBER(38,0) 用户标识。 USERNAME VARCHAR2(63 BYTE) 用户名。 COMMAND NUMBER 保留列。 OWNERID NUMBER 保留列。 TADDR VARCHAR2(20 BYTE) 保留列。 LOCKWAIT VARCHAR2(8 BYTE) 会话正在等待的锁的地址。 STATUS VARCHAR2(8 BYTE) 会话状态。 SERVER VARCHAR2(9 BYTE) 服务器类型。 SCHEMA# NUMBER(38,0) 模式用户标识符。 SCHEMANAME VARCHAR2(63 BYTE) 保留列。 OSUSER VARCHAR2(63 BYTE) 保留列。 PROCESS VARCHAR2(12 BYTE) 保留列。 MACHINE VARCHAR2(64 BYTE) 保留列。 TERMINAL VARCHAR2(63 BYTE) 保留列。 PROGRAM VARCHAR2(48 BYTE) 保留列。 TYPE VARCHAR2(10 BYTE) 保留列。 SQL_ADDRESS CHARACTER 保留列。 VARYING(20 BYTE) SQL_HASH_VALUE NUMBER 保留列。 SQL_ID VARCHAR2(13 BYTE) 保留列。 SQL_CHILD_NUMBER NUMBER 当前正在执行的 SQL 语句的子代 号。 PREV_SQL_ADDR CHARACTER VARYING(20 保留列。 BYTE) 见续表 343 第 3 章 静态数据词典视图 表 3.3.48 – 续表 名称 类型 描述 PREV_HASH_VALUE NUMBER 保留列。 PREV_SQL_ID VARCHAR2(13 BYTE) 保留列。 PREV_CHILD_NUMBER NUMBER 保留列。 MODULE VARCHAR2(48) 保留列。 MODULE_HASH NUMBER 保留列。 ACTION VARCHAR2(32) 保留列。 ACTION_HASH NUMBER 保留列。 CLIENT_INFO VARCHAR2(64) 保留列。 FIXED_TABLE_SEQUENCE NUMBER 保留列。 ROW_WAIT_OBJ# NUMBER 保留列。 ROW_WAIT_FILE# NUMBER 保留列。 ROW_WAIT_BLOCK# NUMBER 保留列。 ROW_WAIT_ROW# NUMBER 保留列。 LOGON_TIME DATE 登录时间。 LAST_CALL_ET NUMBER 保留列。 PDML_ENABLED VARCHAR2(3) 保留列。 FAILOVER_TYPE VARCHAR2(13) 指示是否为会话启用透明应用程序 故障转移,以及在何种程度上启用 了透明应用程序故障转移。 FAILOVER_METHOD VARCHAR2(10) 指示会话的透明应用程序故障转移 方法。 FAILED_OVER VARCHAR2(3) 表示在故障切换模式会话是否正在 运行和故障转移发生与否。 RESOURCE_CONSUMER_GROUP VARCHAR2(32) 保留列。 PDML_STATUS 如果为 ENABLED ,则会话处于 VARCHAR2(8) PARALLEL DML 启用模式。 见续表 344 第 3 章 静态数据词典视图 表 3.3.48 – 续表 名称 类型 描述 PDDL_STATUS VARCHAR2(8) 如果为 ENABLED ,则会话处于 PARALLEL DDL 启用模式。 PQ_STATUS VARCHAR2(8) 会话的状态。 CURRENT_QUEUE_DURATION NUMBER 保留列。 CLIENT_IDENTIFIER VARCHAR2(64) 保留列。 BLOCKING_SESSION_STATUS VARCHAR2(11) 标志是否是锁定的会话。 BLOCKING_INSTANCE NUMBER 保留列。 BLOCKING_SESSION NUMBER 保留列。 SEQ# NUMBER 保留列。 EVENT# NUMBER 保留列。 EVENT VARCHAR2(64) 保留列。 P1TEXT VARCHAR2(64) 保留列。 P1 NNUMBER 保留列。 P1RAW VARCHAR2(20) 保留列。 P2TEXT VARCHAR2(64) 保留列。 P2 NUMBER 保留列。 P2RAW VARCHAR2(20) 保留列。 P3TEXT VARCHAR2(64) 保留列。 P3 NUMBER 保留列。 P3RAW VARCHAR2(20) 保留列。 WAIT_CLASS_ID NUMBER 等待事件的类别的标识符。 WAIT_CLASS# NUMBER 保留列。 WAIT_CLASS VARCHAR2(64) 保留列。 WAIT_TIME NUMBER 保留列。 SECONDS_IN_WAIT NUMBER 保留列。 见续表 345 第 3 章 静态数据词典视图 表 3.3.48 – 续表 名称 类型 描述 STATE VARCHAR2(19) 等待状态。 SERVICE_NAME NUMBER 保留列。 SQL_TRACE VARCHAR2(8) 指示是启用还是禁用 SQL 跟踪。 SQL_TRACE_WAITS VARCHAR2(5) 指示是否启用了等待跟踪。 SQL_TRACE_BINDS VARCHAR2(5) 指示绑定跟踪是否被启用。 3.3.97 V$SYSSTAT 描述当前系统统计信息。 表 3.3.49: V$SYSSTAT 列 名称 类型 描述 STATISTIC# NUMBER 统计号。 NAME VARCHAR2(63) 统计名称。 VALUE NUMBER 统计值。 3.3.98 recyclebin 描述当前库下处于回收站中的对象信息和被删除的时间。 表 3.3.50: RECYCLEBIN 列 名称 类型 描述 OID OID 对象编号 ORIGINAL_NAME NAME 对象名称 DROPTIME TIMESTAMTZ 对象被删除的时间 TYPE TEXT 对象的类型 346 第4章 4 第 章 动态性能视图 动态性能视图 动态性能视图是展示 KingbaseES 数据库系统活动和性能统计信息的视图,比如对表和索引的访问计数,服务器 进程的当前活动相关的信息等。 本部分提供 KingbaseES 数据库系统动态性能视图的相关信息。 4.1 sys_stat_activity 每个服务器进程一行,显示与那个进程的当前活动相关的信息,例如状态和当前查询。 表 4.1.1: sys_stat_activity 视图 列 类型 描述 datid oid 这个后端连接到的数据库的 OID datname name 这个后端连接到的数据库的名称 pid integer 这个后端的进程 ID usesysid oid 登录到这个后端的用户的 OID usename name 登录到这个后端的用户的名称 application_name text 连接到这个后端的应用的名称 client_addr inet 连接到这个后端的客户端的 IP 地址。如果这个域为 空,它表示客户端通过服务器机器上的一个 Unix 套接 字连接或者这是一个内部进程(如自动清理)。 client_hostname text 已连接的客户端的主机名,由 client_addr 的反向 DNS 查找报告。这个域将只对 IP 连接非空,并且只有 log_hostname 被启用时才会非空。 见续表 347 第4章 动态性能视图 表 4.1.1 – 续表 列 类型 描述 client_port integer 客户端用以和这个后端通信的 TCP 端口号,如果使用 Unix 套接字则为-1 backend_start xact_start timestamp with time 这个进程被启动的时间。对客户端后端来说就是客户端 zone 连接到服务器的时间。 timestamp with time 这个进程的当前事务被启动的时间,如果没有活动事务 zone 则为空。如果当前查询是它的第一个事务,这一列等于 query_start。 query_start state_change timestamp with time 当前活动查询被开始的时间,如果 state 不是 a ctive, zone 这个域为上一个查询被开始的时间 timestamp with time state 上一次被改变的时间 zone 见续表 348 第4章 动态性能视图 表 4.1.1 – 续表 列 类型 描述 wait_event_type text 后端正在等待的事件类型,如果不存在则为 NULL。可 能的值有: • LWLock:后端 正在等待一个轻量级锁。每一个这样的锁保护着共享内 存中的一个特殊数据结构。 • Lock: 后端正在等待一个重量级锁。重量级锁,也称为锁管理 器锁或者简单锁,主要保护 SQL 可见的对象 • BufferPin:服务器进程正在等待访问 一个数据缓冲区,而此时没有其他进程正在检查该缓冲 区。 • Activity:服务器进程处于闲置状态。 这 被 用 于 在 其 主 处 理 循 环 中 等 待 活 动 的 系 统 进 程。 wait_event 将标识特定的等待点。 • Extension:服务器进 程正在一个扩展模块中等待活动。 • Client:服务器进程正在一个套接字 上等待来自用户应用的某种活动,并且该服务器预期某 种与其内部处理无关的事情发生。wait_event 将标识特 定的等待点。 • IPC:服务器进程 正 在 等 待 来 自 服 务 器 中 另 一 个 进 程 的 某 种 活 动。 wait_event 将标识特定的等待点。 • Timeout:服务器进程正在等待一次超时 发生。wait_event 将标识特定的等待点。 • IO:服务器进程正在等待一次 IO 完成。 wait_event text 如果后端当前正在等待,则是等待事件的名称,否则为 NULL。 见续表 349 第4章 动态性能视图 表 4.1.1 – 续表 列 类型 描述 state text 这个后端的当前总体状态。可能的值是: • active:后端正在执行一个查询。 • idle 后端正在等待一个新的客户端命令。 • idle in transaction:后端在一个事 务中,但是当前没有正在执行一个查询。 • idle in transaction (aborted):这个状态与 idle in transaction 相似,不过 在该事务中的一个语句导致了一个错误。 • fastpath function call:后端正在执行一个 fastpath 函数。 • disabled:如果在这个后端中 tra ck_activities 被禁用,则报告这个状态。 backend_xid xid 这个后端的顶层事务标识符(如果存在)。 backend_xmin xid 当前后端的 xmin 范围。 query text 这个后端最近查询的文本。如果 state 为 active, 这 个 域 显 示 当 前 正 在 执 行 的 查 询。 在 所 有 其 他 状 态 下,它显示上一个被执行的查询。默认情况下,查询 文本会被截断至 1024 个字符,这个值可以通过参数 track_activity_query_size 更改。 backend_type text 当 前 后 端 的 类 型。 可 能 的 类 型 是 autovacuum launcher, autovacuum worker, logical tion replication launcher, logical worker, background worker, parallel writer, client end, checkpointer, startup, wa replicaback- lreceiver, walsender 以及 walwriter。除此以外,由扩展注册的后台 Worker 可能有额外的类型。 4.2 sys_stat_all_indexes 当前数据库中的每个索引一行,显示:表 OID、索引 OID、模式名、表名、索引名、使用了该索引的索引扫描 总数、索引扫描返回的索引记录数、使用该索引的简单索引扫描抓取的活表 (livetable) 中数据行数。当前数据库中的 每个索引一行,显示与访问指定索引有关的统计信息 350 第4章 动态性能视图 表 4.2.1: sys_stat_all_indexes 视图 列 类型 描述 relid oid 这个索引的基表的 OID indexrelid oid 这个索引的 OID schemaname name 这个索引所在的模式的名称 relname name 这个索引的基表的名称 indexrelname name 这个索引的名称 idx_scan bigint 在这个索引上发起的索引扫描次数 idx_tup_read bigint 在这个索引上由扫描返回的索引项数量 idx_tup_fetch bigint 被使用这个索引的简单索引扫描取得的活着的表行数量 4.3 sys_stat_all_tables 当前数据库中每个表一行,显示有关访问指定表的统计信息。 表 4.3.1: sys_stat_all_tables 视图 列 类型 描述 relid oid 一个表的 OID schemaname name 这个表所在的模式的名称 relname name 这个表的名称 seq_scan bigint 在这个表上发起的顺序扫描的次数 seq_tup_read bigint 被顺序扫描取得的活着的行的数量 idx_scan bigint 在这个表上发起的索引扫描的次数 idx_tup_fetch bigint 被索引扫描取得的活着的行的数量 n_tup_ins bigint 被插入的行数 n_tup_upd bigint 被更新的行数(包括 HOT 更新的行) n_tup_del bigint 被删除的行数 见续表 351 第4章 动态性能视图 表 4.3.1 – 续表 列 类型 描述 n_tup_hot_upd bigint 被更新的 HOT 行数(即不要求独立索引更新的行更新) n_live_tup bigint 活着的行的估计数量 n_dead_tup bigint 死亡行的估计数量 n_mod_since_analyze bigint 从这个表最后一次被分析后备修改的行的估计数量 last_vacuum timestamp with time zone 上次这个表被手动清理的时间(不统计 VACUUM FULL) last_autovacuum timestamp with time zone 上次这个表被自动清理守护进程清理的时间 last_analyze timestamp with time zone 上次这个表被手动分析的时间 last_autoanalyze timestamp with time zone 上次这个表被自动清理守护进程分析的时间 vacuum_count bigint 这个表已被手工清理的次数(不统计 VACUUM FULL) autovacuum_count bigint 这个表已被自动清理守护进程清理的次数 analyze_count bigint 这个表已被手工分析的次数 autoanalyze_count bigint 这个表已被自动清理守护进程分析的次数 4.4 sys_stat_archiver 只有一行,显示有关 WAL 归档进程活动的统计信息。 表 4.4.1: sys_stat_archiver 视图 列 类型 描述 archived_count bigint 已被成功归档的 WAL 文件数量 last_archived_wal text 最后一个被成功归档的 WAL 文件名称 last_archived_time timestamp with time zone 最后一次成功归档操作的时间 failed_count bigint 失败的归档 WAL 文件尝试的数量 last_failed_wal text 最后一次失败的归档操作的 WAL 文件名称 last_failed_time timestamp with time zone 最后一次失败的归档操作的时间 见续表 352 第4章 动态性能视图 表 4.4.1 – 续表 列 类型 描述 stats_reset timestamp with time zone 这些统计信息最后一次被重置的时间 4.5 sys_stat_bgwriter 只有一行,显示有关后台写进程的活动的统计信息。 表 4.5.1: sys_stat_bgwriter 视图 列 类型 描述 checkpoints_timed bigint 已经被执行的计划中检查点的数量 checkpoints_req bigint 已经被执行的请求检查点的数量 checkpoint_write_time double precision 在文件被写入磁盘的检查点处理部分花费的总时间,以 毫秒计 checkpoint_sync_time double precision 在文件被同步到磁盘中的检查点处理部分花费的总时 间,以毫秒计 buffers_checkpoint bigint 在检查点期间被写的缓冲区数目 buffers_clean bigint 被后台写进程写的缓冲区数目 maxwritten_clean bigint 后台写进程由于已经写了太多缓冲区而停止清洁扫描的 次数 buffers_backend bigint 被一个后端直接写的缓冲区数量 buffers_backend_fsync bigint 一个后端不得不自己执行 fsync 调用的次数(通常即使 后端自己进行写操作,后台写进程也会处理这些) buffers_alloc bigint 被分配的缓冲区数量 stats_reset timestamp with 这些统计信息上次被重置的时间 time zone 4.6 sys_stat_cached_plans 查询当前 Backend 的执行计划缓存统计信息和状态。 353 第4章 动态性能视图 表 4.6.1: sys_stat_cached_plans 视图 列 类型 描述 query text 查询语句 text command text SQL 命令类型 num_params bigint SQL 语句的绑定变量个数 cursor_options bigint SQL 语句的游标选项标记位,可以在游标级别指定缓存 模式 soft_parse bigint 该游标软解析次数 hard_parse bigint 该游标硬解析次数 ref_count bigint 该游标被引用次数 is_oneshot boolean 是否为 one-shot 执行计划 is_saved boolean 缓存计划是否已经保存 is_valid boolean 是否可用,比如关系表重建后游标自动失效 generic_cost bigint 通用执行计划的成本,-1 表示未知 total_custom_cost bigint custom 执行计划的总成本 num_custom_plans bigint custom 执行计划总数 4.7 sys_stat_database 每个数据库一行,显示数据库范围的统计信息。 表 4.7.1: sys_stat_database 视图 列 类型 描述 datid oid 一个数据库的 OID,或属于共享关系的对象为 0。 datname name 此数据库的名称,或共享对象的 NULL。 见续表 354 第4章 动态性能视图 表 4.7.1 – 续表 列 类型 描述 numbackends integer 当前连接到这个数据库的后端数量,或者 NULL 为共享对象。这是 此视图中唯一返回反映当前状态的值的列;所有其他列都返回上次 重置后的累积值。 xact_commit bigint 在这个数据库中已经被提交的事务的数量 xact_rollback bigint 在这个数据库中已经被回滚的事务的数量 blks_read bigint 在这个数据库中被读取的磁盘块的数量 blks_hit bigint 磁盘块被发现已经在缓冲区中的次数,这样不需要一次读取(这只 包括 PostgreSQL 缓冲区中的命中,而不包括在操作系统文件系统 缓冲区中的命中) tup_returned bigint 在这个数据库中被查询返回的行数 tup_fetched bigint 在这个数据库中被查询取出的行数 tup_inserted bigint 在这个数据库中被查询插入的行数 tup_updated bigint 在这个数据库中被查询更新的行数 tup_deleted bigint 在这个数据库中被查询删除的行数 conflicts bigint 由于与恢复冲突而在这个数据库中被取消的查询的数目(冲突只发 生在后备服务器上,详见 sys_stat_database_conflicts)。 temp_files bigint 在这个数据库中被查询创建的临时文件的数量。所有临时文件都被 统计,不管为什么创建这些临时文件(如排序或哈希),并且不管 log_temp_files 设置。 temp_bytes bigint 在这个数据库中被查询写到临时文件中的数据总量。所有临时文件 都被统计,不管为什么创建这些临时文件(如排序或哈希),并且 不管 log_temp_files 设置。 deadlocks bigint 在这个数据库中被检测到的死锁数 checksum_failures bigint 在此数据库(或共享对象上)检测到的数据页校验和失败的次数, 如果没有启用数据校验和,则为 NULL。 checksum_last_failure timestamp with time blk_read_time 在此数据库(或共享对象上)检测到最后一个数据页校验和失败的 zone 时间,如果没有启用数据校验和,则为 NULL。 double precision 在这个数据库中后端花费在读取数据文件块的时间,以毫秒计 见续表 355 第4章 动态性能视图 表 4.7.1 – 续表 列 类型 描述 blk_write_time double precision 在这个数据库中后端花费在写数据文件块的时间,以毫秒计 stats_reset timestamp with time 这些统计信息上次被重置的时间 zone 4.8 sys_stat_database_conflicts 每个数据库一行,显示数据库范围的统计信息,这些信息的内容是关于由于与后备服务器的恢复过程发生冲突而 被取消的查询。 表 4.8.1: sys_stat_database_conflicts 视图 列 类型 描述 datid oid 一个数据库的 OID datname name 这个数据库的名称 confl_tablespace bigint 这个数据库中由于表空间被删掉而取消的查询数量 confl_lock bigint 这个数据库中由于锁超时而取消的查询数量 confl_snapshot bigint 这个数据库中由于旧快照而取消的查询数量 confl_bufferpin bigint 这个数据库中由于被占用的缓冲区而取消的查询数量 confl_deadlock bigint 这个数据库中由于死锁而取消的查询数量 4.9 sys_stat_gssapi 每个连接(常规和复制)有一行,显示关于 GSSAPI 验证和加密的信息。 表 4.9.1: sys_stat_gssapi 视图 列 类型 描述 pid integer 后台的进程 ID 见续表 356 第4章 动态性能视图 表 4.9.1 – 续表 列 类型 描述 gss_authenticated boolean 如果此连接使用了 GSSAPI 认证,则为 true。 principal text 如果没有使用 GSSAPI 来验证此连接,则为 NULL。如 果 principal 长于 NAMEDATALEN(标准构建中为 64 个字符),则该字段被截断。 encrypted boolean 如果此连接上使用了 GSSAPI 加密,则为 True。 4.10 sys_stat_instevent 统计数据库中所有的事件 event 信息。 表 4.10.1: sys_stat_instevent 视图 列 类型 描述 event_type text event 类型。 event_name text event 名字。 background boolean 1 代表后台进程,NULL 代表普通进程。 calls bigint 调用次数。 times bigint 时间。 4.11 sys_stat_instio 统计数据库中 io 信息。 表 4.11.1: sys_stat_instio 视图 列 类型 描述 backend_type text 后端类型。 datid oid 该后端连接的数据库的 OID。 见续表 357 第4章 动态性能视图 表 4.11.1 – 续表 列 类型 描述 reltablespace oid 关系的表空间 OID。 relid oid 关系 OID。 io_type text io 类型。 file_type text 文件类型。 wait_event text 等待事件名称。 background boolean 1 代表后台进程,NULL 代表普通进程。 calls bigint io 次数。 times bigint io 时间。 bytes bigint io 字节数。 4.12 sys_stat_instlock 统计数据库中锁信息。 表 4.12.1: sys_stat_instlock 视图 列 类型 描述 lock_name text 锁名。 lock_mode text 锁的模式。 acquire_type text 锁的获取类型。 background boolean 代表后台进程,NULL 代表普通进程。 calls bigint 次数。 nowait_gets bigint 未等待获得锁的次数。 nowait_miss bigint 未等待获得锁失败的次数。 wait_gets bigint 等待获得锁的次数。 wait_miss bigint 等待获得锁失败的次数。 见续表 358 第4章 动态性能视图 表 4.12.1 – 续表 列 类型 描述 wait_times bigint wait_gets 和 wait_miss 两种情况的累计值。 4.13 sys_stat_msgaccum 统计数据库中消息队列的信息。 表 4.13.1: sys_stat_msgaccum 视图 列 类型 描述 message text 消息队列。 calls bigint 次数。 times bigint 时间。 4.14 sys_stat_progress_cluster 每个运行着 CLUSTER 或 VACUUM FULL 的后端一行,显示当前进度。 表 4.14.1: sys_stat_progress_cluster 视图 列 类型 描述 pid integer 后台的进程 ID。 datid oid 该后端连接的数据库的 OID。 datname name 与此后端连接的数据库的名称。 relid oid 被聚类的表的 OID。 command text 正在运行的命令。CLUSTER 或 VACUUM FULL。 phase text 当前处理阶段。 cluster_index_relid oid 如果正在使用索引对表进行扫描,这就是正在使用的索引的 OID; 否则为 0。 见续表 359 第4章 动态性能视图 表 4.14.1 – 续表 列 类型 描述 扫描的堆元组数. heap_tuples_scanned bigint 这个计数器只有在阶段为 seq scanning heap, index scanning heap or writing new heap 时才会前进。 写入的堆元组的数量。这个计数器只有在阶段为 heap_tuples_written bigint seq scanning heap, index scanning heap or writing new heap 时才会前进。 heap_blks_total bigint 表中的堆块总数。这个数字是在 seq 扫描堆的开始时报告的。 heap_blks_scanned bigint 扫描的堆块数量。这个计数器只有在阶段为 seq 扫描堆时才会前 进。 重建的索引数。该计数器仅在重建索引阶段时才会前进。 index_rebuild_count bigint 4.15 sys_stat_progress_create_index 每个后台运行 CREATE INDEX 或 REINDEX 的后端都有一行,显示当前的进度。 表 4.15.1: sys_stat_progress_create_index 视图 列 类型 描述 pid integer 后端进程 ID. datid oid 该后端连接的数据库的 OID。 datname name 与此后端连接的数据库的名称。 relid oid 创建索引所依据的表的 OID。 index_relid oid 被创建或重新索引的索引的 OID。在非当前的 CREATE INDEX 中,这个值为 0。 command text 正在运行的命令:CREATE INDEX, CREATE INDEX CONCURRENTLY, REINDEX, 或 REINDEX CONCURRENTLY. phase text 索引创建的当前处理阶段。 lockers_total bigint 在适用的情况下,需要等待的储物柜总数。 lockers_done bigint 已经等待的储物柜数量。 见续表 360 第4章 动态性能视图 表 4.15.1 – 续表 列 类型 描述 current_locker_pid bigint 目前正在等待的储物柜的进程 ID。 blocks_total bigint 本阶段要处理的区块总数。 blocks_done bigint 当前阶段已经处理的区块数量。 tuples_total bigint 当前阶段要处理的元组总数。 tuples_done bigint 在当前阶段已经处理的元组数量。 partitions_total bigint 在分区表上创建索引时,该列被设置为要在其上创建索 引的分区总数。 partitions_done 当在分区表上创建索引时,该列被设置为在其上完成索 bigint 引的分区数。 4.16 sys_stat_progress_vacuum 每个运行着 VACUUM 的后端(包括 autovacuum 工作者进程)一行,显示当前的进度。 表 4.16.1: sys_stat_progress_vacuum 视图 列 类型 描述 pid integer 后端的进程 ID。 datid oid 这个后端连接的数据库的 OID。 datname name 这个后端连接的数据库的名称。 relid oid 被 vacuum 的表的 OID。 phase text vacuum 的当前处理阶段。 heap_blks_total bigint 该表中堆块的总数。这个数字在扫描开始时报告,之后增加的 块将不会(并且不需要)被这个 VACUUM 访问。 heap_blks_scanned bigint 被扫描的堆块数量。由于可见性映射被用来优化扫描,一些块 将被跳过而不做检查,被跳过的块会被包括在这个总数中,因 此当清理完成时这个数字最终将会等于 heap_blks_total。仅当 处于扫描堆阶段时这个计数器才会前进。 见续表 361 第4章 动态性能视图 表 4.16.1 – 续表 列 类型 描述 heap_blks_vacuumed bigint 被清理的堆块数量。除非表没有索引,这个计数器仅在处于清 理堆阶段时才会前进。不包含死亡元组的块会被跳过,因此这 个计数器可能有时会向前跳跃一个比较大的增量。 index_vacuum_count bigint 已完成的索引清理周期数。 max_dead_tuples bigint 在需要执行一个索引清理周期之前我们可以存储的死亡元组 数,取决于 maintenance_work_mem。 num_dead_tuples bigint 从上一个索引清理周期以来收集的死亡元组数。 4.17 sys_stat_replication 每一个 WAL 发送进程一行,显示有关到该发送进程连接的后备服务器的复制的统计信息。 表 4.17.1: sys_stat_replication 视图 列 类型 描述 pid integer 一个 WAL 发送进程的进程 ID usesysid oid 登录到这个 WAL 发送进程的用户的 OID usename name 登录到这个 WAL 发送进程的用户的 名称 application_name text 连接到这个 WAL 发送进程的应用的 名称 client_addr inet 连接到这个 WAL 发送进程的客户端 的 IP 地址。如果这个域为空,它表 示该客户端通过服务器机器上的一 个 Unix 套接字连接。 见续表 362 第4章 动态性能视图 表 4.17.1 – 续表 列 类型 描述 client_hostname text 连接上的客户端的主机名,由一次 对 client_addr 的逆向 DNS 查找报 告。这个域将只对 IP 连接非空,并 且只有在 log_hostname 被启用时 非空 client_port integer 客户端用来与这个 WAL 发送进程通 讯的 TCP 端口号,如果使用 Unix 套接字则为-1 backend_start timestamp with time zone 这个进程开始的时间,即客户端是 何时连接到这个 WAL 发送进程的 backend_xmin xid 由 hot_standby_feedback 报告的这 个后备机的 xmin 水平线。 state text 当前的 WAL 发送进程状态。可能的 值是: • startup:这个 WAL 发送器正 在启动。 • catchup:这个 WAL 发送器连接的后备机正在追赶主服 务器。 • streaming: 这个 WAL 发送器在它连接的后备服 务器追上主服务器之后用流传送更 改。 • backup: 这个 WAL 发送器正在发送一个备 份。 • stopping:这个 WAL 发送器 正在停止。 sent_lsn sys_lsn 在这个连接上发送的最后一个预写 式日志的位置 write_lsn sys_lsn 被这个后备服务器写入到磁盘的最 后一个预写式日志的位置 见续表 363 第4章 动态性能视图 表 4.17.1 – 续表 列 类型 描述 flush_lsn sys_lsn 被这个后备服务器刷入到磁盘的最 后一个预写式日志的位置 replay_lsn sys_lsn 被重放到这个后备服务器上的数据 库中的最后一个预写式日志的位置 write_lag interval 在本地刷写近期的 WAL 与接收到后 备服务器已经写入它(但还没有刷 写或者应用)的通知之间流逝的时 间。如果这台服务器被配置为一个 同步后备,这可以用来计量在提交 时 synchronous_commit 的级别 remote_write 所导致的延迟。 flush_lag interval 在本地刷写近期的 WAL 与接收到后 备服务器已经写入并且刷写它(但 还没有应用)的通知之间流逝的时 间。如果这台服务器被配置为一个 同步后备,这可以用来计量在提交 时 syn chronous_commit 的级别 on 所导致的延迟。 replay_lag interval 在本地刷写近期的 WAL 与接收 到后备服务器已经写入它、刷写它 并且应用它的通知之间流逝的时 间。如果这台服务器被配置为一个 同步后备,这可以用来计量在提交 时 synchronous_c ommit 的级别 remote_apply 所导致的延迟。 sync_priority integer 在 基 于 优 先 的 同 步 复 制 中, 这 台 后备服务器被选为同步后备的优 先级。在基于规定数量的同步复制 中,这个值没有效果。 见续表 364 第4章 动态性能视图 表 4.17.1 – 续表 列 类型 描述 sync_state text 这一台后备服务器的同步状态。可 能的值是: • async:这台后备服务器是异 步的。 • potential: 这台后备服务器现在是异步的,但 可能在当前的同步后备失效时变成 同步的。 • sync:这台后备服务器是同步 的。 • quorum:这台后备服务器 被当做规定数量后备服务器的候 选。 reply_time 从备用服务器收到的最后一条回复 timestamp with time zone 信息的发送时间 4.18 sys_stat_shmem 统计数据库中共享内存信息。 表 4.18.1: sys_stat_shmem 视图 列 类型 描述 name text 共享内存。 size bigint 空间大小。 4.19 sys_stat_sqlio 统计数据库中 SQL 语句读写信息。 365 第4章 动态性能视图 表 4.19.1: sys_stat_sqlio 视图 列 类型 描述 userid oid 用户 ID。 datid oid 数据库 ID。 queryid bigint 查询 ID 。 bgio boolean 1 代表后台进程读写,NULL 代表普通进程读 写。 wal_records bigint 语句生成的 WAL 记录总数。 wal_fpi bigint 语句生成的 WAL 整页图像总数。 wal_bytes bigint 语句生成的 WAL 字节总数。 shared_blks_hit bigint 语句的共享块缓存命中总数。 shared_blks_read bigint 语句读取的共享块总数。 shared_blks_dirtied bigint 被语句弄脏的共享块总数。 shared_blks_written bigint 语句写入的共享块总数。 local_blks_hit bigint 语句的本地块缓存命中总数。 local_blks_read bigint 语句读取的本地块总数。 local_blks_dirtied bigint 被语句弄脏的本地块总数。 local_blks_written bigint 语句写入的本地块总数。 temp_blks_read bigint 语句读取的临时块总数。 temp_blks_written bigint 语句写入的临时块总数。 blk_read_time bigint 语句读取块所花费的总时间,以毫秒为单位。 blk_write_time bigint 语句写入块所花费的总时间,以毫秒为单位。 4.20 sys_stat_sqltime 统计数据库中 SQL 语句运行次数等信息。 366 第4章 动态性能视图 表 4.20.1: sys_stat_sqltime 视图 列 类型 描述 userid oid 用户 ID 。 datid oid 数据库 ID。 queryid bigint 查询 ID 。 message text 消息。 bgmsg boolean 1 代表后台进程读写,NULL 代表普通进程读 写。 calls bigint SQL 调用次数。 times bigint SQL 时间。 4.21 sys_stat_sqlwait 统计数据库中 SQL 语句与等待事件的信息。 表 4.21.1: sys_stat_sqlwait 视图 列 类型 描述 userid oid 用户 ID 。 datid oid 数据库 ID。 queryid bigint 查询 ID 。 wait_event_type text 等待事件类型。 wait_event text 等待事件。 calls bigint SQL 调用次数。 times bigint SQL 时间。 4.22 sys_stat_ssl 每个连接(常规的或者复制)一行,显示在这个连接上使用的 SSL 的信息。 367 第4章 动态性能视图 表 4.22.1: sys_stat_ssl 视图 列 类型 描述 pid integer 一个后端或者 WAL 发送进程的进程 ID ssl boolean 如果在这个连接上使用了 SSL 则为真 version text 在用的 SSL 版本,如果这个连接上没有使用 SSL 则为 NULL cipher text 在用的 SSL 密码的名称,如果这个连接上没有使用 SSL 则为 NULL bits integer 使用的加密算法中的位数,如果这个连接上没有使用 SSL 则为 NULL compression boolean 如果使用了 SSL 压缩则为真,否则为假,如果这个连接 上没有使用 SSL 则为 NULL client_dn text 来自所使用的客户端证书的识别名(DN)域,如果没 有提供客户端证书或者这个连接上没有使用 SSL 则为 NULL。如果 DN 域长度超过 NAMEDATALEN(标 准编译中是 64 个字符),则它会被截断。 client_serial numeric 客户端证书的序列号,如果没有提供客户端证书,或者 在此连接上不使用 SSL,则为 NULL。证书序列号和证 书发行者的组合可以唯一地识别一个证书(除非发行者 错误地重复使用序列号)。 issuer_dn text 客户端证书的发行者的 DN,如果没有提供客户端证 书,或者如果这个连接上没有使用 SSL,则为 NULL。 这个字段被截断,就像 client_dn 一样。 4.23 sys_stat_subscription 每个订阅至少一行,显示有关该订阅的工作者的信息。 368 第4章 动态性能视图 表 4.23.1: sys_stat_subscription 视图 列 类型 介绍 subid oid 订阅的 OID subname text 订阅的名称 pid integer 订阅工作者进程的进程 ID relid oid 工作者正在同步的关系的 OID,对于主应用工作者为空 received_lsn sys_lsn 接收到的最后一个预写式日志位置,这个字段的初始值是 0 last_msg_send_time timestamp with time zone 从源头 WAL 发送器接收到的最后一个消息的发送时间 last_msg_receipt_time timestamp with time zone 从源头 WAL 发送器接收到的最后一个消息的接收时间 latest_end_lsn sys_lsn 最后一个报告给源头 WAL 发送器的预写式日志位置 latest_end_time timestamp with time zone 报告给源头 WAL 发送器的最后一个预写式日志位置的时间 4.24 sys_stat_sys_indexes 和sys_stat_all_indexes 一样,但只显示系统表上的索引。 4.25 sys_stat_sys_tables 和sys_stat_all_tables 一样,但只显示系统表。 4.26 sys_stat_user_functions 对于所有跟踪功能,函数的 OID,模式,名称,数量通话总时间,和自我的时间。自我时间是在函数本身所花费 的时间量,总时间包括它调用函数所花费的时间。时间值以毫秒为单位。每一个被跟踪的函数一行,显示与执行该函 数有关的统计信息。 369 第4章 动态性能视图 表 4.26.1: sys_stat_user_functions 视图 列 类型 描述 funcid oid 一个函数的 OID schemaname name 这个函数所在的模式的名称 funcname name 这个函数的名称 calls bigint 这个函数已经被调用的次数 total_time double precision 在这个函数以及它所调用的其他函数中花费的总时间,以毫秒计 self_time double precision 在这个函数本身花费的总时间,不包括被它调用的其他函数,以毫秒计 4.27 sys_stat_user_indexes 和sys_stat_all_indexes 一样,但只显示用户表上的索引。 4.28 sys_stat_user_tables 和sys_stat_all_tables 一样,但只显示用户表。 4.29 sys_stat_wal_buffer sys_stat_wal_buffer 视图统计了 WAL BUFFER 实时的运作情况。 表 4.29.1: sys_stat_wal_buffer 视图 列名 类型 描述 name text WAL 日志缓冲区名称,固定显示为“WAL BUFFER”。 bytes bigint WAL BUFFER 缓存空间总长度,此字段值与 Kingbase.conf 配置文件 中 wal_buffers 参数关联,单位为字节。 copied_to text 后台进程最近写入 WAL BUFFER 的 WAL 日志在 WAL BUFFER 中 的偏移。注意的是,WAL BUFFER 是环形的数据结构,此字段值会 在区间 [1, bytes] 之间循环取值。 见续表 370 第4章 动态性能视图 表 4.29.1 – 续表 列名 类型 描述 copied_to_lsn sys_lsn 后台进程最近写入 WAL BUFFER 的 WAL 日志的结束 LSN。此字段 值在 KES 数据库运行过程中递增。 coping_data_len bigint 查询时刻后台进程正在写入 WAL BUFFER 的 WAL 日志总长度。 written_to text 最近一个从 WAL BUFFER 写入磁盘的 WAL 日志在 WAL BUFFER 中的偏移。注意的是,WAL BUFFER 是环形的数据结构,此字段值 会在区间 [1, bytes] 之间循环取值。 written_to_lsn 最近一个从 WAL BUFFER 写入磁盘的 WAL 日志的 LSN。此字段值 sys_lsn 在 KES 数据库运行过程中递增。 writing_data_len bigint 查询时刻正在从 WAL BUFFER 向磁盘刷写的 WAL 日志总长度。 utilization_rate text WAL BUFFER 缓冲区使用率,此字段值表示当前 WAL BUFFER 中 待落盘的 WAL 日志总长度与整个 WAL BUFFER 缓冲区总长度之间 的比值。如果此字段值长时间接近 100%,那么需要从两方面考虑来改 善现状: (1)检查 WAL 日志文件所在磁盘 IO 状况。如果发现磁盘 IO 是性 能瓶颈,那么就应该考虑使用磁盘 IO 性能更好的磁盘来存储 WAL 日 志文件。 (2)如果 WAL 日志文件所在磁盘 IO 不是性能瓶颈,那么可尝试适 当增加 WAL BUFFER 的尺寸来提升 WAL 日志的写性能。 write_rate 两次相邻查询的时间间隔内,从 WAL BUFFER 向磁盘的平均 WAL text 日志刷写速率。如果需要更精确的 write rate 值,那么可以将当前视 图的查询时间间隔调小。 4.30 sys_stat_wal_receiver 只有一行,显示来自 WAL 接收器所连接服务器的有关该接收器的统计信息。 表 4.30.1: sys_stat_wal_receiver 视图 列 类型 描述 pid integer WAL 接收器进程的进程 ID status text WAL 接收器进程的活动状态 见续表 371 第4章 动态性能视图 表 4.30.1 – 续表 列 类型 描述 receive_start_lsn sys_lsn WAL 接收器启动时使用的第一个预写式日志位置 receive_start_tli integer WAL 接收器启动时使用的第一个时间线编号 received_lsn sys_lsn 已经接收到并且已经被杀入磁盘的最后一个预写式日志 的位置,这个域的初始值是 WAL 接收器启动时使用的 第一个日志位置 received_tli integer 已经接收到并且已经被杀入磁盘的最后一个预写式日志 的时间线编号,这个域的初始值是 WAL 接收器启动时 使用的第一个日志所在的时间线编号 last_msg_send_time timestamp with 从源头 WAL 发送器接收到的最后一个消息的发送时间 time zone last_msg_receipt_time timestamp with 从源头 WAL 发送器接收到的最后一个消息的接收时间 time zone latest_end_lsn sys_lsn 报告给源头 WAL 发送器的最后一个预写式日志位置 latest_end_time timestamp with 报告给源头 WAL 发送器最后一个事务日志位置的时间 time zone slot_name text 这个 WAL 接收器使用的复制槽的名称 sender_host text 这个 WAL 接收器连接到的 Postgr eSQL 实例的主机。 这可以是一个主机名、一个 IP 地址,如果连接是通过 Un ix 套接字则是一个目录路径(为目录的情况可以 被辨别出来,因为路径将总是一个绝对路径并且以/开 头)。 sender_port integer 这个 WAL 接收器连接到的 PostgreSQL 实例的端口 号。 conninfo text 这个 WAL 接收器使用的连接串,安全相关的域会被隐 去。 4.31 sys_stat_xact_all_tables 和sys_stat_all_tables 相似,但计数动作只在当前事务内发生(还没有被包括在 sys_stat_all_tables 和相关视 图中)。用于生存和死亡行数量的列以及清理和分析动作在此视图中不出现。 372 第4章 动态性能视图 表 4.31.1: sys_stat_xact_all_tables 视图 列 类型 描述 relid oid 一个表的 OID schemaname name 这个表所在的模式的名称 relname name 这个表的名称 seq_scan bigint 在这个表上发起的顺序扫描的次数 seq_tup_read bigint 被顺序扫描取得的活着的行的数量 idx_scan bigint 在这个表上发起的索引扫描的次数 idx_tup_fetch bigint 被索引扫描取得的活着的行的数量 n_tup_ins bigint 被插入的行数 n_tup_upd bigint 被更新的行数(包括 HOT 更新的行) n_tup_del bigint 被删除的行数 n_tup_hot_upd bigint 被更新的 HOT 行数(即不要求独立索引更新的行更 新) 4.32 sys_stat_xact_sys_tables 和sys_stat_xact_all_tables 一样,但只显示系统表。 4.33 sys_stat_xact_user_functions 和sys_stat_user_functions 相 似, 但 是 只 统 计 在 当 前 事 务 期 间 的 调 用 (还 没 有 被 包 括 在 sys_stat_user_functions 中)。 4.34 sys_stat_xact_user_tables 和sys_stat_xact_all_tables 一样,但只显示用户表。 373 第4章 动态性能视图 4.35 sys_stat_all_indexes 当前数据库中的每个索引一行,显示:表 OID、索引 OID、模式名、表名、索引名、使用了该索引的索引扫描 总数、索引扫描返回的索引记录数、使用该索引的简单索引扫描抓取的活表 (livetable) 中数据行数。当前数据库中的 每个索引一行,显示与访问指定索引有关的统计信息 表 4.35.1: sys_stat_all_indexes 视图 列 类型 描述 relid oid 这个索引的基表的 OID indexrelid oid 这个索引的 OID schemaname name 这个索引所在的模式的名称 relname name 这个索引的基表的名称 indexrelname name 这个索引的名称 idx_scan bigint 在这个索引上发起的索引扫描次数 idx_tup_read bigint 在这个索引上由扫描返回的索引项数量 idx_tup_fetch bigint 被使用这个索引的简单索引扫描取得的活着的表行数量 4.36 sys_statio_all_sequences 当前数据库中每个序列对象一行,显示:序列 OID、模式名、序列名、序列的磁盘读取总数、序列的缓冲区命中 总数。当前数据库中的每个序列一行,显示与指定序列上的 I/O 有关的统计信息。 表 4.36.1: sys_statio_all_sequences 视图 列 类型 描述 relid oid 一个序列的 OID schemaname name 这个序列所在的模式的名称 relname name 这个序列的名称 blks_read bigint 从这个序列中读取的磁盘块数 blks_hit bigint 在这个序列中的缓冲区命中数量 374 第4章 动态性能视图 4.37 sys_statio_all_tables 当前数据库中每个表一行 (包括 TOAST 表),显示:表 OID、模式名、表名、从该表中读取的磁盘块总数、缓冲 区命中次数、该表上所有索引的磁盘块读取总数、该表上所有索引的缓冲区命中总数、在该表的辅助 TOAST 表 (如 果存在) 上的磁盘块读取总数、在该表的辅助 TOAST 表 (如果存在) 上的缓冲区命中总数、TOAST 表的索引的磁盘 块读取总数、TOAST 表的索引的缓冲区命中总数。当前数据库中的每个表一行,显示有关在指定表上 I/O 的统计信 息。 表 4.37.1: sys_statio_all_tables 视图 列 类型 描述 relid oid 一个表的 OID schemaname name 这个表所在的模式的名称 relname name 这个表的名称 heap_blks_read bigint 从这个表读取的磁盘块数量 heap_blks_hit bigint 在这个表中的缓冲区命中数量 idx_blks_read bigint 从这个表上所有索引中读取的磁盘块数 idx_blks_hit bigint 在这个表上的所有索引中的缓冲区命中数量 toast_blks_read bigint 从这个表的 TOAST 表(如果有)读取的磁盘块数 toast_blks_hit bigint 在这个表的 TOAST 表(如果有)中的缓冲区命中数量 tidx_blks_read bigint 从这个表的 TOAST 表索引(如果有)中读取的磁盘块数 tidx_blks_hit bigint 在这个表的 TOAST 表索引(如果有)中的缓冲区命中数量 4.38 sys_stat_sys_indexes 视图结构和sys_stat_all_indexes 一样,但只显示系统表上的索引。 4.39 sys_statio_sys_sequences 和sys_statio_all_sequences 一样,但只显示系统序列(目前没有定义系统序列,因此这个视图总是为空)。 375 第4章 动态性能视图 4.40 sys_statio_sys_tables 和sys_statio_all_tables 一样,但只显示系统表。 4.41 sys_stat_user_indexes 视图结构和sys_stat_all_indexes 一样,但只显示用户表上的索引。 4.42 sys_statio_user_sequences 和sys_statio_all_sequences 一样,但只显示用户序列。 4.43 sys_statio_user_tables 和sys_statio_all_tables 一样,但只显示用户表。 376 第5章 等待事件 5 第 章 等待事件 等待事件 (Wait event) 是 KingbaseES 数据库性能分析的一项重要的参考指标。 本部分提供 KingbaseES 数据库系统等待事件的相关信息。 你可以通过下面的 SQL 语句查询/分析 KingbaseES 等待事件相关信息。 下面的例子展示了如何查看实时等待事件 sys_stat_activity 视图 SELECT pid, wait_event_type, wait_event FROM sys_stat_activity WHERE wait_event is NOT NULL; pid | wait_event_type | wait_event ------+------------------+--------------2540 | Lock | relation 6644 | LWLock | ProcArrayLock (2 rows) 每一行代表一个服务器进程, 显示进程当前所处的等待事件。 5.1 LWLock 后端在等待一个轻量级锁:轻量级锁用于保护共享内存中的数据结构,防止并发问题。 377 第5章 等待事件 表 5.1.1: LWLock 类型等待事件 等待事件名称 描述 ShmemIndexLock 等待在共享内存中查找或者分配空间。 OidGenLock 等待分配或者赋予一个 OID。 XidGenLock 等待分配或者赋予一个事务 ID。 ProcArrayLock 等待在事务结尾得到一个快照或者清除事务 ID。 SInvalReadLock 等待从共享无效消息队列中检索或者移除消息。 SInvalWriteLock 等待在共享无效消息队列中增加一个消息。 WALBufMappingLock 等待在 WAL 缓冲区中替换一个页面。 WALWriteLock 等待 WAL 缓冲区被写入到磁盘。 ControlFileLock 等待读取或者更新控制文件或创建一个新的 WAL 文件。 CheckpointLock 等待执行检查点。 CLogControlLock 等待读取或者更新事务状态。 SubtransControlLock 等待读取或者更新子事务信息。 MultiXactGenLock 等待读取或者更新共享多事务状态。 MultiXactOffsetControlLock 等待读取或者更新多事务偏移映射。 MultiXactMemberControlLock 等待读取或者更新多事务成员映射。 RelCacheInitLock 等待读取或者写入关系缓冲区初始化文件。 CheckpointerCommLock 等待管理 fsync 请求。 TwoPhaseStateLock 等待读取或者更新预备事务的状态。 TablespaceCreateLock 等待创建或者删除表空间。 BtreeVacuumLock 等待读取或者更新一个 B-树索引的 vacuum 相关的信息。 AddinShmemInitLock 等待管理共享内存中的空间分配。 AutovacuumLock 自动清理工作者或者启动器等待更新或者读取自动清理工作者的当 前状态。 AutovacuumScheduleLock 等待确认选中进行清理的表仍需要清理。 SyncScanLock 等待为同步扫描得到一个表上扫描的开始位置。 见续表 378 第5章 等待事件 表 5.1.1 – 续表 等待事件名称 描述 RelationMappingLock 等待更新用来存储目录到文件节点映射的关系映射文件。 AsyncCtlLock 等待读取或者更新共享通知状态。 AsyncQueueLock 等待读取或者更新通知消息。 SerializableXactHashLock 等待检索或者存储有关可序列化事务的信息。 SerializableFinishedListLock 等待访问已结束可序列化事务的列表。 SerializablePredicateLockListLock 等待在由可序列化事务持有的所列表上执行一个操作。 OldSerXidLock 等待读取或者记录冲突的可序列化事务。 SyncRepLock 等待读取或者更新有关同步复制的信息。 BackgroundWorkerLock 等待读取或者更新后台工作者状态。 DynamicSharedMemoryControlLock 等待读取或者更新动态共享内存状态。 AutoFileLock 等待更新 kingbase.auto.conf 文件。 ReplicationSlotAllocationLock 等待分配或者释放一个复制槽。 ReplicationSlotControlLock 等待读取或者更新复制槽状态。 CommitTsControlLock 等待读取或者更新事务提交时间戳。 CommitTsLock 等待读取或者更新事务时间戳的最新设置值。 ReplicationOriginLock 等待设置、删除或者使用复制源头。 MultiXactTruncationLock 等待读取或者阶段多事务信息。 OldSnapshotTimeMapLock 等待读取或者更新旧的快照控制信息。 LogicalRepWorkerLock 等待逻辑复制工作者上的动作完成。 CLogTruncationLock 等待执行 txid _status 或更新可用的最新事务 id。 clog 在等地 clog (事务状态) 缓冲区上的 I/O。 commit_timestamp 等待提交时间戳缓冲区上的 I/O。 subtrans 等待子事务缓冲区上的 I/O。 multixact_offset 等待多事务偏移缓冲区上的 I/O。 见续表 379 第5章 等待事件 表 5.1.1 – 续表 等待事件名称 描述 multixact_member 等待多事务成员缓冲区上的 I/O。 async 等待 async(通知)缓冲区上的 I/O。 oldserxid 等待 oldserxid 缓冲区上的 I/O。 wal_insert 等待把 WAL 插入到一个内存缓冲区。 buffer_content 等待读取或者写入内存中的一个数据页。 buffer_io 等待一个数据页面上的 I/O。 replication_origin 等待读取或者更新复制进度。 replication_slot_io 等待一个复制槽上的 I/O。 proc 等待读取或者更新 fast-path 锁信息。 buffer_mapping 等待把一个数据块与缓冲池中的一个缓冲区关联。 lock_manager 等待增加或检查用于后端的锁,或者等待加入或退出一个锁定组。 predicate_lock_manager 等待增加或者检查谓词锁信息。 serializable_xact 等待在并行查询中对一个可序列化事务执行操作。 parallel_query_dsa 等待并行查询动态共享内存分配锁。 tbm 等待 TBM 共享迭代器锁。 parallel_append 在 Parallel Append 计划执行期间等待选择下一个子计划。 parallel_hash_join 在 Parallel Hash 计划执行期间等待分配或交换一块内存或者更新计 数器。 5.2 Lock 后端在等待一个重量级锁:重量级锁也被称为锁管理器锁或简单锁,主要保护 SQL 可见的对象,例如表,同时 也被用于确保特定内部操作的互斥,如关系扩展。 380 第5章 等待事件 表 5.2.1: Lock 类型等待事件 等待事件名称 描述 relation 等待获得一个关系上的锁。 extend 等待扩展一个关系。 page 等待获得一个关系上的页面的锁。 tuple 等待获得一个元组上的锁。 transactionid 等待一个事务结束。 virtualxid 等待获得一个虚拟 xid 锁。 speculative token 等待获取一个 speculative insertion lock。 object 等待获得一个非关系数据库对象上的锁。 userlock 等待获得一个用户锁。 advisory 等待获得一个咨询用户锁。 5.3 BufferPin 服务器进程在等待访问一个数据缓冲区:此时没有其他进程在检查该缓冲区。如果另一个进程持有一个即将需要 读取的数据缓存区的游标,缓冲区 pin 等待可能会被延长。 表 5.3.1: BufferPin 类型等待事件 等待事件名称 描述 BufferPin 等待在一个缓冲区上加 pin。 5.4 Activity 后台辅助进程活动等待:服务器进程处于闲置状态。这类等待被用于在其主处理循环中等待系统进程的活动。 381 第5章 等待事件 表 5.4.1: Activity 类型等待事件 等待事件名称 描述 ArchiverMain 在归档进程的主循环中等待。 AutoVacuumMain 在 autovacuum 启动器进程的主循环中等待。 BgWriterHibernate 在后台写入器进程中等待,休眠中。 BgWriterMain 在后台写入器进程的后台工作者的主循环中等待。 CheckpointerMain 在检查点进程的主循环中等待。 LogicalApplyMain 在逻辑应用进程的主循环中等待。 LogicalLauncherMain 在逻辑启动器进程的主循环中等待。 PgStatMain 在统计收集器进程的主循环中等待。 RecoveryWalAll 在恢复时等待来自于任意类型来源(本地、归档或流)的 WAL。 RecoveryWalStream 在恢复时等待来自于一个流的 WAL。 SysLoggerMain 在系统日志进程的主循环中等待。 WalReceiverMain 在 WAL 接收器进程的主循环中等待。 WalSenderMain 在 WAL 发送器进程的主循环中等待。 WalWriterMain 在 WAL 写入器进程的主循环中等待。 KshMain 在 KSH 进程的主循环中等待。 KwrMain 在 KWR 进程的主循环中等待。 5.5 Client 客户端等待:服务器进程在一个套接字上等待来自用户应用的某种活动,并且该服务器预计将有预期之外的事件 发生。 表 5.5.1: Client 类型等待事件 等待事件名称 描述 ClientRead 等待从客户端读取数据。 见续表 382 第5章 等待事件 表 5.5.1 – 续表 等待事件名称 描述 ClientWrite 等待向客户端写入数据。 LibPQWalReceiverConnect 在 WAL 接收器中等待建立与远程服务器的连接。 LibPQWalReceiverReceive 在 WAL 接收器中等待从远程服务器接收数据。 SSLOpenServer 在尝试连接期间等待 SSL。 WalReceiverWaitStart 等待 startup 进程发送流复制的初始数据。 WalSenderWaitForWAL 在 WAL 发送器进程中等待 WAL 被刷写。 WalSenderWriteData 在 WAL 发送器进程中处理来自 WAL 接收器的回复时等待任意活动。 5.6 Extension 扩展插件等待:服务器进程在一个扩展模块中等待活动。这一类等待用于跟踪自定义等待点。 表 5.6.1: Extension 类型等待事件 等待事件名称 描述 Extension 在一个扩展中等待。 5.7 IPC 进程间通讯等待:服务器进程在等待来自服务器中另一个进程的某种活动。 表 5.7.1: IPC 类型等待事件 等待事件名称 描述 BgWorkerShutdown 等待后台工作者关闭。 BgWorkerStartup 等待后台工作者启动。 BtreePage 等待继续并行 B-树扫描所需的页号变得可 用。 见续表 383 第5章 等待事件 表 5.7.1 – 续表 等待事件名称 描述 CheckpointDone 等待检查点完成。 CheckpointStart 等待检查点开始。 ClogGroupUpdate 等待组领袖在事务结束时更新事务状态。 ExecuteGather 在执行 Gathe r 节点时等待来自子进程的活 动。 Hash/Batch/Allocating 等待一个选出的 Parallel Hash 参与者分配哈 希表。 Hash/Batch/Electing 在选出一个 Parallel Hash 参与者来分配一个 哈希表。 Hash/Batch/Loading 等待其他 Parallel Hash 参与者完成装载哈希 表。 Hash/Build/Allocating 等待一个选出的 Parallel Hash 参与者分配初 始哈希表。 Hash/Build/Electing 在选出一个 Parallel Hash 参与者以分配初始 哈希表。 Hash/Build/HashingInner 等待其他 Parallel Hash 参与者完成对内关系 的哈希操作。 Hash/Build/HashingOuter 等待其他 Parallel Hash 参与者完成对外关系 的哈希操作。 Hash/GrowBatches/Allocating 等待一个选出的 Parallel Hash 参与者分配更 多批次。 Hash/GrowBatches/Deciding 在选出一个 Parallel H ash 参与者决定未来 的批次增长。 Hash/GrowBatches/Electing 在选出一个 Parallel Hash 参与者分配更多批 次。 Hash/GrowBatches/Finishing 在等待一个选出的 Parallel H ash 参与者决 定未来的批次增长。 Hash/GrowBatches/Repartitioning 等待其他 Parallel Hash 参与者完成重新分 区。 见续表 384 第5章 等待事件 表 5.7.1 – 续表 等待事件名称 描述 Hash/GrowBuckets/Allocating 等待一个选出的 Parallel Hash 参与者完成更 多桶的分配。 Hash/GrowBuckets/Electing 在选出一个 Parallel Hash 参与者分配更多 桶。 Hash/GrowBuckets/Reinserting 等待其他 Parallel Hash 参与者完成将元组插 入到新桶的操作。 LogicalSyncData 等待逻辑复制的远程服务器发送用于初始表 同步的数据。 LogicalSyncStateChange 等待逻辑复制的远程服务器更改状态。 MessageQueueInternal 等待其他进程被挂接到共享消息队列。 MessageQueuePutMessage 等待把一个协议消息写到一个共享消息队 列。 MessageQueueReceive 等待从一个共享消息队列接收字节。 MessageQueueSend 等待向一个共享消息队列中发送字节。 ParallelBitmapScan 等待并行位图扫描被初始化。 ParallelCreateIndexScan 等待并行 CREATE INDEX 工作者完成堆扫 描。 ParallelFinish 等待并行工作者完成计算。 ProcArrayGroupUpdate 等待组领袖在事务结束时清除事务 ID。 Promote 等待备用节点升级。 ReplicationOriginDrop 等待一个复制源头变得不活跃以便被删除。 ReplicationSlotDrop 等待一个复制槽变得不活跃以便被删除。 SafeSnapshot 等待一个用于 READ ONLY DE- FERRABLE 事务的快照。 SyncRep 在同步复制期间等待来自远程服务器的确 认。 385 第5章 等待事件 5.8 Timeout 超时等待:服务器进程在等待一次超时发生。 表 5.8.1: Timeout 类型等待事件 等待事件名称 描述 BaseBackupThrottle 当有限流活动时在基础备份期间等待。 PgSleep 在调用 sys_sleep 的进程中等待。 RecoveryApplyDelay 在恢复时等待应用 WAL,因为它被延迟了。 5.9 IO IO 等待:服务器进程在等待一次 IO 完成。 表 5.9.1: IO 类型等待事件 等待事件名称 描述 BufFileRead 等待从一个缓存的文件中读取。 BufFileWrite 等待向一个缓存的文件中写入。 ControlFileRead 等待从控制文件中读取。 ControlFileSync 等待控制文件到达稳定存储。 ControlFileSyncUpdate 等待对控制文件的更新到达稳定存储。 ControlFileWrite 等待一个对控制文件的写入。 ControlFileWriteUpdate 等待一个写操作更新控制文件。 CopyFileRead 在文件拷贝操作期间等待一个读操作。 CopyFileWrite 在文件拷贝操作期间等待一个写操作。 DataFileExtend 等待一个关系数据文件被扩充。 DataFileFlush 等待一个关系数据文件到达稳定存储。 DataFileImmediateSync 等待一个关系数据文件的立即同步到达稳定存储。 见续表 386 第5章 等待事件 表 5.9.1 – 续表 等待事件名称 描述 DataFilePrefetch 等待从一个关系数据文件中的一次异步预取。 DataFileRead 等待一次对一个关系数据文件的读操作。 DataFileSync 等待对一个关系数据文件的更改到达稳定存储。 DataFileTruncate 等待一个关系数据文件被截断。 DataFileWrite 等待一次对一个关系数据文件的写操作。 DSMFillZeroWrite 等待向一个动态共享内存备份文件中写零字节。 LockFileAddToDataDirRead 在向数据目录锁文件中增加一行时等待一个读操作。 LockFileAddToDataDirSync 在向数据目录锁文件中增加一行时等待数据到达稳定存储。 LockFileAddToDataDirWrite 在向数据目录锁文件中增加一行时等待一个写操作。 LockFileCreateRead 在创建数据目录锁文件期间等待读取。 LockFileCreateSync 在创建数据目录锁文件期间等待数据到达稳定存储。 LockFileCreateWrite 在创建数据目录锁文件期间等待一个写操作。 LockFileReCheckDataDirRead 在重新检查数据目录锁文件的过程中等待一个读操作。 Lo gicalRewriteCheckpointSync 在一个检查点期间等待逻辑重写映射到达稳定存储。 LogicalRewriteMappingSync 在一次逻辑重写期间等待映射数据到达稳定存储。 LogicalRewriteMappingWrite 在一次逻辑重写期间等待对映射数据的写操作。 LogicalRewriteSync 等待逻辑重写映射到达稳定存储。 LogicalRewriteWrite 等待对逻辑重写映射的写操作。 RelationMapRead 等待对关系映射文件的读操作。 RelationMapSync 等待关系映射文件到达稳定存储。 RelationMapWrite 等待对关系映射文件的写操作。 ReorderBufferRead 在重排序缓冲区管理期间等待一个读操作。 ReorderBufferWrite 在重排序缓冲区管理期间等待一个写操作。 ReorderLogicalMappingRead 在重排序缓冲区管理期间等待对一个逻辑映射的读操作。 见续表 387 第5章 等待事件 表 5.9.1 – 续表 等待事件名称 描述 ReplicationSlotRead 等待对一个复制槽控制文件的读操作。 ReplicationSlotRestoreSync 在把一个复制槽控制文件恢复到内存的过程中等待它到达稳定存 储。 ReplicationSlotSync 等待一个复制槽控制文件到达稳定存储。 ReplicationSlotWrite 等待对一个复制槽控制文件的写操作。 SLRUFlushSync 在检查点或者数据库关闭期间等待 SLRU 数据到达稳定存储。 SLRURead 等待对一个 SLRU 页面的读操作。 SLRUSync 等待 SLRU 数据在一个页面写之后到达稳定存储。 SLRUWrite 等待一个 SLRU 页面上的写操作。 SnapbuildRead 等待一个序列化历史目录快照的读操作。 SnapbuildSync 等待一个序列化历史目录快照到达稳定存储。 SnapbuildWrite 等待一个序列化历史目录快照的写操作。 TimelineHistoryFileSync 等待一个通过流复制接收到的时间线历史文件到达稳定存储。 TimelineHistoryFileWrite 等待一个通过流复制接收到的时间线历史文件的读操作。 TimelineHistoryRead 等待一个时间线历史文件上的读操作。 TimelineHistorySync 等待一个新创建的时间线历史文件达到稳定存储。 TimelineHistoryWrite 等待一个新创建的时间线历史文件上的写操作。 TwophaseFileRead 等待一个两阶段状态文件的读操作。 TwophaseFileSync 等待一个两阶段状态文件到达稳定存储。 TwophaseFileWrite 等待一个两阶段状态文件的写操作。 WALBootstrapSync 在自举期间等待 WAL 到达稳定存储。 WALBootstrapWrite 在自举期间等待一个 WAL 页面的写操作。 WALCopyRead 在通过拷贝一个已有 W AL 段创建一个新的 WAL 段时等待一个读 操作。 WALCopySync 等待一个通过拷贝已有 WAL 段创建的新 WAL 段到达稳定存储。 见续表 388 第5章 等待事件 表 5.9.1 – 续表 等待事件名称 描述 WALCopyWrite 在通过拷贝一个已有 W AL 段创建一个新的 WAL 段时等待一个写 操作。 WALInitSync 等待一个新初始化的 WAL 文件到达稳定存储。 WALInitWrite 在初始化一个新的 WAL 文件期间等待一个写操作。 WALRead 等待一次对一个 WAL 文件的读操作。 WA LSenderTimelineHistoryRead 在 walsender 的时间线命令期间等待对一个时间线历史文件的读操 作。 WALSync 等待 WAL 文件到达持久的存储空间。 WALSyncMethodAssign 在指派 WAL 同步方法时等待数据到达稳定存储。 WALWrite 等待一次对一个 WAL 文件的写操作。 389 第 6 章 KINGBASEES 信息模式 6 第 章 KingbaseES 信息模式 信息模式由一组视图构成,它们包含定义在当前数据库中对象的信息。信息模式以 SQL 标准定义,因此能够被 移植并且保持稳定—系统目录则不同,它们是与 KingbaseES 相关的并且是为了实现的考虑而建模的。不过,信息模 式视图不包含与 KingbaseES 相关特性有关的信息。要咨询那些信息你需要查询系统目录或其他 KingbaseES 相关视 图。 6.1 模式 信息模式本身是一个名为 information_schema 的模式。这个模式自动存在于所有数据库中。这个模式的拥有 者是集簇中的初始数据库用户,并且该用户自然地拥有这个模式上的所有特权,包括删除它的能力(但是这样节省的 空间是很小的)。 默认情况下,信息模式不在模式搜索路径中,因此你需要使用限定名访问其中的所有对象。因为信息模式中的某 些对象的名称是可能出现在用户应用中的一般名称,如果你想把该信息模式放在路径中,你应该小心。 6.2 数据类型 信息模式视图的列使用定义在信息模式中的特殊数据类型。它们被定义为普通内建类型之上的简单域。你不应在 信息模式之外使用这些类型进行工作,但是如果你的应用从信息模式中进行选择,那你的应用就必须准备好面对它 们。 这些类型是: cardinal_number 一种非负整数。 character_data 一种字符串(没有指定最大长度)。 sql_identifier 一种字符串。这种类型被用于 SQL 标识符,类型 character_data 被用于任何其他类型的文本数 据。 time_stamp 在类型 timestamp with time zone 之上的一个域。 390 第 6 章 KINGBASEES 信息模式 yes_or_no 一种字符串域,它包含 YES 或 NO。这被用来在信息模式中表示布尔(真/假)(信息模式是在类型 boolean 被加到 SQL 标准之前被发明的,因此这个惯例是用来使信息模式向后兼容)。 信息模式中的每一列都是这五种类型之一。 6.3 information_schema_catalog_name information_schema_catalog_name 是一个表,它总是包含一行和一列,其中包含了当前数据库(SQL 术语中 的当前目录)的名字。 表 6.3.1: information_schema_catalog_name 列 名称 数据类型 描述 catalog_name sql_identifier 包含这个信息模式的数据库名 6.4 administrable_role_authorizations 视图 administrable_role_authorizations 标识当前用户对其有管理选项的所有角色。 表 6.4.1: administrable_role_authorizations 列 名称 数据类型 描述 grantee sql_identifier 被授予这个角色的成员关系的角色名 (可以是当前用户,或者在嵌套角色成 员关系情况下的一个不同角色) role_name sql_identifier 角色名 is_grantable yes_or_no 总是 YES 6.5 applicable_roles 视图 applicable_roles 当前用户可以使用其特权的所有角色。这意味着有某种角色授权链从当前用户到讨论中 的角色。当前用户本身也是一个可应用的角色。可应用的角色的集合通常被用于权限检查。 391 第 6 章 KINGBASEES 信息模式 表 6.5.1: applicable_roles 列 名称 数据类型 描述 grantee sql_identifier 被授予这个角色的成员关系的角色名 (可以是当前用户,或者在嵌套角色成 员关系情况下的一个不同角色) role_name sql_identifier 一个角色的名字 is_grantable yes_or_no YES 表示被授予者在该角色上有管理选 项,NO 表示没有管理选项 6.6 attributes 视图 attributes 包含数据库中定义的组合数据类型的属性的有关信息(注意该视图并不给出有关表列的信息, 表列有时候在 KingbaseES 上下文环境中也被称为属性)。只有当前用户能够访问(由于是拥有者获得的权限或是在 类型上有某些特权)的那些属性会被显示。 表 6.6.1: attributes 列 名称 数据类型 描述 udt_catalog sql_identifier 包含该数据类型的数据库名(总是当前 数据库) udt_schema sql_identifier 包含该数据类型的模式名 udt_name sql_identifier 数据类型名 attribute_name sql_identifier 属性名 ordinal_position cardinal_number 属性在该数据类型内部的顺序位置(从 1 开始计算) attribute_default character_data 该属性的默认表达式 is_nullable yes_or_no 如果该属性是可能为空的,值为 YES, 否则为 NO 见续表 392 第 6 章 KINGBASEES 信息模式 表 6.6.1 – 续表 名称 数据类型 描述 data_type character_data 如果该属性是一个内建类型,此列值为 该属性的数据类型;如果该属性是某种 数 组, 此 列 值 为 ARRAY(在 这 种 情 况 下,见视图 element_types);其他情 况,此列值为 USER-DEFINED(在这种情 况 下, 该 类 型 在 attribute_udt_name 和相关列中标识)。 character_maximum_length cardinal_number 如果 data_type 标识一个字符或位串类 型,这里是声明的最大长度;如果没有 声明最大长度,则对于所有其他数据类 型为空。 character_octet_length cardinal_number 如果 data_type 标识一个字符类型, 这里是一个数据的最大可能长度(以字 节计);对其他所有数据类型为空。最 大字节长度取决于声明的字符最大长度 (见上文)和服务器编码。 character_set_catalog sql_identifier 应用于一个 KingbaseES 中不可用的特性 character_set_schema sql_identifier 应用于一个 KingbaseES 中不可用的特性 character_set_name sql_identifier 应用于一个 KingbaseES 中不可用的特性 collation_catalog sql_identifier 包含此属性排序规则的数据库名(总是 当前数据库),如果默认或者该属性的 数据类型不可排序则为空 collation_schema sql_identifier 包含此属性排序规则的模式名,如果默 认或者该属性的数据类型不可排序则为 空 collation_name sql_identifier 该属性排序规则的名称,如果默认或者 该属性的数据类型不可排序则为空 见续表 393 第 6 章 KINGBASEES 信息模式 表 6.6.1 – 续表 名称 数据类型 描述 numeric_precision cardinal_number 如果 data_type 标识一种数字类型,这 列包含这个属性类型的(声明的或隐式 的)精度。精度指示了有效位数。它可 以按照列 numeric_precision_radix 中 指定的被表示为十进制(基于 10)或二 进制(基于 2)。对于所有其他数据类 型,这一列为空。 numeric_precision_radix cardinal_number 如果 data_type 标识一种数字类型, 这一列指示 numeric_precision 和 numeric_scale 列中的值是基于什么来 表示。该值为 2 或 10。对于所有其他数 据类型,这一列为空。 numeric_scale cardinal_number 如 果 data_type 标识一种准确数 字 类 型, 这 列 包 含 这 个 属 性 类 型 的 (声 明 的 或 隐 式 的) 比 例。 比 例 指 示 了 有 效 位 数。 它 可 以 按 照 列 numeric_precision_radix 中指定的被 表示为十进制(基于 10)或二进制(基 于 2)。对于所有其他数据类型,这一列 为空。 datetime_precision cardinal_number 如果 data_type 标识一种日期、时间、 时间戳或时间间隔类型,这一列包含这 个属性类型的(声明的或隐式的)分数 秒的精度,也就是秒值的小数点后的十 进制位数。对于所有其他数据类型,这 一列为空。 interval_type character_data 如 果 data_type 标识一种时间间隔 类 型, 这 一 列 包 含 时 间 间 隔 为 这 个 属 性 包 括 哪 些 域 的 声 明, 例 如 YEAR TO MONTH、DAY TO SECOND 等等。如果没有 指定域限制(也就是该时间间隔接受所 有域),并且对于所有其他数据类型, 这个域为空。 见续表 394 第 6 章 KINGBASEES 信息模式 表 6.6.1 – 续表 名称 数据类型 描述 interval_precision cardinal_number 应用于一个 KingbaseES 中不可用的特性 (关于时间间隔类型属性的分数秒精度 可见 datetime_precision) attribute_udt_catalog sql_identifier 属性数据类型被定义的数据库名(总是 当前数据库) attribute_udt_schema sql_identifier 属性数据类型被定义的模式名 attribute_udt_name sql_identifier 属性数据类型的名称 scope_catalog sql_identifier 应用于一个 KingbaseES 中不可用的特性 scope_schema sql_identifier 应用于一个 KingbaseES 中不可用的特性 scope_name sql_identifier 应用于一个 KingbaseES 中不可用的特性 maximum_cardinality cardinal_number 总是空,因为数组在 KingbaseES 中总是 有无限制的最大势 dtd_identifier sql_identifier 该列的数据类型描述符的一个标识符, 在从属于该表的数据类型标识符之中唯 一。这主要用于与这类标识符的其他实 例进行连接(该标识符的指定格式没有 被定义并且不保证在未来的版本中保持 相同)。 is_derived_reference_attribute yes_or_no 应用于一个 KingbaseES 中不可用的特性 关于某些列的详情,参见columns 之下的一个相似结构的视图。 6.7 character_sets 视图 character_sets 标识当前数据库中可用的字符集。因为 KingbaseES 不支持在同一个数据库中有多个字符 集,这个视图只显示一个字符集,它就是数据库编码。 注意下列术语在 SQL 标准中是怎样使用的: 字元集(character repertoire) 字符的一个抽象集合,例如 UNICODE、UCS 或 LATIN1。它不作为一个 SQL 对象显示,但是在这个视图中可见。 字符编码形式(character encoding form) 某种字元集的一种编码。大部分较老的字元集只使用一种编码 形式,并且因此它们没有独立的名字(例如 LATIN1 就是一种适用于 LATIN1 字元集的编码形式)。 395 第 6 章 KINGBASEES 信息模式 但是 Unicode 就有几种编码形式如 UTF8、UTF16 等等(并非全部被 KingbaseES 支持)。编码形式 不作为一个 SQL 对象显示,但是在这个视图中可见。 字符集(character set) 一个标识一种字元集、一种字符编码以及一种默认排序规则的命名 SQL 对象。 一个预定义的字符集通常具有和一种编码形式相同的名字,但是用户可以定义其他名字。例如,字 符集 UTF8 通常标识字元集 UCS、编码形式 UTF8 以及某种默认排序规则。 你可以把 KingbaseES 中的一种“编码”想成一个字符集或是一种字符编码形式。它们将具有相同的名字,并且 在一个数据库中只能用其中一个。 表 6.7.1: character_sets 列 名称 数据类型 描述 character_set_catalog sql_identifier 当前字符集并未被实现为模式对 象,因此这一列为空。 character_set_schema sql_identifier 当前字符集并未被实现为模式对 象,因此这一列为空。 character_set_name sql_identifier 该字符集的名字,当前实现为显 示该数据库编码的名字 character_repertoire sql_identifier 字元集,如果编码为 UTF8 则显 示 UCS,否则只显示编码名称 form_of_use sql_identifier 字符编码形式,与数据库编码相 同 default_collate_catalog sql_identifier 包含该默认排序规则的数据库名 (如果任意排序规则被标识,总 是当前数据库) default_collate_schema sql_identifier 包含该默认排序规则的模式名 default_collate_name sql_identifier 默认排序规则的名字。该默认排 序规则被标识为匹配当前数据库 的 COLLATE 和 CTYPE 设置的 排序规则。如果没有那种排序规 则,那么这一列和相关模式以及 目录列为空。 396 第 6 章 KINGBASEES 信息模式 6.8 check_constraint_routine_usage 视图 check_constraint_routine_usage 标识被检查约束琐事使用的例程(函数和过程)。只有被一个当前启 用的角色所拥有的例程才被显示。 表 6.8.1: check_constraint_routine_usage 列 名称 数据类型 描述 constraint_catalog sql_identifier 包含该约束的数据库名(总是当前数据库) constraint_schema sql_identifier 包含该约束的模式名 constraint_name sql_identifier 约束名 specific_catalog sql_identifier 包含该函数的数据库名(总是当前数据库) specific_schema sql_identifier 包含该函数的模式名 specific_name sql_identifier 该函数的“指定名称”。 6.9 check_constraints 视图 check_constraints 包含所有检查约束,不管是定义在一个表上的还是定义在一个域上的,它们被一个当 前启用的角色所拥有(表或域的拥有者就是约束的拥有者)。 表 6.9.1: check_constraints 列 名称 数据类型 描述 constraint_catalog sql_identifier 包含该约束的数据库名(总是当前数据库) constraint_schema sql_identifier 包含该约束的模式名 constraint_name sql_identifier 约束名 check_clause character_data 该检查约束的检查表达式 6.10 collations 视图 collations 包含在当前数据库中可用的排序规则。 397 第 6 章 KINGBASEES 信息模式 表 6.10.1: collations 列 名称 数据类型 描述 collation_catalog sql_identifier 包含该排序规则的数据库名(总是当前 数据库) collation_schema sql_identifier 包含该排序规则的模式名 collation_name sql_identifier 默认排序规则的名称 pad_attribute character_data 总是 NOPAD(另一种选择 PAD SPACE 没 有被 KingbaseES 支持) 6.11 collation_character_set_applicability 视图 collation_character_set_applicability 标识可用的排序规则适用于哪些字符集。在 KingbaseES 中, 每个数据库中只有一种字符集(解释见character_sets ),因此这个视图没有提供很有用的信息。 表 6.11.1: collation_character_set_applicability 列 名称 数据类型 描述 collation_catalog sql_identifier 包含该排序规则的数据库名(总是当前 数据库) collation_schema sql_identifier 包含该排序规则的模式名 collation_name sql_identifier 默认排序规则的名称 character_set_catalog sql_identifier 当前字符集还未被实现为模式对象,所 以这一列为空 character_set_schema sql_identifier 当前字符集还未被实现为模式对象,所 以这一列为空 character_set_name sql_identifier 字符集名称 6.12 column_domain_usage 视图 column_domain_usage 标识所有使用定义在当前数据库中并且被一个当前启用的角色拥有的域的列(表列 或视图列)。 398 第 6 章 KINGBASEES 信息模式 表 6.12.1: column_domain_usage 列 名称 数据类型 描述 domain_catalog sql_identifier 包含该域的数据库名(总是当前数据库) domain_schema sql_identifier 包含该域的模式名 domain_name sql_identifier 域名称 table_catalog sql_identifier 包含该表的数据库名(总是当前数据库) table_schema sql_identifier 包含该表的模式名 table_name sql_identifier 表名称 column_name sql_identifier 列名称 6.13 column_options 视图 column_options 包含为当前数据库中外部表列定义的所有选项。只有当前用户能够访问(作为拥有者或具 有某些特权)的那些外部表列才被显示。 表 6.13.1: column_options 列 名称 数据类型 描述 table_catalog sql_identifier 包含该外部表的数据库名(总是当前数据库) table_schema sql_identifier 包含该外部表的模式名 table_name sql_identifier 外部表名 column_name sql_identifier 列名称 option_name sql_identifier 一个选项名 option_value character_data 该选项的值 6.14 column_privileges 视图 column_privileges 标识所有授予给一个当前启用的角色或者被一个当前启用的角色授予的特权。对每一 个列、授予者、被授予者的组合只有一行。 399 第 6 章 KINGBASEES 信息模式 如果一个特权被授予在一整个表上,它在这个视图中被显示为在每一列上授予,但是只有可用于列粒度的特权类 型才会这样:SELECT、INSERT、UPDATE、REFERENCES。 表 6.14.1: column_privileges 列 名称 数据类型 描述 grantor sql_identifier 授予该特权的角色名 grantee sql_identifier 被授予该特权的角色名 table_catalog sql_identifier 包含该列的表所在的数据库名(总是当前数据库) table_schema sql_identifier 包含该列的表所在的模式名 table_name sql_identifier 包含该列的表名 column_name sql_identifier 列名称 privilege_type character_data 特权类型:SELECT、INSERT、UPDATE 或 REFERENCES is_grantable yes_or_no 如果该特权是可授予的,则为 YES,否则为 NO 6.15 column_udt_usage 视图 column_udt_usage 标识所有使用被一个当前启用的角色拥有的数据类型的列。注意在 KingbaseES 中,内 建数据类型的行为和用户定义的类型相似,因此它们也被包括在这里。详见columns 。 表 6.15.1: column_udt_usage 列 名称 数据类型 描述 udt_catalog sql_identifier 该列数据类型(如果适用,底层的域类 型)被定义的数据库名(总是当前数据 库) udt_schema sql_identifier 该列数据类型(如果适用,底层的域类 型)被定义的模式名 udt_name sql_identifier 该列数据类型(如果适用,底层的域类 型)的名称 table_catalog sql_identifier 包 含 该 表 的 数 据 库 名 (总 是 当 前 数 据 库) 见续表 400 第 6 章 KINGBASEES 信息模式 表 6.15.1 – 续表 名称 数据类型 描述 table_schema sql_identifier 包含该表的模式名 table_name sql_identifier 表名称 column_name sql_identifier 列名称 6.16 columns 视图 columns 包含数据库中有关所有表列(或视图列)的信息。系统列(oid 等)不被包括在内。只有那些当 前用户能够访问(作为拥有者或具有某些特权)的列才被显示。 表 6.16.1: columns 列 名称 数据类型 描述 table_catalog sql_identifier 包含该表的数据库名(总是当前数据 库) table_schema sql_identifier 包含该表的模式名 table_name sql_identifier 表名称 column_name sql_identifier 列名称 ordinal_position cardinal_number 该列在表内的顺序位置(从 1 开始计) column_default character_data 该列的默认表达式 is_nullable yes_or_no 如果该列可以为空,则为 YES,否则为 NO 。一个非空约束是让一列成为不能为 空的方法,但还有其他方法。 见续表 401 第 6 章 KINGBASEES 信息模式 表 6.16.1 – 续表 名称 数据类型 描述 data_type character_data 如果该列的数据类型是一种内建 类 型, 则 为 该 列 的 数 据 类 型; 如 果 是 某 种 数 组 (此 种 情 况 见 视 图 element_types), 则 为 ARRAY; 否 则 为 USER-DEFINED(此 种 情 况 下 该类型被标识在 udt_name 和相关列 中)。 如 果 该 列 基 于 一 个 域, 这 一 列 引用该域底层的类型(该列被标识在 domain_name 和相关列中)。 character_maximum_length cardinal_number 如果 data_type 标识一种字符或位串 类型,这里是声明的最大长度;如果没 有声明最大长度或者所有其他数据类 型,这里为空。 character_octet_length cardinal_number 如果 data_type 标识一个字符类型, 这里是一个数据的最大可能长度(以字 节计);对其他所有数据类型为空。最 大字节长度取决于声明的字符最大长度 (见上文)和服务器编码。 numeric_precision cardinal_number 如果 data_type 标识一种数字类型, 这列包含这个属性类型的(声明的或隐 式的)精度。精度指示了有效位数。它 可以按照列 numeric_precision_radix 中指定的被表示为十进制(基于 10)或 二进制(基于 2)。对于所有其他数据 类型,这一列为空。 numeric_precision_radix cardinal_number 如果 data_type 标识一种数字类型, 这一 列指 示 numeric_precision 和 numeric_scale 列中的值是基于什么来 表示。该值为 2 或 10。对于所有其他数 据类型,这一列为空。 见续表 402 第 6 章 KINGBASEES 信息模式 表 6.16.1 – 续表 名称 数据类型 描述 numeric_scale cardinal_number 如 果 data_type 标识一种准确数 字 类 型, 这 列 包 含 这 个 属 性 类 型 的 (声 明 的 或 隐 式 的) 比 例。 比 例 指 示 了 有 效 位 数。 它 可 以 按 照 列 numeric_precision_radix 中指定 的被表示为十进制(基于 10)或二进制 (基于 2)。对于所有其他数据类型, 这一列为空。 datetime_precision cardinal_number 如果 ‘ data_type‘标识一种日期、时 间、时间戳或时间间隔类型,这一列包 含这个属性类型的(声明的或隐式的) 分数秒的精度,也就是秒值的小数点 后的十进制位数。对于所有其他数据类 型,这一列为空。 interval_type character_data 如 果 data_type 标识一种时间间隔 类型,这一列包含时间间隔为这个属 性 包 括 哪 些 域 的 声 明, 例 如 YEAR TO MONTH、DAY TO SECOND 等等。如果没 有指定域限制(也就是该时间间隔接受 所 有 域), 并 且 对 于 所 有 其 他 数 据 类 型,这个域为空。 interval_precision cardinal_number 应用于一个 KingbaseES 中不可用的特 性(关于时间间隔类型属性的分数秒精 度可见 datetime_precision) character_set_catalog sql_identifier 应用于一个 KingbaseES 中不可用的特 性 character_set_schema sql_identifier 应用于一个 KingbaseES 中不可用的特 性 character_set_name sql_identifier 应用于一个 KingbaseES 中不可用的特 性 collation_catalog sql_identifier 包含此属性排序规则的数据库名(总是 当前数据库),如果默认或者该属性的 数据类型不可排序则为空 见续表 403 第 6 章 KINGBASEES 信息模式 表 6.16.1 – 续表 名称 数据类型 描述 collation_schema sql_identifier 包含此属性排序规则的模式名,如果默 认或者该属性的数据类型不可排序则为 空 collation_name sql_identifier 该属性排序规则的名称,如果默认或者 该属性的数据类型不可排序则为空 domain_catalog sql_identifier 如果该列有一个域类型,这里是该域所 在的数据库名(总是当前数据库),否 则为空。 domain_schema sql_identifier 如果该列有一个域类型,这里是该域所 在的模式名,否则为空。 domain_name sql_identifier 如果该列有一个域类型,这里是该域的 名称,否则为空。 udt_catalog sql_identifier 该列数据类型(如果适用,底层的域类 型)被定义的数据库名(总是当前数据 库) udt_schema sql_identifier 该列数据类型(如果适用,底层的域类 型)被定义的模式名 udt_name sql_identifier 该列数据类型(如果适用,底层的域类 型)的名称 scope_catalog sql_identifier 应用于一个 KingbaseES 中不可用的特 性 scope_schema sql_identifier 应用于一个 KingbaseES 中不可用的特 性 scope_name sql_identifier 应用于一个 KingbaseES 中不可用的特 性 maximum_cardinality cardinal_number 总是空,因为数组在 KingbaseES 中总 是有无限制的最大势 见续表 404 第 6 章 KINGBASEES 信息模式 表 6.16.1 – 续表 名称 数据类型 描述 dtd_identifier sql_identifier 该列的数据类型描述符的一个标识符, 在从属于该表的数据类型标识符之中唯 一。这主要用于与这类标识符的其他实 例进行连接(该标识符的指定格式没有 被定义并且不保证在未来的版本中保持 相同)。 is_self_referencing yes_or_no 应用于一个 KingbaseES 中不可用的特 性 is_identity yes_or_no 如果该列是一个标识列,则为 YES,否 则为 NO。 identity_generation character_data 如果该列是一个标识列,则为 ALWAYS 或 者 BY DEFAULT, 它 反 映 该 列 的 定 义。 identity_start character_data 如果该列是一个标识列,则是内部序列 的起始值,否则为空。 identity_increment character_data 如果该列是一个标识列,则是内部序列 的增量,否则为空。 identity_maximum character_data 如果该列是一个标识列,则是内部序列 的最大值,否则为空。 identity_minimum character_data 如果该列是一个标识列,则是内部序列 的最小值,否则为空。 identity_cycle yes_or_no 如果该列是一个标识列,则 YES 和 NO 分别表示内部序列可循环和不可循环, 否则为空。 is_generated character_data 应用于一个 KingbaseES 中不可用的特 性 generation_expression character_data 应用于一个 KingbaseES 中不可用的特 性 is_updatable yes_or_no 如果该列是可更新的,则为 YES,否则 为 NO(基表中的列总是可更新的,视 图中的列则不一定) 因为在 SQL 中有多种方式定义数据类型,而 KingbaseES 还包含额外的方式来定义数据类型,它们在信息模式 405 第 6 章 KINGBASEES 信息模式 中的表示可能有点困难。列 data_type 应该标识列的底层内建类型。在 KingbaseES 中,这表示定义在系统目录模 式 sys_catalog 中的类型。如果应用能够特别地(例如以不同方式格式化数字类型或使用精度列中的数据)处理众 所周知的内建类型,这列可能会有用。列 udt_name、udt_schema 和 udt_catalog 总是标识列的底层数据类型,即 使该列是基于一个域的(因为 KingbaseES 对待内建类型和用户定义类型的方式是一样的,内建类型也出现在这里。 这是 SQL 标准的一种扩展)。如果一个应用想要根据该类型以不同的方式处理数据,就应该使用这些列,因为在 那种情况下即使该列真地基于一个域也没有关系。如果该列是基于一个域,该域的标识被存储在列 domain_name、 domain_schema 和 domain_catalog。如果你想要把列和它们相关的数据类型配对并且把域视作单独的类型,你可以 写 coalesce(domain_name, udt_name) 等等。 6.17 constraint_column_usage 视图 constraint_column_usage 标识在当前数据库中被某个约束使用的所有列。只有包含在被一个当前启用的 角色拥有的表中的那些列才被显示。对于一个检查约束,这个视图标识被用在该检查约束中的列。对于一个外键约 束,这个视图标识外键引用的列。对于一个唯一或主键约束,这个视图标识被约束的列。 表 6.17.1: constraint_column_usage 列 名称 数据类型 描述 table_catalog sql_identifier 包含被某个约束使用的列的表所在的数 据库名(总是当前数据库) table_schema sql_identifier 包含被某个约束使用的列的表所在的模 式名 table_name sql_identifier 包含被某个约束使用的列的表名 column_name sql_identifier 包含被某个约束使用的列名 constraint_catalog sql_identifier 包含该约束的数据库名(总是当前数据 库) constraint_schema sql_identifier 包含该约束的模式名 constraint_name sql_identifier 约束名 6.18 constraint_table_usage 视图 constraint_table_usage 标识在当前数据库中被某个约束使用的所有表(这与视图 table_constraints 不同,它标识哪些表约束定义在哪些表上)。对于一个外键约束,这个视图标识该外键引用的表。对于一个唯一或主 键约束,这个视图仅标识该约束属于的表。检查约束和非空约束不被包括在这个视图中。 406 第 6 章 KINGBASEES 信息模式 表 6.18.1: constraint_table_usage 列 名称 数据类型 描述 table_catalog sql_identifier 包含被某个约束使用的表的数据库名 (总是当前数据库) table_schema sql_identifier 包含被某个约束使用的表的模式名 table_name sql_identifier 包含被某个约束使用的表名 constraint_catalog sql_identifier 包含该约束的数据库名(总是当前数据 库) constraint_schema sql_identifier 包含该约束的模式名 constraint_name sql_identifier 约束名 6.19 data_type_privileges 视图 data_type_privileges 标识当前用户能够访问(作为被描述对象的拥有者或者具有其上的某种特权)的 所有数据类型描述符。只要一个数据类型被用在一个表列、一个域或一个函数(作为参数或返回类型)就会生成一 个数据类型描述符并且在那个实例中存储一些有关该数据类型如何被使用的信息(例如,声明的最大长度,如果适 用)。每一个数据类型描述符被赋予一个任意的标识符,它在被赋予给一个对象(表、域、函数)的数据类型描述符 中唯一。这个视图对于应用可能没什么用,但是它被用于定义信息模式中的一些其他视图。 表 6.19.1: data_type_privileges 列 名称 数据类型 描述 object_catalog sql_identifier 包含该被描述对象的数据库名(总是当 前数据库) object_schema sql_identifier 包含该被描述对象的模式名 object_name sql_identifier 该描述对象的名字 object_type character_data 被描述对象的类型:TABLE(从属于表的 一列的数据类型描述符)、DOMAIN (从 属 于 域 的 数 据 类 型 描 述 符)、ROUTINE (从属于函数的一个参数或返回数据类 型的数据类型描述符)。 见续表 407 第 6 章 KINGBASEES 信息模式 表 6.19.1 – 续表 名称 数据类型 描述 dtd_identifier sql_identifier 数据类型描述符的标识符,它在同一对 象的数据类型描述符之间唯一。 6.20 domain_constraints 视图 domain_constraints 包含所有属于当前数据库中定义的域的约束。只有当前用户能访问的那些域才被显 示(作为拥有者或具有某些特权)。 表 6.20.1: domain_constraints 列 名称 数据类型 描述 constraint_catalog sql_identifier 包含该约束的数据库名(总是当前 数据库) constraint_schema sql_identifier 包含该约束的模式名 constraint_name sql_identifier 约束名 domain_catalog sql_identifier 包含该域的数据库名(总是当前数 据库) domain_schema sql_identifier 包含该域的模式名 domain_name sql_identifier 该域的名称 is_deferrable yes_or_no 如 果 该 约 束 是 可 延 迟 的, 则 为 YES,否则为 NO initially_deferred yes_or_no 如果该约束是可延迟的且初始就被 延迟,则为 YES,否则为 NO 6.21 domain_udt_usage 视图 domain_udt_usage 标识所有基于被一个当前启用的角色拥有的数据类型的域。注意在 KingbaseES 中,内 建数据类型的行为相似于用户定义的类型,因此它们也被包括在这里。 408 第 6 章 KINGBASEES 信息模式 表 6.21.1: domain_udt_usage 列 名称 数据类型 描述 udt_catalog sql_identifier 该域数据类型被定义的数据库名(总是当前数据库) udt_schema sql_identifier 该域数据类型被定义的模式名 udt_name sql_identifier 该域数据类型的名称 domain_catalog sql_identifier 包含该域的数据库名(总是当前数据库) domain_schema sql_identifier 包含该域的模式名 domain_name sql_identifier 该域的名称 6.22 domains 视图 domains 包含定义在当前数据库中的所有域。只有当前用户能够访问(作为拥有者或具有某些特权)的域 才被显示。 表 6.22.1: domains 列 名称 数据类型 描述 domain_catalog sql_identifier 包 含 该 域 的 数 据 库 名 (总 是 当 前 数 据 库) domain_schema sql_identifier 包含该域的模式名 domain_name sql_identifier 该域的名称 data_type character_data 该域的数据类型如果是一种内建类 型, 这 里 是 该 域 的 数 据 类 型; 如 果 是 某 种 数 组 (此 种 情 况 见 视 图 ele- ment_types),则为 ARRAY;否则为 USER-DEFINED (此种情况中,该类 型被标识在 udt_name 和相关列中)。 character_maximum_length cardinal_number 如果该域有一个字符或位串类型,这里 是声明的最大长度;如果没有声明最大 长度,则对于所有其他数据类型为空。 见续表 409 第 6 章 KINGBASEES 信息模式 表 6.22.1 – 续表 名称 数据类型 描述 character_octet_length cardinal_number 如果该域有一个字符类型,这里是一个 数据的最大可能长度(以字节计);对 其他所有数据类型为空。最大字节长度 取决于声明的字符最大长度(见上文) 和服务器编码。 character_set_catalog sql_identifier 应用于一个 KingbaseES 中不可用的特性 character_set_schema sql_identifier 应用于一个 KingbaseES 中不可用的特性 character_set_name sql_identifier 应用于一个 KingbaseES 中不可用的特性 collation_catalog sql_identifier 包含此域排序规则的数据库名(总是当 前数据库),如果默认或者该域的数据 类型不可排序则为空 collation_schema sql_identifier 包含此域排序规则的模式名,如果默认 或者该域的数据类型不可排序则为空 collation_name sql_identifier 该域排序规则的名称,如果默认或者该 域的数据类型不可排序则为空 numeric_precision cardinal_number 如果该域有一种数字类型,这列包含这 个域类型的(声明的或隐式的)精度。 精度指示了有效位数。它可以按照列 numeric_precision_radix 中指定的被表示 为十进制(基于 10)或二进制(基于 2)。对于所有其他数据类型,这一列为 空。 numeric_precision_radix cardinal_number 如果该域有一种数字类型,这一列指示 numeric_precision 和 numeric_scale 列 中的值是基于什么来表示。该值为 2 或 10。对于所有其他数据类型,这一列为 空。 见续表 410 第 6 章 KINGBASEES 信息模式 表 6.22.1 – 续表 名称 数据类型 描述 numeric_scale cardinal_number 如果该域有一种准确数字类型,这列包 含这个域类型的(声明的或隐式的)比 例。比例指示了有效位数。它可以按照 列 numeric_precision_radix 中指定的被 表示为十进制(基于 10)或二进制(基 于 2)。对于所有其他数据类型,这一列 为空。 datetime_precision cardinal_number 如果 data_type 标识一种日期、时间、 时间戳或时间间隔类型,这一列包含这 个域类型的(声明的或隐式的)分数秒 的精度,也就是秒值的小数点后的十进 制位数。对于所有其他数据类型,这一 列为空。 interval_type character_data 如果 data_type 标识一种时间间隔 类 型, 这 一 列 包 含 时 间 间 隔 为 这 个 域 包括哪些域的声明,例如 YEAR TO MONTH 、DAY TO SECOND 等等。 如果没有指定域限制(也就是该时间间 隔接受所有域),并且对于所有其他数 据类型,这个域为空。 interval_precision cardinal_number 应用于一个 KingbaseES 中不可用的特性 (关于时间间隔类型域的分数秒精度可 见 datetime_precision) domain_default character_data 该域的默认表达式 udt_catalog sql_identifier 该域数据类型被定义的数据库名(总是 当前数据库) udt_schema sql_identifier 该域数据类型被定义的模式名 udt_name sql_identifier 该域数据类型的名称 scope_catalog sql_identifier 应用于一个 King baseES 中不可用的特性 scope_schema sql_identifier 应用于一个 King baseES 中不可用的特性 scope_name sql_identifier 应用于一个 King baseES 中不可用的特性 见续表 411 第 6 章 KINGBASEES 信息模式 表 6.22.1 – 续表 名称 数据类型 描述 maximum_cardinality cardinal_number 总是空,因为数组在 KingbaseES 中总是 有无限制的最大势 dtd_identifier sql_identifier 该域的数据类型描述符的一个标识符, 在从属于该域的数据类型标识符之中唯 一(这不重要,因为一个域只包含一个 数据类型描述符)。这主要用于与这类 标识符的其他实例进行连接(该标识符 的指定格式没有被定义并且不保证在未 来的版本中保持相同)。 6.23 element_types 视图 element_types 包含数组元素的数据类型描述符。当一个表列、组合类型属性、域、函数参数或函数返回 值被定义为一种数组类型,相应的信息模式视图只在列 data_type 中包含 ARRAY。要获得该数组元素类型的信息, 你可以连接该相应的视图和这个视图。例如,要显示一个表的列及其数据类型和数组元素类型,你可以: SELECT c.column_name, c.data_type, e.data_type AS element_type FROM information_schema.columns c LEFT JOIN information_schema.element_types e ON ((c.table_catalog, c.table_schema, c.table_name, 'TABLE', c.dtd_identifier) = (e.object_catalog, e.object_schema, e.object_name, e.object_type, e.collection_type_identifier)) WHERE c.table_schema = '...' AND c.table_name = '...' ORDER BY c.ordinal_position; 这个视图只包括当前用户能够访问(作为拥有者或具有某些特权)的对象。 表 6.23.1: element_types 列 名称 数据类型 描述 object_catalog sql_identifier 包含使用被描述的数组的对象的数据库 名(总是当前数据库) object_schema sql_identifier 包含使用被描述的数组的对象的模式名 object_name sql_identifier 使用被描述的模式的对象名 见续表 412 第 6 章 KINGBASEES 信息模式 表 6.23.1 – 续表 名称 数据类型 描述 object_type character_data 使 用 被 描 述 的 数 组 的 对 象 的 类 型: TABLE(被 一 个 表 列 使 用 的 数 组)、 USER-DEFINED TYPE(被组合类型的一个 属性使用的数组)、DOMAIN (被域使用 的数组)、ROUTINE(被函数的一个参数 或返回数据类型使用的数组)。 collection_type_identifier sql_identifier 被描述的数组的数据类型描述符的标识 符。使用这个去与其他信息模式视图的 dtd_identifier 列连接。 data_type character_data 如果数组元素的数据类型是内建类型, 这 里 是 数 组 元 素 的 数 据 类 型, 否 则 为 USER-DEFINED(在那种情况下,该类型 被标识在 udt_name 和相关列中)。 character_maximum_length cardinal_number 总是为空,因为这种信息不适用于 KingbaseES 中的数组元素数据类型 character_octet_length cardinal_number 总是为空,因为这种信息不适用于 KingbaseES 中的数组元素数据类型 character_set_catalog sql_identifier 应用于一个 KingbaseES 中不可用的特性 character_set_schema sql_identifier 应用于一个 KingbaseES 中不可用的特性 character_set_name sql_identifier 应用于一个 KingbaseES 中不可用的特性 collation_catalog sql_identifier 包含元素类型排序规则的数据库名(总 是当前数据库), 如果默认或该元素的数 据类型是不可排序的则为空 collation_schema sql_identifier 包含元素类型排序规则的模式名, 如果默 认或该元素的数据类型是不可排序的则 为空 collation_name sql_identifier 元素类型的排序规则名, 如果默认或该元 素的数据类型是不可排序的则为空 numeric_precision cardinal_number 总是为空,因为这种信息不适用于 KingbaseES 中的数组元素数据类型 见续表 413 第 6 章 KINGBASEES 信息模式 表 6.23.1 – 续表 名称 数据类型 描述 numeric_precision_radix cardinal_number 总是为空,因为这种信息不适用于 KingbaseES 中的数组元素数据类型 numeric_scale cardinal_number 总是为空,因为这种信息不适用于 KingbaseES 中的数组元素数据类型 datetime_precision cardinal_number 总是为空,因为这种信息不适用于 KingbaseES 中的数组元素数据类型 interval_type character_data 总是为空,因为这种信息不适用于 KingbaseES 中的数组元素数据类型 interval_precision cardinal_number 总是为空,因为这种信息不适用于 KingbaseES 中的数组元素数据类型 domain_default character_data 还未被实现 udt_catalog sql_identifier 元素的数据类型所在的数据库名(总是 当前数据库) udt_schema sql_identifier 元素的数据类型所在的模式名 udt_name sql_identifier 模式的数据类型名 scope_catalog sql_identifier 应用于一个 KingbaseES 中不可用的特性 scope_schema sql_identifier 应用于一个 KingbaseES 中不可用的特性 scope_name sql_identifier 应用于一个 KingbaseES 中不可用的特性 maximum_cardinality cardinal_number 总是空,因为数组在 KingbaseES 中拥有 无限制的基数 dtd_identifier sql_identifier 该元素的数据类型描述符的标识符。当 前无用。 6.24 enabled_roles 视图 enabled_roles 标识当前“已被启用的角色”。已被启用的角色被递归地定义为:当前用户以及被授予给 具有自动继承的已被启用角色的所有角色。换句话说,就是当前用户是其直接或间接成员的所有角色。 为了权限检查,“可应用角色”的集合被应用,它会比已被启用角色的集合包含的角色范围更宽。因此通常使用 视图 applicable_roles 要更好,applicable_roles 视图的详情请见applicable_roles 。 414 第 6 章 KINGBASEES 信息模式 表 6.24.1: enabled_roles 列 名称 数据类型 描述 role_name sql_identifier 角色名称 6.25 foreign_data_wrapper_options 视图 foreign_data_wrapper_options 包含为当前数据库中外部数据包装器定义的所有选项。只有那些当前用 户能够访问(作为拥有者或具有某些特权)的外部数据包装器被显示。 表 6.25.1: foreign_data_wrapper_options 列 名称 数据类型 描述 foreign_data_wrapper_catalog sql_identifier 该外部数据包装器所在的数 据库名(总是当前数据库) foreign_data_wrapper_name sql_identifier 该外部数据包装器的名字 option_name sql_identifier 一个选项名 option_value character_data 该选项的值 6.26 foreign_data_wrappers 视图 foreign_data_wrappers 包含定义在当前数据库中的所有外部数据包装器。只有那些当前用户能够访问 (作为拥有者或具有某些特权)的外部数据包装器才会被显示。 表 6.26.1: foreign_data_wrappers 列 名称 数据类型 描述 foreign_data_wrapper_catalog sql_identifier 包含该外部数据包装器的数据库名 (总是当前数据库) foreign_data_wrapper_name sql_identifier 外部数据包装器的名字 authorization_identifier sql_identifier 外部服务器拥有者的名字 见续表 415 第 6 章 KINGBASEES 信息模式 表 6.26.1 – 续表 名称 数据类型 描述 library_name character_data 实现这个外部数据包装器的库文件 名 foreign_data_wrapper_language 用于实现这个外部数据包装器的语 character_data 言 6.27 foreign_server_options 视图 foreign_server_options 包含为当前数据库中外部服务器定义的所有选项。只有那些当前用户能够访问 (作为拥有者或具有某些特权)的外部服务器才会被显示。 表 6.27.1: foreign_server_options 列 名称 数据类型 描述 foreign_server_catalog sql_identifier 该外部服务器所在的数据库名(总是当 前数据库) foreign_server_name sql_identifier 该外部服务器的名字 option_name sql_identifier 一个选项名 option_value character_data 该选项的值 6.28 foreign_servers 视图 foreign_servers 包含当前数据库中定义的所有外部服务器。只有那些当前用户能够访问(作为拥有者或 具有某些特权)的外部服务器才会被显示。 表 6.28.1: foreign_servers 列 名称 数据类型 描述 foreign_server_catalog sql_identifier 该外部服务器所在的数据库 名(总是当前数据库) 见续表 416 第 6 章 KINGBASEES 信息模式 表 6.28.1 – 续表 名称 数据类型 描述 foreign_server_name sql_identifier 该外部服务器的名字 foreign_data_wrapper_catalog sql_identifier 包含被该外部服务器使用的 外部数据包装器的数据库名 (总是当前数据库) foreign_data_wrapper_name sql_identifier 被该外部服务器所使用的外 部数据包装器的名字 foreign_server_type character_data 外部服务器类型信息(如果 在创建时指定过) foreign_server_version character_data 外部服务器版本信息(如果 在创建时指定过) authorization_identifier sql_identifier 该外部服务器的拥有者名字 6.29 foreign_table_options 视图 foreign_table_options 包含为当前数据库中外部表定义的所有选项。只有那些当前用户能够访问(作为 拥有者或具有某些特权)的外部表才会被显示。 表 6.29.1: foreign_table_options 列 名称 数据类型 描述 foreign_table_catalog sql_identifier 包含该外部表的数据库名(总是当前数据库) foreign_table_schema sql_identifier 包含该外部表的模式名 foreign_table_name sql_identifier 外部表的名字 option_name sql_identifier 一个选项名 option_value character_data 该选项的值 417 第 6 章 KINGBASEES 信息模式 6.30 foreign_tables 视图 foreign_tables 包含定义在当前数据库中的所有外部表。只有那些当前用户能够访问(作为拥有者或具有 某些特权)的外部表才会被显示。 表 6.30.1: foreign_tables 列 名称 数据类型 描述 foreign_table_catalog sql_identifier 该外部表所在的数据库名(总是当前数 据库) foreign_table_schema sql_identifier 包含该外部表的模式名 foreign_table_name sql_identifier 该外部表的名字 foreign_server_catalog sql_identifier 该外部服务器所在的数据库名(总是当 前数据库) foreign_server_name sql_identifier 该外部服务器的名字 6.31 key_column_usage 视图 key_column_usage 标识当前数据库中所有被某种唯一、主键或外键约束限制的列。检查约束不被包括在这 个视图中。只有那些当前用户能够访问的列才会被显示(作为拥有者或具有某些特权)。 表 6.31.1: key_column_usage 列 名称 数据类型 描述 constraint_catalog sql_identifier 包含该约束的数据库名 (总是当前数据库) constraint_schema sql_identifier 包含该约束的模式名 constraint_name sql_identifier 约束名 table_catalog sql_identifier 包含被这个约束限制的列 的表所在的数据库名(总 是当前数据库) table_schema sql_identifier 包含被这个约束限制的列 的表所在的模式名 见续表 418 第 6 章 KINGBASEES 信息模式 表 6.31.1 – 续表 名称 数据类型 描述 table_name sql_identifier 包含被这个约束限制的列 的表的名字 column_name sql_identifier 被这个约束限制的列名 ordinal_position cardinal_number 该列在约束键中的顺序位 置(从 1 开始计数) position_in_unique_constraint cardinal_number 对于一个外键约束,被引 用行在其唯一约束中的 顺序位置(从 1 开始计 数);对于其他约束为空 6.32 parameters 视图 parameters 包含当前数据库中所有函数的参数的有关信息。只有那些当前用户能够访问(作为拥有者或具 有某些特权)的函数才会被显示。 表 6.32.1: parameters 列 名称 数据类型 描述 specific_catalog sql_identifier 包含该函数的数据库名(总是当前数据 库) specific_schema sql_identifier 包含该函数的模式名 specific_name sql_identifier 该函数的“专用名”。详见routines 。 ordinal_position cardinal_number 该参数在函数参数列表中的顺序位置 (从 1 开始计数) parameter_mode character_data IN 表示输入参数,OUT 表示输出参数, INOUT 表示输入输出参数。 is_result yes_or_no 应用于一个 KingbaseES 中不可用的特性 as_locator yes_or_no 应用于一个 KingbaseES 中不可用的特性 parameter_name sql_identifier 参数名,如果参数没有名称则为空 见续表 419 第 6 章 KINGBASEES 信息模式 表 6.32.1 – 续表 名称 数据类型 描述 data_type character_data 该参数的数据类型如果是一种内建 类 型, 这 里 是 该 参 数 的 数 据 类 型; 如 果 是 某 种 数 组 (此 种 情 况 见 视 图 element_types),则为 ARRAY;否则为 USER-DEFINED (此种情况中,该类型被 标识在 udt_name 和相关列中)。 character_maximum_length cardinal_number 总是为空,因为这种信息不适用于 KingbaseES 中的返回数据类型 character_octet_length cardinal_number 总是为空,因为这种信息不适用于 KingbaseES 中的返回数据类型 character_set_catalog sql_identifier 应用于一个 KingbaseES 中不可用的特性 character_set_schema sql_identifier 应用于一个 KingbaseES 中不可用的特性 character_set_name sql_identifier 应用于一个 KingbaseES 中不可用的特性 collation_catalog sql_identifier 总是为空,因为这种信息不适用于 KingbaseES 中的返回数据类型 collation_schema sql_identifier 总是为空,因为这种信息不适用于 KingbaseES 中的返回数据类型 collation_name sql_identifier 总是为空,因为这种信息不适用于 KingbaseES 中的返回数据类型 numeric_precision cardinal_number 总是为空,因为这种信息不适用于 KingbaseES 中的返回数据类型 numeric_precision_radix cardinal_number 总是为空,因为这种信息不适用于 KingbaseES 中的返回数据类型 numeric_scale cardinal_number 总是为空,因为这种信息不适用于 KingbaseES 中的返回数据类型 datetime_precision cardinal_number 总是为空,因为这种信息不适用于 KingbaseES 中的返回数据类型 interval_type character_data 总是为空,因为这种信息不适用于 KingbaseES 中的返回数据类型 见续表 420 第 6 章 KINGBASEES 信息模式 表 6.32.1 – 续表 名称 数据类型 描述 interval_precision cardinal_number 总是为空,因为这种信息不适用于 KingbaseES 中的返回数据类型 udt_catalog sql_identifier 该参数的数据类型所在的数据库名(总 是当前数据库) udt_schema sql_identifier 该参数的数据类型所在的模式名 udt_name sql_identifier 该参数的数据类型的名字 scope_catalog sql_identifier 应用于一个 KingbaseES 中不可用的特性 scope_schema sql_identifier 应用于一个 KingbaseES 中不可用的特性 scope_name sql_identifier 应用于一个 KingbaseES 中不可用的特性 maximum_cardinality cardinal_number 总是空,因为数组在 KingbaseES 中总是 有无限制的最大势 dtd_identifier sql_identifier 该参数的数据类型描述符的一个标识 符,在从属于该函数的数据类型标识符 之中唯一(这不重要,因为一个域只包 含一个数据类型描述符)。这主要用于 与这类标识符的其他实例进行连接(该 标识符的指定格式没有被定义并且不保 证在未来的版本中保持相同)。 parameter_default character_data 该参数的默认表达式,如果没有或者该 函数不被一个当前启用的角色拥有则为 空值。 6.33 referential_constraints 视图 referential_constraints 包含当前数据库中的所有引用(外键)约束。只有那些当前用户具有其引用表 上写权限(作为拥有者或具有某些除 SELECT 之外的特权)的约束才会被显示。 421 第 6 章 KINGBASEES 信息模式 表 6.33.1: referential_constraints 列 名称 数据类型 描述 constraint_catalog sql_identifier 包含该约束的数据库名(总 是当前数据库) constraint_schema sql_identifier 包含该约束的模式名 constraint_name sql_identifier 约束名 unique_constraint_catalog sql_identifier 包含该外键约束所引用的 唯一或主键约束的数据库名 (总是当前数据库) unique_constraint_schema sql_identifier 包含该外键约束所引用的唯 一或主键约束的模式名 unique_constraint_name sql_identifier 包含该外键约束所引用的唯 一或主键约束的名字 match_option character_data 外 键 约 束 的 匹 配 选 项: FULL、PARTIAL 或 NONE。 update_rule character_data 外 键 约 束 的 更 新 规 则: CASCADE、SET NULL、SET DEFAULT、RESTRICT 或 NO ACTION。 delete_rule character_data 外 键 约 束 的 删 除 规 则: CASCADE、SET NULL、SET DEFAULT、RESTRICT 或 NO ACTION。 6.34 role_column_grants 视图 role_column_grants 标识所有在列上授予的特权,这些特权的授予者或者被授予者是一个当前已被启用 的角色。更多信息可以在 column_privileges 中找到。这个视图和 column_privileges 之间的唯一实质性区别 是:这个视图忽略那些以授予给 PUBLIC 的方式使当前用户获得其访问权限的列。 422 第 6 章 KINGBASEES 信息模式 表 6.34.1: role_column_grants 列 名称 数据类型 描述 grantor sql_identifier 授予该特权的角色名 grantee sql_identifier 被授予该特权的角色名 table_catalog sql_identifier 包含该列的表所在的数据库名(总是当前数据库) table_schema sql_identifier 包含该列的表所在的模式名 table_name sql_identifier 包含该列的表名 column_name sql_identifier 列名称 privilege_type character_data 特权类型:SELECT、INSERT、UPDATE 或 REFERENCES is_grantable yes_or_no 如果该特权是可授予的,则为 YES,否则为 NO 6.35 role_package_grants 视图 role_package_grants 可查看启用角色中具有查询包的执行权限。 表 6.35.1: role_package_grants 列 名称 数据类型 描述 grantor sql_identifier 授予者 grantee sql_identifier 被授予者 owner varcharbyte 包的 owner package_catalog sql_identifier 包所在的数据库 package_schema sql_identifier 包所在的模式 package_name sql_identifier 包名 privilege_type character_data 包的执行权限 is_grantable yes_or_no 是否可授予包权限 423 第 6 章 KINGBASEES 信息模式 6.36 role_routine_grants 视图 role_routine_grants 标识所有在函数上授予的特权,这些特权的授予者或者被授予者是一个当前已被启 用的角色。更多信息可以在 routine_privileges 中找到。这个视图和 routine_privileges 之间的唯一实质性区 别是:这个视图忽略那些以授予给 PUBLIC 的方式使当前用户获得其访问权限的函数。 表 6.36.1: role_routine_grants 列 名称 数据类型 描述 grantor sql_identifier 授予该特权的角色名 grantee sql_identifier 被授予该特权的角色名 specific_catalog sql_identifier 包含该函数的数据库名(总是当前数据库) specific_schema sql_identifier 包含该函数的模式名 specific_name sql_identifier 该函数的“专用名”。 routine_catalog sql_identifier 包含该函数的数据库名(总是当前数据库) routine_schema sql_identifier 包含该函数的模式名 routine_name sql_identifier 该函数的名字(在重载的情况下可能会重复) privilege_type character_data 总是为 EXECUTE(函数唯一的特权类型) is_grantable yes_or_no 如果该特权是可授予的,则为 YES,否则为 NO 6.37 role_table_grants 视图 role_table_grants 标识所有在表或视图上授予的特权,这些特权的授予者或者被授予者是一个当前已被 启用的角色。更多信息可以在 table_privileges 中找到。这个视图和 table_privileges 之间的唯一实质性区别 是:这个视图忽略那些以授予给 PUBLIC 的方式使当前用户获得其访问权限的表。 表 6.37.1: role_table_grants 列 名称 数据类型 描述 grantor sql_identifier 授予该特权的角色名 grantee sql_identifier 被授予该特权的角色名 见续表 424 第 6 章 KINGBASEES 信息模式 表 6.37.1 – 续表 名称 数据类型 描述 table_catalog sql_identifier 包 含 该 表 的 数 据 库 名 (总 是 当 前 数 据 库) table_schema sql_identifier 包含该表的模式名 table_name sql_identifier 表名称 privilege_type character_data 该 特 权 的 类 型:SELECT、INSERT、 UPDATE、DELETE、TRUNCATE、 REFERENCES 或 TRIGGER is_grantable yes_or_no 如果该特权是可授予的,则为 YES,否 则为 NO with_hierarchy yes_or_no 在 SQL 标 准 中,WITH HIERARCHY OPTION 是一个独立的(子)特权,它 允 许 在 表 继 承 层 级 上 的 特 定 操 作。 在 KingbaseES 中,这被包括在 SELECT 特 权中,因此这一列在特权为 SELECT 时 显示 YES,其他时候显示 NO。 6.38 role_udt_grants 视图 role_udt_grants 标识所有在用户定义类型上授予的 USAGE 特权,这些特权的授予者或者被授予者是一 个当前已被启用的角色。更多信息可以在 udt_privileges 中找到。这个视图和 udt_privileges 之间的唯一实质 性区别是:这个视图忽略那些以授予给 PUBLIC 的方式使当前用户获得其访问权限的对象。因为数据类型在 KingbaseES 中并没有真正的特权,而是只有一个给 PUBLIC 的隐式授予,这个视图为空。 表 6.38.1: role_udt_grants 列 名称 数据类型 描述 grantor sql_identifier 授予该特权的角色名 grantee sql_identifier 被授予该特权的角色名 udt_catalog sql_identifier 包含该类型的数据库名(总是当前数据库) udt_schema sql_identifier 包含该类型的模式名 见续表 425 第 6 章 KINGBASEES 信息模式 表 6.38.1 – 续表 名称 数据类型 描述 udt_name sql_identifier 该类型的名字 privilege_type character_data 总是 TYPE USAGE is_grantable yes_or_no 如果该特权是可授予的,则为 YES,否则为 NO 6.39 role_usage_grants 视图 role_usage_grants 标识所有在多种对象上授予的 USAGE 特权,这些特权的授予者或者被授予者是一个当 前已被启用的角色。更多信息可以在 usage_privileges 中找到。这个视图和 usage_privileges 之间的唯一实质 性区别是:这个视图忽略那些以授予给 PUBLIC 的方式使当前用户获得其访问权限的对象。 表 6.39.1: role_usage_grants 列 名称 数据类型 描述 grantor sql_identifier 授予该特权的角色名 grantee sql_identifier 被授予该特权的角色名 object_catalog sql_identifier 包含该对象的数据库名(总是当前数据 库) object_schema sql_identifier 如果适用,则为包含该对象的模式名, 否则为一个空字符串 object_name sql_identifier 对象的名字 object_type character_data COLLATION 或 DOMAIN 或 FOREIGN DATA WRAPPER 或 FOREIGN SERVER 或 SEQUENCE privilege_type character_data 总是 USAGE is_grantable yes_or_no 如果该特权是可授予的,则为 YES,否 则为 NO 426 第 6 章 KINGBASEES 信息模式 6.40 routine_privileges 视图 routine_privileges 标识所有在函数上授予的特权,其授予者或被授予者是一个当前已被启用的角色。 对于每一种函数、授予者和被授予者的组合,这里都有一行。 表 6.40.1: routine_privileges 列 名称 数据类型 描述 grantor sql_identifier 授予该特权的角色名 grantee sql_identifier 被授予该特权的角色名 specific_catalog sql_identifier 包含该函数的数据库名(总是当前数据库) specific_schema sql_identifier 包含该函数的模式名 specific_name sql_identifier 该函数的“专用名”。 routine_catalog sql_identifier 包含该函数的数据库名(总是当前数据库) routine_schema sql_identifier 包含该函数的模式名 routine_name sql_identifier 该函数的名字(在重载的情况下可能重复) privilege_type character_data 总是 EXECUTE(函数唯一的特权类型) is_grantable yes_or_no 如果该特权是可授予的,则为 YES,否则为 NO 6.41 routines 视图 routines 包含当前数据库中所有的函数和过程。只有那些当前用户能够访问(作为拥有者或具有某些特 权)的函数和过程才会被显示。 表 6.41.1: routines 列 名称 数据类型 描述 specific_catalog sql_identifier 包含该函数的数据库名(总 是当前数据库) specific_schema sql_identifier 包含该函数的模式名 见续表 427 第 6 章 KINGBASEES 信息模式 表 6.41.1 – 续表 名称 数据类型 描述 specific_name sql_identifier 该函数的“专用名”。这是 一个在模式中唯一标识该函 数的名称,即使该函数真正 的名称已经被重载。专用名 的格式尚未被定义,它应当 仅被用来与指定例程名称的 其他实例进行比较。 routine_catalog sql_identifier 包含该函数的数据库名(总 是当前数据库) routine_schema sql_identifier 包含该函数的模式名 routine_name sql_identifier 该函数的名字(在重载的情 况下可能重复) routine_type character_data FUNCTION 表示是一个函数, PROCEDURE 表示是一个过程 module_catalog sql_identifier 应用于一个 KingbaseES 中不 可用的特性 module_schema sql_identifier 应用于一个 KingbaseES 中不 可用的特性 module_name sql_identifier 应用于一个 KingbaseES 中不 可用的特性 udt_catalog sql_identifier 应用于一个 KingbaseES 中不 可用的特性 udt_schema sql_identifier 应用于一个 KingbaseES 中不 可用的特性 udt_name sql_identifier 应用于一个 KingbaseES 中不 可用的特性 见续表 428 第 6 章 KINGBASEES 信息模式 表 6.41.1 – 续表 名称 数据类型 描述 data_type character_data 该函数的返回数据类型如 果 是 一 种 内 建 类 型, 这 里 是 该 数 据 类 型; 如 果 是 某 种 数 组 (此 种 情 况 见 视 图 element_types), 则 为 ARRAY; 否 则 为 USER-DEFINED(此 种 情 况 中, 该 类 型 被 标 识 在 type_udt_name 和相关列 中)。如果是过程则此项为 空。 character_maximum_length cardinal_number 总是为空,因为这种信息不 适用于 KingbaseES 中的返回 数据类型 character_octet_length cardinal_number 总是为空,因为这种信息不 适用于 KingbaseES 中的返回 数据类型 character_set_catalog sql_identifier 应用于一个 KingbaseES 中不 可用的特性 character_set_schema sql_identifier 应用于一个 KingbaseES 中不 可用的特性 character_set_name sql_identifier 应用于一个 KingbaseES 中不 可用的特性 collation_catalog sql_identifier 总是为空,因为这种信息不 适用于 KingbaseES 中的返回 数据类型 collation_schema sql_identifier 总是为空,因为这种信息不 适用于 KingbaseES 中的返回 数据类型 collation_name sql_identifier 总是为空,因为这种信息不 适用于 KingbaseES 中的返回 数据类型 见续表 429 第 6 章 KINGBASEES 信息模式 表 6.41.1 – 续表 名称 数据类型 描述 numeric_precision cardinal_number 总是为空,因为这种信息不 适用于 KingbaseES 中的返回 数据类型 numeric_precision_radix cardinal_number 总是为空,因为这种信息不 适用于 KingbaseES 中的返回 数据类型 numeric_scale cardinal_number 总是为空,因为这种信息不 适用于 KingbaseES 中的返回 数据类型 datetime_precision cardinal_number 总是为空,因为这种信息不 适用于 KingbaseES 中的返回 数据类型 interval_type character_data 总是为空,因为这种信息不 适用于 KingbaseES 中的返回 数据类型 interval_precision cardinal_number 总是为空,因为这种信息不 适用于 KingbaseES 中的返回 数据类型 type_udt_catalog sql_identifier 该函数的返回数据类型所在 的数据库名(总是当前数据 库)。如果是过程则此项为 空。 type_udt_schema sql_identifier 该函数的返回数据类型所在 的模式名。如果是过程则此 项为空。 type_udt_name sql_identifier 该函数的返回数据类型的 名字。如果是过程则此项为 空。 scope_catalog sql_identifier 应用于一个 KingbaseES 中不 可用的特性 scope_schema sql_identifier 应用于一个 KingbaseES 中不 可用的特性 见续表 430 第 6 章 KINGBASEES 信息模式 表 6.41.1 – 续表 名称 数据类型 描述 scope_name sql_identifier 应用于一个 KingbaseES 中不 可用的特性 maximum_cardinality cardinal_number 总是空,因为数组在 KingbaseES 中总是有无限制的最 大势 dtd_identifier sql_identifier 该函数返回数据类型的数 据类型描述符的一个标识 符,在从属于该函数的数据 类型标识符之中唯一。这主 要用于与这类标识符的其他 实例进行连接(该标识符的 指定格式没有被定义并且不 保证在未来的版本中保持相 同)。 routine_body character_data 如果该函数是一个 SQL 函 数, 则 为 SQL, 否 则 为 EXTERNAL。 routine_definition character_data 该 函 数 的 源 文 本 (如 果 该函数不属于一个当前 已 被 启 用 的 角 色, 则 为 空)。(根据 SQL 标准, 只有 routine_body 为 SQL 时 这 一 列 才 适 用。 但 是 在 KingbaseES 中,它将会包含 该函数被创建时所指定的任 何源文本。) external_name character_data 如果这个函数是一个 C 函 数, 则 为 该 函 数 的 外 部 名 称 (链 接 符 号), 否 则 为 空 (这 会 产 生 和 显 示 在 routine_definition 中相 同的值)。 external_language character_data 该函数所用的语言 见续表 431 第 6 章 KINGBASEES 信息模式 表 6.41.1 – 续表 名称 数据类型 描述 parameter_style character_data 总是 GENERAL(SQL 标准 定义了其他参数风格,但在 KingbaseES 中不可用) is_deterministic yes_or_no 如果该函数被声明为不变 (在 SQL 标准中被称为确定 性 的), 则 为 YES, 否 则 为 NO(你不能通过该信息模式 查询在 KingbaseES 中可用 的其他易变级别)。 sql_data_access character_data 总 是 MODIFIES, 表 示 该 函 数可能修改 SQL 数据。这种 信息对 KingbaseES 没有用 处。 is_null_call yes_or_no 如果该函数在任一参数为 空 时 自 动 返 回 空 值, 则 为 YES,否则为 NO。如果是过 程则此项为空。 sql_path character_data 应用于一个 KingbaseES 中不 可用的特性 schema_level_routine yes_or_no 总是 YES(反例是一个用户 定 义 类 型 的 方 法, 这 是 在 KingbaseES 不可用的一种特 性)。 max_dynamic_result_sets cardinal_number 应用于一个 KingbaseES 中不 可用的特性 is_user_defined_cast yes_or_no 应用于一个 KingbaseES 中不 可用的特性 is_implicitly_invocable yes_or_no 应用于一个 KingbaseES 中不 可用的特性 见续表 432 第 6 章 KINGBASEES 信息模式 表 6.41.1 – 续表 名称 数据类型 描述 security_type character_data 如果该函数以当前用户的特 权 运 行, 则 为 INVOKER; 如 果该函数以定义它的用户的 特权运行,则为 DEFINER。 to_sql_specific_catalog sql_identifier 应用于一个 KingbaseES 中不 可用的特性 to_sql_specific_schema sql_identifier 应用于一个 KingbaseES 中不 可用的特性 to_sql_specific_name sql_identifier 应用于一个 KingbaseES 中不 可用的特性 as_locator yes_or_no 应用于一个 KingbaseES 中不 可用的特性 created time_stamp 应用于一个 KingbaseES 中不 可用的特性 last_altered time_stamp 应用于一个 KingbaseES 中不 可用的特性 new_savepoint_level yes_or_no 应用于一个 KingbaseES 中不 可用的特性 is_udt_dependent yes_or_no 当 前 总 是 NO。 另 一 个 选 项 YES 应用于一个 KingbaseES 中不可用的特性。 result_cast_from_data_type character_data 应用于一个 KingbaseES 中不 可用的特性 result_cast_as_locator yes_or_no 应用于一个 KingbaseES 中不 可用的特性 result_cast_char_max_length cardinal_number 应用于一个 KingbaseES 中不 可用的特性 result_cast_char_octet_length character_data 应用于一个 KingbaseES 中不 可用的特性 见续表 433 第 6 章 KINGBASEES 信息模式 表 6.41.1 – 续表 名称 数据类型 描述 result_cast_char_set_catalog sql_identifier 应用于一个 KingbaseES 中不 可用的特性 result_cast_char_set_schema sql_identifier 应用于一个 KingbaseES 中不 可用的特性 result_cast_char_set_name sql_identifier 应用于一个 KingbaseES 中不 可用的特性 result_cast_collation_catalog sql_identifier 应用于一个 KingbaseES 中不 可用的特性 result_cast_collation_schema sql_identifier 应用于一个 KingbaseES 中不 可用的特性 result_cast_collation_name sql_identifier 应用于一个 KingbaseES 中不 可用的特性 result_cast_numeric_precision cardinal_number 应用于一个 KingbaseES 中不 可用的特性 result_cast_numeric_precision_radix cardinal_number 应用于一个 KingbaseES 中不 可用的特性 result_cast_numeric_scale cardinal_number 应用于一个 KingbaseES 中不 可用的特性 result_cast_datetime_precision character_data 应用于一个 KingbaseES 中不 可用的特性 result_cast_interval_type character_data 应用于一个 KingbaseES 中不 可用的特性 result_cast_interval_precision cardinal_number 应用于一个 KingbaseES 中不 可用的特性 result_cast_type_udt_catalog sql_identifier 应用于一个 KingbaseES 中不 可用的特性 result_cast_type_udt_schema sql_identifier 应用于一个 KingbaseES 中不 可用的特性 result_cast_type_udt_name sql_identifier 应用于一个 KingbaseES 中不 可用的特性 见续表 434 第 6 章 KINGBASEES 信息模式 表 6.41.1 – 续表 名称 数据类型 描述 result_cast_scope_catalog sql_identifier 应用于一个 KingbaseES 中不 可用的特性 result_cast_scope_schema 应用于一个 KingbaseES 中不 sql_identifier 可用的特性 result_cast_scope_name 应用于一个 KingbaseES 中不 sql_identifier 可用的特性 result_cast_maximum_cardinality 应用于一个 KingbaseES 中不 cardinal_number 可用的特性 result_cast_dtd_identifier 应用于一个 KingbaseES 中不 sql_identifier 可用的特性 6.42 schemata 视图 schemata 包含当前数据库中被当前用户(作为属主或具有某些特权)可访问的所有模式。 表 6.42.1: schemata 列 名称 数据类型 描述 catalog_name sql_identifier 该模式所在的数据库名(总是当前 数据库) schema_name sql_identifier 该模式的名称 schema_owner sql_identifier 该模式拥有者的名称 default_character_set_catalog sql_identifier 应用于一个 KingbaseES 中不可用的 特性 default_character_set_schema sql_identifier 应用于一个 KingbaseES 中不可用的 特性 default_character_set_name sql_identifier 应用于一个 KingbaseES 中不可用的 特性 见续表 435 第 6 章 KINGBASEES 信息模式 表 6.42.1 – 续表 名称 数据类型 描述 sql_path character_data 应用于一个 KingbaseES 中不可用的 特性 6.43 sequences 视图 sequences 包含所有定义在当前数据库中的序列。只有那些当前用户能够访问(作为拥有者或具有某些特 权)的序列才会被显示。 表 6.43.1: sequences 列 名称 数据类型 描述 sequence_catalog sql_identifier 包含该序列的数据库名(总是当前数据 库) sequence_schema sql_identifier 包含该序列的模式名 sequence_name sql_identifier 该序列的名字 data_type character_data 该序列的数据类型。 numeric_precision cardinal_number 这 列 包 含 这 个 序 列 数 据 类 型 (见 上 文) 的 (声 明 的 或 隐 式 的) 精 度。 精 度 指 示 了 有 效 位 数。 它 可 以 按 照 列 numeric_precision_radix 中指定的被 表示为十进制(基于 10)或二进制(基 于 2)。 numeric_precision_radix cardinal_number 这一列指示 numeric_precision 和 numeric_scale 列中的值是基于什么来 表示。该值为 2 或 10。 numeric_scale cardinal_number 这 列 包 含 这 个 序 列 数 据 类 型 (见 上 文) 的 (声 明 的 或 隐 式 的) 比 例。 比 例 指 示 了 有 效 位 数。 它 可 以 按 照 列 numeric_precision_radix 中指定的被 表示为十进制(基于 10)或二进制(基 于 2)。 见续表 436 第 6 章 KINGBASEES 信息模式 表 6.43.1 – 续表 名称 数据类型 描述 start_value character_data 该序列的开始值 minimum_value character_data 该序列的最小值 maximum_value character_data 该序列的最大值 increment character_data 该序列的增量 cycle_option yes_or_no 如果该序列会循环,则为 YES,否则为 NO 注意依照 SQL 标准,开始值、最小值、最大值和增量值被作为字符串返回。 6.44 sql_features 表 sql_features 包含的信息指示了哪些 SQL 标准中定义的正式特性被 KingbaseES 所支持。 表 6.44.1: sql_features 列 名称 数据类型 描述 feature_id character_data 该特性的标识符字符串 feature_name character_data 该特性的描述性名称 sub_feature_id character_data 该子特性的标识符字符串,或者如果不 是一个子特性则为一个长度为零的字符 串 sub_feature_name character_data 该子特性的描述性名称,或者如果不是 一个子特性则为一个长度为零的字符串 is_supported yes_or_no 如果该特性被当前版本的 KingbaseES 完 全支持,则为 YES,否则为 NO is_verified_by character_data 总是为空,因为 KingbaseES 开发组没有 对特性的一致性执行正式的测试 comments character_data 可能会是关于该特性被支持状态的一段 注释 437 第 6 章 KINGBASEES 信息模式 6.45 sql_languages 表 sql_languages 为每一种被 KingbaseES 支持的 SQL 语言绑定包含一行。KingbaseES 支持在 C 中的直接 SQL 和嵌入式 SQL,这是你从这张表中知道的所有东西。 这个表在 SQL:2008 中已被从 SQL 标准中移除,因此这里没有项引用 SQL:2003 之后的标准。 表 6.45.1: sql_languages 列 名称 数据类型 描述 sql_language_source character_data 该语言定义的源名称,总是 ISO 9075,即 SQL 标准 sql_language_year character_data sql_language_source 中引 用的标准被通过的年份。 sql_language_conformance character_data 该语言绑定的标准一致性级 别。对于 ISO 9075:2003 总是 CORE。 sql_language_integrity character_data 总是为空(这个值与一个早 期版本的 SQL 标准相关)。 sql_language_implementation character_data 总是为空 sql_language_binding_style character_data 语 言 绑 定 风 格, 为 DIRECT 或 EMBEDDED sql_language_programming _language character_data 如 果 绑 定 风 格 为 EMBEDDED, 则 为 编 程 语 言, 否 则 为 空。KingbaseES 仅支持 C 语言。 6.46 sql_packages 表 sql_packages 包含的信息指示哪些定义在 SQL 标准中的特性包被 KingbaseES 支持。 438 第 6 章 KINGBASEES 信息模式 表 6.46.1: sql_packages 列 名称 数据类型 描述 feature_id character_data 该包的标识符字符串 feature_name character_data 该包的描述性名称 is_supported yes_or_no 如果该包被当前版本的 KingbaseES 支 持,则为 YES,否则为 NO is_verified_by character_data 总是为空,因为 KingbaseES 开发组没有 对特性的一致性执行正式的测试 comments character_data 可能会是关于该包被支持状态的一段注 释 6.47 sql_parts 表 sql_parts 包含的信息指示哪些定义在 SQL 标准中的部分被 KingbaseES 支持。 表 6.47.1: sql_parts 列 名称 数据类型 描述 feature_id character_data 包含该部分编号的一个标识符字符串 feature_name character_data 该部分的描述性名称 is_supported yes_or_no 如果当前版本的 KingbaseE S 完全支持该 部分,则为 YES,否则为 NO is_verified_by character_data 总是为空,因为 KingbaseES 开发组没有 对特性的一致性执行正式的测试 comments character_data 可能会是关于该部分被支持状态的一段 注释 6.48 sql_sizing 表 sql_sizing 包含有关 KingbaseES 中多种尺寸限制和最大值的信息。这类信息主要用来在 ODBC 接口的情 境中使用;其它接口的用户可能将发现这类信息用处不大。由于这个原因,个体实现信息项没有在这里描述,你将会 在 ODBC 接口的描述中找到它们。 439 第 6 章 KINGBASEES 信息模式 表 6.48.1: sql_sizing 列 名称 数据类型 描述 sizing_id cardinal_number 该尺寸项的标识符 sizing_name character_data 该尺寸项的描述性名称 supported_value cardinal_number 尺寸项的值,如果尺寸是不受限制或不 能确定的则为 0,如果尺寸项适用的特性 不受支持则为空 comments character_data 可能是从属于尺寸项的一段注释 6.49 sql_sizing_profiles 表 sql_sizing_profiles 包含有关 SQL 标准的多种 profile 所需的 sql_sizing 值的信息。KingbaseES 不追 踪任何 SQL profile,因此这个表为空。 表 6.49.1: sql_sizing_profiles 列 名称 数据类型 描述 sizing_id cardinal_number 该尺寸项的标识符 sizing_name character_data 该尺寸项的描述性名称 profile_id character_data 一个 profile 的标识符字符串 required_value cardinal_number 该 SQL profile 对尺寸项所要求的值,如 果该 profile 对尺寸项没有限制则为 0, 如果该 profile 不要求该尺寸项所适用的 任何特性则为空 comments character_data 可能是从属于该 profile 中尺寸项的一段 注释 6.50 table_constraints 视图 table_constraints 包含属于特定表的所有约束,这些表要满足的条件是:当前用户拥有表或者是当前用 户在表上具有某种除 SELECT 之外的特权。 440 第 6 章 KINGBASEES 信息模式 表 6.50.1: table_constraints 列 名称 数据类型 描述 constraint_catalog sql_identifier 包含该约束的数据库名(总是当前数据 库) constraint_schema sql_identifier 包含该约束的模式名 constraint_name sql_identifier 约束名 table_catalog sql_identifier 包 含 该 表 的 数 据 库 名 (总 是 当 前 数 据 库) table_schema sql_identifier 包含该表的模式名 table_name sql_identifier 表名称 constraint_type character_data 该 约 束 的 类 型:CHECK、FOREIGNKEY、 PRIMARYKEY 或 UNIQUE is_deferrable yes_or_no 如果该约束是可延迟的,则为 YES,否 则为 NO initially_deferred yes_or_no 如果该约束是可延迟的并且是初始已被 延迟,则为 YES,否则为 NO enforced yes_or_no 适用于一种 KingbaseES 中不可用的特性 (当前总是 YES) 6.51 table_privileges 视图 table_privileges 标识在表或视图上所有被授予的特权,这些特权必须是被一个当前已被启用角色授出或 者被授予给一个当前已被启用角色。对每一个表、授予者和被授予者的组合都有一行。 表 6.51.1: table_privileges 列 名称 数据类型 描述 grantor sql_identifier 授予该特权的角色名 grantee sql_identifier 被授予该特权的角色名 见续表 441 第 6 章 KINGBASEES 信息模式 表 6.51.1 – 续表 名称 数据类型 描述 table_catalog sql_identifier 包 含 该 表 的 数 据 库 名 (总 是 当 前 数 据 库) table_schema sql_identifier 包含该表的模式名 table_name sql_identifier 表名称 privilege_type character_data 特 权 类 型:SELECT、INSERT、UPDATE、 DELETE、TRUNCATE、REFERENCES 或 TRIGGER is_grantable yes_or_no 如果该特权是可授予的,则为 YES,否 则为 NO with_hierarchy yes_or_no 在 SQL 标 准 中,WITH HIERARCHY OPTION 是一个独立的(子)特权,它 允 许 在 表 继 承 层 级 上 的 特 定 操 作。 在 KingbaseES 中,这被包括在 SELECT 特 权中,因此这一列在特权为 SELECT 时 显示 YES,其他时候显示 NO。 6.52 tables 视图 tables 包含定义在当前数据库中的所有表和视图。只有那些当前用户能够访问(作为拥有者或具有某些特 权)的表和视图才会被显示。 表 6.52.1: tables 列 名称 数据类型 描述 table_catalog sql_identifier 包含该表的数据库名(总是 当前数据库) table_schema sql_identifier 包含该表的模式名 table_name sql_identifier 表名称 见续表 442 第 6 章 KINGBASEES 信息模式 表 6.52.1 – 续表 名称 数据类型 描述 table_type character_data 该表的类型:BASE TABLE 表 示一个持久的基本表(常见 表类型),VIEW 表示一个视 图,FOREIGN 表示一个外部 表,LOCAL TEMPORARY 表示 一个临时表 self_referencing_column_name sql_identifier 应用于一个 KingbaseES 中不 可用的特性 reference_generation character_data 应用于一个 KingbaseES 中不 可用的特性 user_defined_type_catalog sql_identifier 如果该表是一个有类型的 表,则是包含其底层数据类 型的数据库名(总是当前数 据库),否则为空。 user_defined_type_schema sql_identifier 如果该表是一个有类型的 表,则是包含其底层数据类 型的模式名,否则为空。 user_defined_type_name sql_identifier 如果该表是一个有类型的 表,则是其底层数据类型的 名称,否则为空。 is_insertable_into yes_or_no 如果该表能够被插入,则为 YES,否则为 NO(基本表总 是能被插入,而视图则不一 定)。 is_typed yes_or_no 如果该表是一个有类型的 表,则为 YES,否则为 NO commit_action character_data 还未被实现 6.53 transforms 视图 transforms 包含定义在当前数据库中的转换的信息。更准确来说,包含在转换中的每一个函数(“FROM SQL”或者“TO SQL”函数)在其中都有一行。 443 第 6 章 KINGBASEES 信息模式 表 6.53.1: transforms 列 名称 数据类型 描述 udt_catalog sql_identifier 包含该转换所适用类型的数据库的名称 (总是当前数据库) udt_schema sql_identifier 包含该转换所适用类型的模式的名称 udt_name sql_identifier 该转换所适用类型的名称 specific_catalog sql_identifier 包含该函数的数据库的名称(总是当前 数据库) specific_schema sql_identifier 包含该函数的模式的名称 specific_name sql_identifier 该 函 数 的 “专 用 名”。 更 多 信 息 请 见routines 。 group_name sql_identifier SQL 标准允许在“组”中定义转换,并 且在运行时选择一个组。KingbaseES 不 支持这种做法,转换是与一种语言相关 的。作为一种折衷,这个域包含该转换 所适用的语言。 transform_type character_data FROM SQL 或者 TO SQL 6.54 triggered_update_columns 对 于 当 前 数 据 库 中 指 定 一 个 列 列 表 (如 UPDATE OF column1, column2) 的 触 发 器, 视 图 triggered_update_columns 标识这些列。没有指定一个列列表的触发器不被包括在这个视图中。只有那些当前 用户拥有或具有某种除 SELECT 之外特权的列才会被显示。 表 6.54.1: triggered_update_columns 列 名称 数据类型 描述 trigger_catalog sql_identifier 包含该触发器的数据库名(总是当前数 据库) trigger_schema sql_identifier 包含该触发器的模式名 trigger_name sql_identifier 该触发器的名称 见续表 444 第 6 章 KINGBASEES 信息模式 表 6.54.1 – 续表 名称 数据类型 描述 event_object_catalog sql_identifier 包含触发器所在的表的数据库名(总是 当前数据库) event_object_schema sql_identifier 包含触发器所在的表的模式名 event_object_table sql_identifier 触发器所在的表的名称 event_object_column sql_identifier 触发器所在的列的名称 6.55 triggers 视图 triggers 包含所有定义在当前数据库中表和视图上的触发器,并且只显示当前用户拥有的触发器或者是当 前用户在其上具有某种除 SELECT 之外特权的触发器。 表 6.55.1: triggers 列 名称 数据类型 描述 trigger_catalog sql_identifier 包含该触发器的数据库名(总是 当前数据库) trigger_schema sql_identifier 包含该触发器的模式名 trigger_name sql_identifier 该触发器的名称 event_manipulation character_data 触 发 该 触 发 器 的 事 件 (INSERT、UPDATE 或 DELETE) event_object_catalog sql_identifier 包含触发器所在的表的数据库名 (总是当前数据库) event_object_schema sql_identifier 包含该触发器所在的表的模式名 event_object_table sql_identifier 该触发器所在的表的名称 见续表 445 第 6 章 KINGBASEES 信息模式 表 6.55.1 – 续表 名称 数据类型 描述 action_order cardinal_number 同 一 个 表 上 具 有 相 同 event_manipulation、 和 action_timing action_orientation 的触 发器之间的触发顺序。在 KingbaseES 中,触发器按照名称顺 序被触发,因此这一列会反映这 种规则。 action_condition character_data 触发器的 WHEN 条件,如果没有 则为空(如果该表不被一个当前 已启用角色拥有也是为空) action_statement character_data 该 触 发 器 执 行 的 语 句 (当 前总是 EXECUTE FUNCTION function(...)) action_orientation character_data 标识触发器是对每个被处理的行 触发一次还是为每个语句触发一 次(ROW 或 STATEMENT) action_timing character_data 触 发 器 在 什 么 时 候 触 发 (BEFORE、AFTER 或 INSTEAD OF) action_reference_old_table sql_identifier “旧”传递表的名称,如果没有 则为空 action_reference_new_table sql_identifier “新”传递表的名称,如果没有 则为空 action_reference_old_row sql_identifier 应用于一个 KingbaseES 中不可 用的特性 action_reference_new_row sql_identifier 应用于一个 KingbaseES 中不可 用的特性 created time_stamp 应用于一个 KingbaseES 中不可 用的特性 KingbaseES 中的触发器有两点与 SQL 标准不兼容,这会影响在该信息模式中的表示。第一,在 KingbaseES 中触发器的名字是局限于每个表的,而不是独立于模式对象。因此可能在一个模式中会有重复的触发器名称,只要 它们属于不同的表(trigger_catalog 和 trigger_schema 才真正标识了触发器被定义在哪个表上)。第二,在 446 第 6 章 KINGBASEES 信息模式 KingbaseES 中触发器可以被定义为在多个事件上触发(例如 ON INSERT OR UPDATE),而在 SQL 标准中只允许一 个。如果一个触发器被定义为在多个事件上触发,它在信息模式中被表示为多行,每一行对应于一类事件。作为这 两个问题的结果,视图 triggers 的主键实际上是 (trigger_catalog, trigger_schema, event_object_table, trigger_name, event_manipulation), 而 不 是 (trigger_catalog, trigger_schema, trigger_name)(这 是 SQL 标准指定的)。尽管如此,如果你以符合 SQL 标准(在模式中触发器名称唯一并且每个触发器只能有一种事件 类型)的方式定义你的触发器,这将不会影响你。 注 意: 在 KingbaseES V8R2 之 前, 这 个 视 图 的 列 action_reference_new_table、action_reference_old_row 命 名 为 action_timing、action_reference_old_table、 和 action_reference_new_row 分别被 condition_timing、condition_reference_old_table、condition_reference_new_table、 condition_reference_old_row 和 condition_reference_new_row。那也是它们在 SQL:1999 标准中的命名。 新的命名遵循 SQL:2003 及其后的版本。 6.56 udt_privileges 视图 udt_privileges 标识所有在用户定义类型上授予的 USAGE 特权,这些特权的授予者或者被授予者是一个 当前已被启用的角色。对每一个类型、授予者和被授予者的组合都有一行。这个视图只显示组合类型(原因见下面 的user_defined_types )。域特权见usage_privileges 。 表 6.56.1: udt_privileges 列 名称 数据类型 描述 grantor sql_identifier 授予该特权的角色名 grantee sql_identifier 被授予该特权的角色名 udt_catalog sql_identifier 包含该类型的数据库名(总是当前数据库) udt_schema sql_identifier 包含该类型的模式名 udt_name sql_identifier 该类型的名字 privilege_type character_data 总是 TYPE USAGE is_grantable yes_or_no 如果该特权是可授予的,则为 YES,否则为 NO 447 第 6 章 KINGBASEES 信息模式 6.57 usage_privileges 视图 usage_privileges 标识所有在多种对象上授予的 USAGE 特权,这些特权的授予者或者被授予者是一个当 前已被启用的角色。在 KingbaseES 中,这当前适用于排序规则、域、外部数据包装器、外部服务器和序列。对每一 个对象、授予者和被授予者都有一行。 由于在 KingbaseES 中排序规则并没有真正的特权,这个视图对所有排序规则显示由拥有者授予给 PUBLIC 的隐 式非可授予的 USAGE 特权。但是对其他对象类型则显示真实的特权。 在 KingbaseES 中,序列也支持除 USAGE 之外的 SELECT 和 UPDATE 特权。这些是非标准的并且因此在该信息模 式中不可见。 表 6.57.1: usage_privileges 列 名称 数据类型 描述 grantor sql_identifier 授予该特权的角色名 grantee sql_identifier 被授予该特权的角色名 object_catalog sql_identifier 包含该对象的数据库名(总是当前数据 库) object_schema sql_identifier 如果适用,则是包含该对象的模式名, 否则为一个空字符串 object_name sql_identifier 该对象的名称 object_type character_data COLLATION 或 DOMAIN 或 FOREIGN DATA WRAPPER 或 FOREIGN SERVER 或 SEQUENCE privilege_type character_data 总是 USAGE is_grantable yes_or_no 如果该特权是可授予的,则为 YES,否 则为 NO 6.58 user_defined_types 视图 user_defined_types 目前包含定义在当前数据库中的所有组合类型。只有那些当前用户能够访问(作为 拥有者或具有某些特权)的类型才会被显示。 SQL 知道两种用户定义类型:结构类型(在 KingbaseES 中也被称为组合类型)以及独特类型(在 KingbaseES 没有实现)。要经得起未来的考验,请使用列 user_defined_type_category 来区分它们。其他用户定义类型如基 类型和枚举(都是 KingbaseES 的扩展)不会被显示在这里。对于域,请见domains 。 448 第 6 章 KINGBASEES 信息模式 表 6.58.1: user_defined_types 列 名称 数据类型 描述 user_defined_type_catalog sql_identifier 包含该类型的数据库名(总是当 前数据库) user_defined_type_schema sql_identifier 包含该类型的模式名 user_defined_type_name sql_identifier 该类型的名字 user_defined_type_category character_data 当前总是 STRUCTURED is_instantiable yes_or_no 应用于一个 KingbaseES 中不可 用的特性 is_final yes_or_no 应用于一个 KingbaseES 中不可 用的特性 ordering_form character_data 应用于一个 KingbaseES 中不可 用的特性 ordering_category character_data 应用于一个 KingbaseES 中不可 用的特性 ordering_routine_catalog sql_identifier 应用于一个 KingbaseES 中不可 用的特性 ordering_routine_schema sql_identifier 应用于一个 KingbaseES 中不可 用的特性 ordering_routine_name sql_identifier 应用于一个 KingbaseES 中不可 用的特性 reference_type character_data 应用于一个 KingbaseES 中不可 用的特性 data_type character_data 应用于一个 KingbaseES 中不可 用的特性 character_maximum_length cardinal_number 应用于一个 KingbaseES 中不可 用的特性 character_octet_length cardinal_number 应用于一个 KingbaseES 中不可 用的特性 见续表 449 第 6 章 KINGBASEES 信息模式 表 6.58.1 – 续表 名称 数据类型 描述 character_set_catalog sql_identifier 应用于一个 KingbaseES 中不可 用的特性 character_set_schema sql_identifier 应用于一个 KingbaseES 中不可 用的特性 character_set_name sql_identifier 应用于一个 KingbaseES 中不可 用的特性 collation_catalog sql_identifier 应用于一个 KingbaseES 中不可 用的特性 collation_schema sql_identifier 应用于一个 KingbaseES 中不可 用的特性 collation_name sql_identifier 应用于一个 KingbaseES 中不可 用的特性 numeric_precision cardinal_number 应用于一个 KingbaseES 中不可 用的特性 numeric_precision_radix cardinal_number 应用于一个 KingbaseES 中不可 用的特性 numeric_scale cardinal_number 应用于一个 KingbaseES 中不可 用的特性 datetime_precision cardinal_number 应用于一个 KingbaseES 中不可 用的特性 interval_type character_data 应用于一个 KingbaseES 中不可 用的特性 interval_precision cardinal_number 应用于一个 KingbaseES 中不可 用的特性 source_dtd_identifier sql_identifier 应用于一个 KingbaseES 中不可 用的特性 ref_dtd_identifier sql_identifier 应用于一个 KingbaseES 中不可 用的特性 450 第 6 章 KINGBASEES 信息模式 6.59 user_mapping_options 视图 user_mapping_options 包含在当前数据库中为用户映射定义的所有选项。只有那些当前用户能够访问其 相应外部服务器(作为拥有者或具有某些特权)的用户映射才会被显示。 表 6.59.1: user_mapping_options 列 名称 数据类型 描述 authorization_identifier sql_identifier 被映射的用户名,如果映射是公共的则 为 PUBLIC foreign_server_catalog sql_identifier 这个映射所使用的外部服务器所在的数 据库名(总是当前数据库) foreign_server_name sql_identifier 这个映射所使用的外部服务器的名称 option_name sql_identifier 一个选项名 option_value character_data 选项的值。除非当前用户是被映射的用 户或者映射是 PUBLIC 的并且当前用户是 服务器拥有者或者超级用户,这一列将 显示为空。这样做的目的是保护作为用 户映射选项存储的口令信息。 6.60 user_mappings 视图 user_mappings 包含定义在当前数据库中的所有用户映射。只有当前用户能够访问其对应外部服务器(作 为拥有者或具有某些特权)的用户映射才会被显示。 表 6.60.1: user_mappings 列 名称 数据类型 描述 authorization_identifier sql_identifier 被映射的用户名,如果映射是公共的则 为 PUBLIC foreign_server_catalog sql_identifier 这个映射所使用的外部服务器所在的数 据库名(总是当前数据库) foreign_server_name sql_identifier 这个映射所使用的外部服务器的名称 451 第 6 章 KINGBASEES 信息模式 6.61 view_column_usage 视图 view_column_usage 标识被使用在一个视图的查询表达式(定义该视图的 SELECT 语句)中的所有列。只 有当包含一列的表被一个当前已被启用角色拥有时,该列才会被包括在这个视图中。 注意: 系统表列不被包括。在某个时候这应该会被修复。 表 6.61.1: view_column_usage 列 名称 数据类型 描述 view_catalog sql_identifier 包含该视图的数据库名(总是当前数据库) view_schema sql_identifier 包含该视图的模式名 view_name sql_identifier 该视图的名称 table_catalog sql_identifier 被视图所使用的列所属表的数据库名(总是当前数据库) table_schema sql_identifier 被视图所使用的列所属表的模式名 table_name sql_identifier 被视图所使用的列所属表的名称 column_name sql_identifier 被该视图所使用的列名 6.62 view_routine_usage 视图 view_routine_usage 标识被使用在一个视图的查询表达式(定义该视图的 SELECT 语句)中的所有例程 (函数和过程)。只有被一个当前已被启用角色拥有的例程才会被包括在这个视图中。 表 6.62.1: view_routine_usage 列 名称 数据类型 描述 table_catalog sql_identifier 包含该视图的数据库名(总是当前数据库) table_schema sql_identifier 包含该视图的模式名 table_name sql_identifier 该视图的名称 specific_catalog sql_identifier 包含该函数的数据库名(总是当前数据库) 见续表 452 第 6 章 KINGBASEES 信息模式 表 6.62.1 – 续表 名称 数据类型 描述 specific_schema sql_identifier 包含该函数的模式名 specific_name sql_identifier 该函数的“专用名”。 6.63 view_table_usage 视图 view_table_usage 标识被使用在一个视图的查询表达式(定义该视图的 SELECT 语句)中的所有表。只有 被一个当前已被启用角色拥有的表才会被包括在这个视图中。 注意: 1. 查询结果不包括系统表; 2. 查询的视图对象不包括物化视图。 表 6.63.1: view_table_usage 列 名称 数据类型 描述 view_catalog sql_identifier 包含该视图的数据库名(总是当前数据库) view_schema sql_identifier 包含该视图的模式名 view_name sql_identifier 该视图的名称 table_catalog sql_identifier 包含被该视图所使用的表的数据库名(总是当前数据库) table_schema sql_identifier 包含被该视图所使用的表的模式名 table_name sql_identifier 包含被该视图所使用的表的名称 6.64 views 视图 views 包含定义在当前数据库中的所有视图。只有当前用户能够访问(作为拥有者或具有某些特权)的视 图才会被显示。 453 第 6 章 KINGBASEES 信息模式 表 6.64.1: views 列 名称 数据类型 描述 table_catalog sql_identifier 包含该视图的数据库名(总是当 前数据库) table_schema sql_identifier 包含该视图的模式名 table_name sql_identifier 该视图的名称 view_definition character_data 定义视图的查询表达式(如果该 视图不被一个当前已被启用角色 拥有则为空) check_option character_data 如 果 该 视 图 有 一 个 CHECKOPTION 上 的 定 义, 则 为 CASCADED 或者 LOCAL ,否 则为 NONE is_updatable yes_or_no 如果 该 视图 是 可 更新 的 (允 许 UPDATE 和 DELETE), 则 为 YES,否则为 NO is_insertable_into yes_or_no 如果 该 视图 是 可 插入 的 (允 许 INSERT), 则 为 YES, 否 则 为 NO is_trigger_updatable yes_or_no 如 果 该 视 图 上 有 一 个 INSTEAD OF UPDATE 触发器,则为 YES, 否则为 NO is_trigger_deletable yes_or_no 如 果 该 视 图 上 有 一 个 INSTEAD OF DELETE 触发器,则为 YES, 否则为 NO is_trigger_insertable_into yes_or_no 如 果 该 视 图 上 有 一 个 INSTEAD OF INSERT 触发器,则为 YES, 否则为 NO 454 第 7 章 附录 7 第 章 附录 7.1 数据库限制 项目 上限值 数据库大小 不限 数据库数量 4294950911 每个数库的关系数量 1431650303 关系大小 32 TB 说明 基于 BLCKSZ 为缺省值的 8192 字 节 每个表的记录数 受限于可以放到 4294967295 个页中 的元组数 每个表的列数 1600 同时受限于元组大小,需要能放到 单个页。 参考下面的说明 字段大小 1 GB 标识符长度 63 字节 可以通过重新编译 KingbaseES 增大 每个表的索引数 不限 受每个数据库最大关系数的约束 每个索引的列数 32 可以通过重新编译 KingbaseES 增大 分区键数量 32 可以通过重新编译 KingbaseES 增大 由于要存储的元组必须适合单个 8192 字节的堆页面,因此表的最大列数进一步减少。例如,除元组头外,由 1600 个 int 列组成的元组将占用 6400 字节并可以存储在堆页面中,而一个包含 1600 个 bigint 列的元组将消耗 12800 字节,因此无法放入单个堆页面中。当类型为比如 text,varchar 和 char 的可变长度字段时,如果值的长度足够大,它 们的值可以存储在行外的 TOAST 表中。表堆中的元组中只保留 18 个字节的指针。对于较短长度的可变长度字段, 455 第 7 章 附录 使用 4 字节或 1 字节的字段头,并且该值存储在堆元组内部。 从表中删除的列也会影响最大列限制。此外,尽管在元组的空位图中将新创建的元组的删除列值内部标记为空, 但空位图也占用空。 456 版权声明 版权声明 北京人大金仓信息技术股份有限公司(简称:人大金仓)版权所有,并保留对本手册及本声明的一切权利。 未得到人大金仓的书面许可,任何人不得以任何方式或形式对本手册内的任何部分进行复制、摘录、备份、修 改、传播、翻译成其他语言、将其全部或部分用于商业用途。 免责声明 本手册内容依据现有信息制作,由于产品版本升级或其他原因,其内容有可能变更。人大金仓保留在没有任何通 知或者提示的情况下对手册内容进行修改的权利。 本手册仅作为使用指导,人大金仓在编写本手册时已尽力保证其内容准确可靠,但并不确保手册内容完全没有错 误或遗漏,本手册中的所有信息也不构成任何明示或暗示的担保。 技术支持 • 人大金仓官方网站:http://www.kingbase.com.cn/ • 人大金仓文档中心:http://help.kingbase.com.cn/ • 全国服务热线:400-601-1188 • 人大金仓技术支持与反馈信箱:support@kingbase.com.cn 457 服务周期承诺 服务周期承诺 由于市场需求在不断变化,技术创新和发展的进程不断加剧,产品的版本更迭不可避免。人大金仓对于产品版本 生命周期的有效管理,有助于您提前规划项目,更好地从产品服务终止上过渡。 表 2: KingbaseES 产品生命周期里程碑 关键里程碑点 定义 产品发布日期 产品正式发布版本,即 GA(general availability)版本的发布日期。 停止销售日期 正式停止销售的日期,版本停止接受订单日。该日之后,产品将不再销售。 停止功能升级日期 在该日期之后,不再提供新特性和新硬件支持。但依旧提供错误修复、安全修复、功 能维护等服务。 停止功能维护日期 在该日期之后,不再维护功能,修复问题。但依旧提供安全修复等服务 停止安全维护日期 在该日期之后,不再发布补丁版本修复中高风险漏洞,仅提供有限的支持。 产品服务终止日期 停止提供产品服务和支持的日期。包括软件维护版本,缺陷修复,以及针对该产品的 所有服务支持(包括服务热线和远程/现场支持)。 服务周期策略 金仓数据库管理系统 KingbaseES 产品确保以下的服务周期: 1)产品自发布之日起至产品停止功能升级(包含新特性、新硬件支持)之日不少于 5 年。 2)产品停止功能升级之日起至产品停止功能维护(主要包括问题修复)之日不少于 4 年。 3)产品功能维护停止之日起至产品停止安全维护(包括中高风险漏洞修复)之日不少于 2 年。 服务终止策略 金仓数据库管理系统 KingbaseES 产品确保在销售后,至少提供 6 年的服务支持。 注意: 人大金仓将会综合各方因素来确定产品服务终止日期。并将在实际产品服务终止日期之前至少 90 天,通过公 458 服务周期承诺 开方式宣布产品服务终止日期。 459