前言
本篇我们介绍HaloDB中的系统表。另外,HaloDB 16 已经正式发布,如果对新版本感兴趣的朋友请移步 https://www.modb.pro/doc/132036 后续会推出HaloDB 16版本的解读。
广告时间:
HaloDB 认证培训他来了!!!感兴趣的朋友可以下方扫码进群关注~~~
如果有对我们的产品感兴趣的朋友可以通过主页的联系方式与我取得联系,获取license来安装体验,目前已经开通HaloDB吐槽群,欢迎来喷,进群请私聊我获取。
个人公众号:张某人的DBA菜谱
HaloDB产品吐槽群(欢迎各位展示语言艺术):
系统表的作用以及意义
系统表是数据库管理系统(DBMS)中的关键组成部分,它们在数据库的结构和运行中发挥着至关重要的作用。以下是系统表对于数据库的主要作用:
- 存储元数据:
系统表存储了数据库的元数据,即关于数据的数据。这些元数据包括表的结构、索引信息、列的数据类型、约束条件(如主键、外键)、视图定义、存储过程、触发器等。 - 维护数据库架构:
系统表记录了数据库的架构信息,使得DBMS能够理解和处理数据库中的对象。这些对象包括用户定义的表、视图、索引等。 - 权限管理:
系统表存储了用户权限和角色信息,帮助DBMS进行访问控制和权限验证。例如,哪些用户有权限访问特定的表或执行特定的操作。 - 事务管理:
系统表记录了事务的状态和日志信息,帮助DBMS管理事务的完整性、一致性和恢复。例如,用于回滚未完成的事务或恢复崩溃后的数据库状态。 - 性能优化:
系统表存储了统计信息,如表的行数、索引的使用情况等,这些信息有助于查询优化器生成高效的查询计划。 - 记录数据库配置和状态:
系统表记录了数据库的配置参数和当前状态信息,例如内存分配、缓冲区大小、连接数等,使得管理员能够监控和调整数据库的性能和行为。 - 存储过程、函数和触发器:
系统表存储了数据库对象的定义,包括存储过程、函数和触发器的源代码和元数据,使得DBMS能够执行这些对象。 - 审计和日志记录:
系统表用于记录数据库操作的审计日志和错误日志,帮助管理员跟踪数据库活动、诊断问题和确保合规性。 - 备份和恢复:
系统表的信息对于数据库的备份和恢复过程至关重要。在恢复过程中,系统表帮助DBMS重建数据库的架构和状态。 - 支持SQL查询:
系统表是SQL查询的一部分,许多SQL命令(如 DESCRIBE, SHOW TABLES, SHOW INDEX 等)依赖于系统表来提供关于数据库结构和状态的信息。
系统表是数据库管理系统的核心组件,它们为数据库的结构、安全、性能、管理和维护提供了基础支持。了解和管理系统表对于数据库管理员来说是非常重要的,因为它们直接关系到数据库的可靠性和性能。下面我们介绍下HaloDB中的八大系统表
HaloDB中常用的系统表
1、pg_database
作用:存储当前PostgreSQL集群中所有数据库的信息。
关键字段:包括oid(数据库的唯一标识符)、datname(数据库的名称)、datdba(数据库所有者的OID)、encoding(数据库的字符集编码)、datallowconn(指示数据库是否允许连接)等。
示例:
halo0root=# select * from pg_database;
oid | datname | datdba | encoding | datcollate | datctype | datistemplate | datallowconn | datconnlimit | datlastsysoid | datfrozenxid | datminmxid | dattablespace | datacl
-------+-----------+--------+----------+-------------+-------------+---------------+--------------+--------------+---------------+--------------+------------+---------------+-------------------------
14721 | halo0root | 10 | 6 | en_US.UTF-8 | en_US.UTF-8 | f | t | -1 | 14720 | 734 | 1 | 1663 |
1 | template1 | 10 | 6 | en_US.UTF-8 | en_US.UTF-8 | t | t | -1 | 14720 | 734 | 1 | 1663 | {=c/halo,halo=CTc/halo}
14720 | template0 | 10 | 6 | en_US.UTF-8 | en_US.UTF-8 | t | f | -1 | 14720 | 734 | 1 | 1663 | {=c/halo,halo=CTc/halo}
(3 rows)
2、pg_class
作用:存储表以及类似表的数据库对象信息,包括索引、序列、视图和复合数据类型等。
关键字段:包括oid(对象的唯一标识符)、relname(表、索引、视图等的名称)、relnamespace(包含此关系的命名空间的OID)、relkind(表示对象的类型,如’r’表示普通表,'i’表示索引等)等。
示例:
halo0root=# select * from pg_class;
oid | relname | relnamespace | reltype | reloftype | relowner | relam | relfilenode | reltablespace | relpages | reltuples | relallvisible | reltoastrelid | relhasind
ex | relisshared | relpersistence | relkind | relnatts | relchecks | relhasrules | relhastriggers | relhassubclass | relrowsecurity | relforcerowsecurity | relispopulated | relreplident | relispartition | re
lrewrite | relfrozenxid | relminmxid | relacl | reloptions | relpartbound
-------+-----------------------------------------------+--------------+---------+-----------+----------+-------+-------------+---------------+----------+-----------+---------------+---------------+------
3、pg_namespace
作用:存储模式(schema)的信息,每个模式拥有独立的表、类型等集合,且没有名字冲突。
关键字段:包括nspname(模式的名称)、nspowner(模式所有者的OID)等。
halo0root=# select * from pg_namespace;
oid | nspname | nspowner | nspacl
-------+--------------------+----------+-------------------------
99 | pg_toast | 10 |
11 | pg_catalog | 10 | {halo=UC/halo,=U/halo}
2200 | public | 10 | {halo=UC/halo,=UC/halo}
14349 | information_schema | 10 | {halo=UC/halo,=U/halo}
14707 | sys | 10 |
(5 rows)
4、pg_authid
作用:包含有关数据库认证标识符(角色)的信息。一个角色可以体现“用户”和“组”的概念。
关键字段:包括rolname(角色的名称)、rolsuper(指示角色是否具有超级用户权限)、rolcanlogin(指示角色是否可以登录)等。
halo0root=# select * from pg_authid;
oid | rolname | rolsuper | rolinherit | rolcreaterole | rolcreatedb | rolcanlogin | rolreplication | rolbypa
ssrls | rolconnlimit | rolpassword
| rolvaliduntil
-------+---------------------------+----------+------------+---------------+-------------+-------------+----------------+--------
------+--------------+-----------------------------------------------------------------------------------------------------------
----------------------------+---------------
10 | halo | t | t | t | t | t | t | t
| -1 |
|
6171 | pg_database_owner | f | t | f | f | f | f | f
| -1 |
|
6181 | pg_read_all_data | f | t | f | f | f | f | f
| -1 |
|
6182 | pg_write_all_data | f | t | f | f | f | f | f
| -1 |
|
3373 | pg_monitor | f | t | f | f | f | f | f
| -1 |
|
3374 | pg_read_all_settings | f | t | f | f | f | f | f
| -1 |
|
3375 | pg_read_all_stats | f | t | f | f | f | f | f
| -1 |
|
3377 | pg_stat_scan_tables | f | t | f | f | f | f | f
| -1 |
|
4569 | pg_read_server_files | f | t | f | f | f | f | f
| -1 |
|
4570 | pg_write_server_files | f | t | f | f | f | f | f
| -1 |
|
4571 | pg_execute_server_program | f | t | f | f | f | f | f
| -1 |
|
4200 | pg_signal_backend | f | t | f | f | f | f | f
| -1 |
|
16384 | dbadmin | t | t | f | f | t | f | f
| -1 | SCRAM-SHA-256$4096:aeV9V99SN1NdgcV6KgJYUg==$g8xIHIuAL3a1BCR9ksJ7mE9jaYqmQK2YjCnZ6GH8r8U=:m+tDV71DCcZnhDlmG
PiadAOhPkBNmOmt1DPc1EV5aWk= |
(13 rows)
6、pg_auth_members
作用:显示角色之间的成员关系,即哪些角色是其他角色的成员。
关键字段:包括roleid(拥有成员的角色的ID)、member(属于roleid角色的一个成员的角色的ID)、grantor(赋予此成员关系的角色的ID)等。
halo0root=# select * from pg_auth_members;
roleid | member | grantor | admin_option
--------+--------+---------+--------------
3374 | 3373 | 10 | f
3375 | 3373 | 10 | f
3377 | 3373 | 10 | f
(3 rows)
7、pg_attribute
作用:存储数据库表的列信息,包括列的名称、数据类型、是否允许为空等。
关键字段:包括attrelid(表或索引的OID)、attname(列的名称)、atttypid(列的数据类型OID)、attnotnull(是否非空)等。
示例:
halo0root=# select * from pg_attribute;
attrelid | attname | atttypid | attstattarget | attlen | attnum | attndims | attcacheoff | atttypmo
d | attbyval | attalign | attstorage | attcompression | attnotnull | atthasdef | atthasmissing | attidentity | attgenerated | at
tisdropped | attislocal | attinhcount | attcollation | attacl | attoptions | attfdwoptions | attmissingval
----------+-------------------------------------+----------+---------------+--------+--------+----------+-------------+---------
省略...
(3094 rows)
8、pg_constraint
作用:存储表的约束信息,如主键约束、外键约束、唯一性约束等。
关键字段:包括conname(约束的名称)、conrelid(被约束的表的OID)、contype(约束的类型,如’p’表示主键约束)等。
halo0root=# select * from pg_constraint;
oid | conname | connamespace | contype | condeferrable | condeferred | convalidated | conrelid | contypid | conindid | conparentid | confrelid | confupdtype | confdeltype | confmatchtype | conislocal | coninhcount | conno
inherit | conkey | confkey | conpfeqop | conppeqop | conffeqop | conexclop | conbin
-------+-----------------------------------------------+--------------+---------+---------------+-------------+--------------+----------+----------+----------+-------------+-----------+-------------+-------------+---------------+------------+-------------+------
省略...
(116 rows)
最后:
虽然是慢工,但是不是什么细活,我们下期见~






