暂无图片
暂无图片
1
暂无图片
暂无图片
暂无图片

金仓数据库 KingbaseES V9 详解:目录结构与配置文件 (上)

703

金仓数据库 KingbaseES V9 详解:目录结构与配置文件 (上)

金仓数据库(KingbaseES)作为中国自主研发的高性能关系型数据库,特别适用于金融、电信和政府等关键领域。其V9版本是Kingbase数据库中一款重要的版本,具有极高的稳定性、安全性以及与PostgreSQL相似的结构。在使用Kingbase数据库时,深入理解其目录结构和配置文件,对数据库管理员进行日常维护、调优以及故障处理至关重要。本文将详细介绍KingbaseES V9的目录结构与配置文件,并结合实际示例进行深入分析,力求为您提供一篇实用性极强的参考指南。


1. 金仓数据库 KingbaseES 概述

KingbaseES(简称KES)是一款面向企业级应用的高性能数据库系统。它基于多版本并发控制(MVCC)和预写日志(WAL)机制,支持高并发、大量数据的处理。同时,它还兼容主流的SQL标准,并且对国产化需求进行了大量定制和优化。

Kingbase的核心特性包括:

  • 高可用性和容灾支持:提供异步和同步复制、双活架构,确保数据的安全性和业务的连续性。
  • 强大的SQL兼容性:兼容PostgreSQL的语法和功能,同时支持多种国产数据库的功能扩展。
  • 安全性:支持多层次的权限控制、审计功能,满足金融、电信、政府等行业对数据安全的严苛要求。

接下来,我们将重点介绍KingbaseES V9的目录结构以及重要的配置文件。


2. KingbaseES V9 目录结构详解

数据库的目录结构是数据库文件存放和组织的重要方式。KingbaseES的目录结构做了大量优化以支持高性能需求。下文将详细介绍Kingbase的各个主要目录及其用途。

2.1 数据目录(data

data目录是KingbaseES最核心的目录,包含数据库的所有数据文件、事务日志、表空间和配置文件。这个目录由数据库初始化时通过initdb命令创建,默认存放所有数据库的实际数据文件。

主要的子目录包括:

2.1.1 base 目录

存储数据库的用户数据。每个数据库都有一个独立的子目录,子目录的名称为数据库的 OID(对象标识符,系统生成的唯一ID)。该目录下存放的是每个表、索引等数据库对象的物理数据文件。例如,用户在数据库中创建了一个表employee,那么这个表的物理文件将会存储在该数据库的OID子目录下。

示例:

/database/kingbase/ES/V9/data/base
[root@testingdb base]# ls -lrt
total 96
drwx------. 2 kingbase kingbase 12288 Oct  3 15:29 14429
drwx------. 2 kingbase kingbase 12288 Oct  3 15:29 1
drwx------. 2 kingbase kingbase 12288 Oct  3 15:34 14432
drwx------. 2 kingbase kingbase 12288 Oct 11 11:37 14431
drwx------. 2 kingbase kingbase 12288 Oct 11 11:38 14430
drwx------  2 kingbase kingbase 12288 Oct 11 16:02 16384

image.png

在上述目录中,1、14429、14432、14431、14430、16384 每个数字都和一个具体的数据库对应,如何查询这些数字都和哪些数据库一一对应呢,这里可以通过一个SQL语句来查询:

kingdb=# SELECT oid, datname kingdb-# FROM pg_database; oid | datname -------+----------- 14430 | test 14431 | kingbase 1 | template1 14429 | template0 14432 | security 16384 | kingdb (6 rows)

image.png

通过上述SQL语句可以看到每个数字对应的数据库信息。

每个数字对应的数据库又含有哪些东西,代表什么含义呢,此处我们可以查找 16384 (kingdb) 这个目录来查看,如下所示:

[root@testingdb 16384]# ll total 14624 -rw------- 1 kingbase kingbase 8192 Oct 11 14:32 112 -rw------- 1 kingbase kingbase 8192 Oct 11 14:32 113 -rw------- 1 kingbase kingbase 0 Oct 11 14:32 1177 -rw------- 1 kingbase kingbase 0 Oct 11 14:32 1180 -rw------- 1 kingbase kingbase 57344 Oct 11 14:32 12184 -rw------- 1 kingbase kingbase 24576 Oct 11 14:32 12184_fsm -rw------- 1 kingbase kingbase 8192 Oct 11 14:32 12184_vm -rw------- 1 kingbase kingbase 24576 Oct 11 14:32 12187_fsm -rw------- 1 kingbase kingbase 8192 Oct 11 14:32 12187_vm -rw------- 1 kingbase kingbase 24576 Oct 11 14:32 8041_fsm -rw------- 1 kingbase kingbase 8192 Oct 11 14:32 8041_vm -rw------- 1 kingbase kingbase 8192 Oct 11 14:32 8044 -rw------- 1 kingbase kingbase 24576 Oct 11 14:32 8044_fsm -rw------- 1 kingbase kingbase 8192 Oct 11 14:32 8044_vm -rw------- 1 kingbase kingbase 32768 Oct 11 14:32 8045 -rw------- 1 kingbase kingbase 24576 Oct 11 14:32 8045_fsm -rw------- 1 kingbase kingbase 8192 Oct 11 14:32 8045_vm -rw------- 1 kingbase kingbase 8192 Oct 11 16:07 8050 -rw------- 1 kingbase kingbase 24576 Oct 11 14:32 8050_fsm -rw------- 1 kingbase kingbase 8192 Oct 11 14:42 8050_vm -rw------- 1 kingbase kingbase 8192 Oct 11 14:32 8052 -rw------- 1 kingbase kingbase 24576 Oct 11 14:32 8052_fsm -rw------- 1 kingbase kingbase 8192 Oct 11 14:32 8052_vm -rw------- 1 kingbase kingbase 16384 Oct 11 14:32 8053 -rw------- 1 kingbase kingbase 0 Oct 11 14:32 826 -rw------- 1 kingbase kingbase 8192 Oct 11 14:32 827 -rw------- 1 kingbase kingbase 8192 Oct 11 14:32 828 -rw------- 1 kingbase kingbase 512 Oct 11 14:32 sys_filenode.map -rw------- 1 kingbase kingbase 227856 Oct 11 14:33 sys_internal.init -rw------- 1 kingbase kingbase 3 Oct 11 14:32 SYS_VERSION

image.png

上面每个文件代表什么含义呢,此处我们可以通过使用 pg_class 系统表可以获取每个对象的 relfilenode ,即数据库对象(表、索引等)对应的数据文件,可以通过如下SQL来查询:

SELECT relname, relkind, relfilenode FROM pg_class WHERE reltablespace = 0 AND relfilenode IS NOT NULL; -- 字段含义解释 relname:数据库对象的名称(如表名、索引名等)。 relkind:对象的类型,例如: r:常规表(relation) i:索引(index) S:序列(sequence) v:视图(view) relfilenode:该对象对应的文件节点(即该对象对应的文件名)。 如果文件名后缀是 _fsm,表示是自由空间映射(FSM)。 如果文件名后缀是 _vm,表示是可见性映射(VM)。 主文件没有后缀,是存储实际数据的文件。 -- 查询的结果如下 [kingbase@testingdb ~]$ ksql -p 54321 -U system kingdb Password for user system: Type "help" for help. kingdb=# SELECT relname, relkind, relfilenode kingdb-# FROM pg_class kingdb-# WHERE reltablespace = 0 kingdb-# AND relfilenode IS NOT NULL; relname | relkind | relfilenode ---------------------------------------+---------+------------- agent_customer_area_limit_cn | r | 16385 pk_agentcustomerarealimitcn | i | 16395 pg_toast_16397 | t | 16400 pg_toast_16397_index | i | 16402 edm_email_info | r | 16397 pk_edm_email_info | i | 16403 _stat | r | 2619 _typ | r | 0 employees_id_seq | S | 16405 employees | r | 16407 employees_pkey | i | 16411 _tstmpl | r | 3764 pg_toast_2600 | t | 4159 pg_toast_2600_index | i | 4160 pg_toast_2604 | t | 2830 pg_toast_2604_index | i | 2831 pg_toast_3456 | t | 0 pg_toast_3456_index | i | 0 pg_toast_2606 | t | 2832 pg_toast_2606_index | i | 2833 pg_toast_826 | t | 4143 pg_toast_826_index | i | 4144 pg_toast_2609 | t | 2834 pg_toast_2609_index | i | 2835 pg_toast_3466 | t | 4145 pg_toast_3466_index | i | 4146 pg_toast_3079 | t | 4147 pg_toast_3079_index | i | 4148 pg_toast_2328 | t | 4149 pg_toast_2328_index | i | 4150 pg_toast_1417 | t | 4151 pg_toast_1417_index | i | 4152 pg_toast_3118 | t | 4153 pg_toast_3118_index | i | 4154 pg_toast_3394 | t | 4155 pg_toast_3394_index | i | 4156 pg_toast_2612 | t | 4157 pg_toast_2612_index | i | 4158 pg_toast_2615 | t | 4163 pg_toast_2615_index | i | 4164 pg_toast_3350 | t | 4165 pg_toast_3350_index | i | 4166 pg_toast_3256 | t | 4167 pg_toast_3256_index | i | 4168 pg_toast_1255 | t | 0 pg_toast_1255_index | i | 0 pg_toast_2618 | t | 2838 pg_toast_2618_index | i | 2839 pg_toast_3596 | t | 3598 pg_toast_3596_index | i | 3599 pg_toast_2619 | t | 2840 pg_toast_2619_index | i | 2841 pg_toast_3381 | t | 3439 pg_toast_3381_index | i | 3440 pg_toast_3429 | t | 3430 pg_toast_3429_index | i | 3431 pg_toast_8098 | t | 3434 pg_toast_8098_index | i | 3435 pg_toast_2620 | t | 2336 pg_toast_2620_index | i | 2337 pg_toast_3600 | t | 4169 pg_toast_3600_index | i | 4170 pg_toast_1247 | t | 0 pg_toast_1247_index | i | 0 pg_toast_1418 | t | 4173 pg_toast_1418_index | i | 4174 pg_toast_8045 | t | 8052 pg_toast_8045_index | i | 8053 pg_toast_8044 | t | 8031 pg_toast_8044_index | i | 8080 pg_toast_702 | t | 4187 pg_toast_702_index | i | 4188 _agg_fnoid_index | i | 2650 _am_name_index | i | 2651 _am_oid_index | i | 2652 _amop_fam_strat_index | i | 2653 _amop_opr_fam_index | i | 2654 _amop_oid_index | i | 2756 _amproc_fam_proc_index | i | 2655 _amproc_oid_index | i | 2757 _attdef_adrelid_adnum_index | i | 2656 _attdef_oid_index | i | 2657 _att_relid_attnam_index | i | 0 _att_relid_attnum_index | i | 0 _cast_oid_index | i | 2660 _cast_source_target_index | i | 2661 _rel_oid_index | i | 0 _rel_relname_nsp_index | i | 0 _rel_tblspc_relfilenode_index | i | 0 _coll_name_enc_nsp_index | i | 0 _coll_oid_index | i | 0 _con_conname_nsp_index | i | 2664 _con_conrelid_contypid_conname_index | i | 2665 _con_contypid_index | i | 2666 _con_oid_index | i | 2667 _con_conparentid_index | i | 2579 _con_status_conoid_index | i | 8032 _con_status_conrefconoid_index | i | 8033 _conv_default_index | i | 2668 _conv_name_nsp_index | i | 2669 _conv_oid_index | i | 2670 _dep_depender_index | i | 2673 _dep_reference_index | i | 2674 _desc_o_c_o_index | i | 2675 _enum_oid_index | i | 3502 _enum_typid_label_index | i | 3503 _enum_typid_sortorder_index | i | 3534 _set_oid_index | i | 4602 _set_typid_label_index | i | 4603 _set_typid_sortorder_index | i | 4634 _ind_indrelid_index | i | 2678 _ind_indexrelid_index | i | 2679 _inh_relid_seqno_index | i | 2680 _inh_parent_index | i | 2187 _initprivs_o_c_o_index | i | 3395 _lang_name_index | i | 2681 _lang_oid_index | i | 2682 _lob_loid_pn_index | i | 2683 _lob_meta_oid_index | i | 2996 _nsp_nspname_index | i | 2684 _nsp_oid_index | i | 2685 _opclass_am_name_nsp_index | i | 2686 _opclass_oid_index | i | 2687 _op_oid_index | i | 2688 _op_oprname_l_r_n_index | i | 2689 _opfamily_am_name_nsp_index | i | 2754 _opfamily_oid_index | i | 2755 _proc_oid_index | i | 0 _proc_proname_args_nsp_index | i | 0 _rewrite_oid_index | i | 2692 _rewrite_rel_rulename_index | i | 2693 _seq_seqrelid_index | i | 5002 _stat_relid_att_inh_index | i | 2696 _stat_ext_oid_index | i | 3380 _stat_ext_name_index | i | 3997 _stat_ext_relid_index | i | 3379 _statextdat_stxoid_index | i | 3433 _transform_oid_index | i | 3574 _transform_type_lang_index | i | 3575 _trigger_tgconstraint_index | i | 2699 _trigger_tgrelid_tgname_index | i | 2701 _trigger_oid_index | i | 2702 _event_trigger_evtname_index | i | 3467 _event_trigger_oid_index | i | 3468 _tsconf_cfgname_index | i | 3608 _tsconf_oid_index | i | 3712 _tsconfmap_index | i | 3609 _tsdict_dictname_index | i | 3604 _tsdict_oid_index | i | 3605 _tsparser_prsname_index | i | 3606 _tsparser_oid_index | i | 3607 _tstmpl_tmplname_index | i | 3766 _tstmpl_oid_index | i | 3767 _typ_oid_index | i | 0 _typ_typname_nsp_index | i | 0 _fdw_oid_index | i | 112 _fdw_name_index | i | 548 _fserver_oid_index | i | 113 _fserver_name_index | i | 549 _usrmapping_oid_index | i | 174 _usrmapping_user_server_index | i | 175 _ftab_relid_index | i | 3119 _defacl_role_nsp_obj_index | i | 827 _defacl_oid_index | i | 828 _seclabel_object_index | i | 3597 _ext_oid_index | i | 3080 _ext_name_index | i | 3081 _range_rngtypid_index | i | 3542 _policy_oid_index | i | 3257 _policy_polrelid_polname_index | i | 3258 _defpart_partrelid_index | i | 3351 _defpartex_partrelid_index | i | 7986 _pub_oid_index | i | 6110 _pub_pubname_index | i | 6111 _pubrel_oid_index | i | 6112 _pubrel_prrelid_prpubid_index | i | 6113 _defsubpart_partrelid_index | i | 8099 _subscrptrel_srrelid_srsubid_index | i | 6117 _syn_name_c_n_index | i | 8025 _syn_oid_index | i | 8026 _pkg_oid_index | i | 8027 _pkg_pkgname_nsp_index | i | 8028 _pkgitem_oid_index | i | 8029 _pkgitem_pkgoid_name_index | i | 8030 _dir_oid_index | i | 8035 _dir_dirname_index | i | 8036 sys_matview_index | i | 7855 sys_matview_mvid_index | i | 7854 sys_matview_logbaseid_index | i | 7853 _sysaudit_setting_oid_index | i | 8083 _sysaudit_setting_type_index | i | 8084 _sysaudit_setting_objoid_index | i | 8085 Inherits_relation_index | i | 6108 sys_dblink_oid_index | i | 8068 sys_dblink_lnkname_nsp_index | i | 8069 _qrymapping_oid_index | i | 703 _qrymapping_name_index | i | 704 _ctx_oid_index | i | 7981 _ctx_conname_index | i | 7980 _recyclebin_reloid_index | i | 7976 _obj_objectoid_index | i | 6666 _anonpolicy_index | i | 4190 _anonpolicy_object_index | i | 4191 _anonpolicy_name_index | i | 4192 _anonpolicy_user_index | i | 7079 _ce_col_index | i | 4261 _ce_col_rel_id_column_name_index | i | 4262 _ce_col_key_oid_index | i | 4263 _ce_col_key_name_index | i | 4264 _ce_col_key_distributed_id_index | i | 4265 _ce_mst_key_oid_index | i | 4269 _ce_mst_key_name_index | i | 4270 _ce_proc_oid | i | 4271 _ce_proc_func_id_index | i | 4272 _ce_mst_key_arg_oid_index | i | 4273 _ce_col_key_arg_oid_index | i | 4274 _obj_status_index | i | 6665 pg_aggregate | v | 0 pg_amproc | v | 0 pg_am | v | 0 pg_amop | v | 0 pg_attrdef | v | 0 pg_attribute | v | 0 pg_authid | v | 0 pg_depend | v | 0 pg_auth_members | v | 0 pg_cast | v | 0 pg_class | v | 0 pg_description | v | 0 pg_collation | v | 0 pg_constraint | v | 0 pg_constraint_status | v | 0 pg_enum | v | 0 pg_context | v | 0 pg_conversion | v | 0 pg_database | v | 0 pg_db_role_setting | v | 0 pg_default_acl | v | 0 pg_event_trigger | v | 0 pg_extension | v | 0 pg_foreign_data_wrapper | v | 0 pg_foreign_server | v | 0 pg_foreign_table | v | 0 pg_partitioned_table | v | 0 pg_index | v | 0 pg_inherits | v | 0 pg_init_privs | v | 0 pg_language | v | 0 pg_largeobject | v | 0 pg_largeobject_metadata | v | 0 pg_namespace | v | 0 pg_objects | v | 0 pg_opclass | v | 0 pg_operator | v | 0 pg_opfamily | v | 0 pg_partitionex_table | v | 0 pg_pltemplate | v | 0 pg_shseclabel | v | 0 pg_plpgsql_native_object | v | 0 pg_policy | v | 0 pg_statistic_ext | v | 0 pg_proc | v | 0 pg_publication | v | 0 pg_publication_rel | v | 0 pg_statistic_ext_data | v | 0 pg_range | v | 0 pg_replication_origin | v | 0 pg_rewrite | v | 0 pg_subpartition_table | v | 0 pg_seclabel | v | 0 pg_sequence | v | 0 pg_shdepend | v | 0 pg_subscription | v | 0 pg_shdescription | v | 0 pg_statistic | v | 0 pg_subscription_rel | v | 0 pg_tablespace | v | 0 pg_transform | v | 0 pg_trigger | v | 0 pg_ts_config | v | 0 pg_ts_config_map | v | 0 pg_ts_dict | v | 0 pg_ts_parser | v | 0 pg_ts_template | v | 0 pg_set | v | 0 pg_type | v | 0 pg_user_mapping | v | 0 _statextdat | r | 3429 pg_shadow | v | 0 pg_tables | v | 0 pg_matviews | v | 0 pg_stats | v | 0 pg_stats_ext | v | 0 pg_roles | v | 0 pg_group | v | 0 pg_user | v | 0 pg_policies | v | 0 pg_settings | v | 0 pg_file_settings | v | 0 pg_hba_file_rules | v | 0 pg_config | v | 0 pg_statio_all_indexes | v | 0 pg_timezone_abbrevs | v | 0 pg_timezone_names | v | 0 pg_statio_sys_indexes | v | 0 pg_stat_all_tables | v | 0 pg_stat_xact_all_tables | v | 0 pg_stat_sys_tables | v | 0 pg_stat_xact_sys_tables | v | 0 pg_stat_user_tables | v | 0 pg_stat_xact_user_tables | v | 0 _usrmapping | r | 1418 pg_replication_origin_status | v | 0 pg_stat_database | v | 0 pg_stat_transaction | v | 0 _att | r | 0 _proc | r | 0 _coll | r | 0 _rel | r | 0 _attdef | r | 2604 _con | r | 2606 pg_stat_database_conflicts | v | 0 pg_stat_user_functions | v | 0 pg_stat_xact_user_functions | v | 0 pg_stat_archiver | v | 0 _con_status | r | 8050 _inh | r | 2611 _ind | r | 2610 _op | r | 2617 _opfamily | r | 2753 _opclass | r | 2616 _am | r | 2601 _amop | r | 2602 _amproc | r | 2603 _lang | r | 2612 _lob_meta | r | 2995 _agg | r | 2600 _stat_ext | r | 3381 _rewrite | r | 2618 _trigger | r | 2620 _event_trigger | r | 3466 _desc | r | 2609 _cast | r | 2605 _enum | r | 3501 _set | r | 4601 _nsp | r | 2615 _conv | r | 2607 _dep | r | 2608 _tsconf | r | 3602 _tsconfmap | r | 3603 _tsdict | r | 3600 _tsparser | r | 3601 _ext | r | 3079 _fdw | r | 2328 _fserver | r | 1417 _ftab | r | 3118 _policy | r | 3256 _defacl | r | 826 _initprivs | r | 3394 _seclabel | r | 3596 _defpart | r | 3350 _defpartex | r | 7985 _defsubpart | r | 8098 _range | r | 3541 _transform | r | 3576 _seq | r | 2224 _pub | r | 6104 _pubrel | r | 6106 _subscrptrel | r | 6102 _syn | r | 8041 _pkg | r | 8045 _pkgitem | r | 8044 _dir | r | 8034 _sysaudit_ids_setting | r | 8082 _sysaudit_setting | r | 8081 _plpgsql_native_obj | r | 1177 _dblink | r | 8070 _qrymapping | r | 702 _disablerole | r | 1180 _ctx | r | 7979 _recyclebin | r | 7978 _anonpolicy | r | 1382 _obj | r | 6999 _globalchain | r | 4549 _ce_col | r | 4556 _ce_col_key | r | 4260 _ce_col_key_arg | r | 4275 _ce_mst_key | r | 4266 _ce_mst_key_arg | r | 4267 _ce_proc | r | 4268 _obj_status | r | 6664 sys_mview | r | 7859 pg_rules | v | 0 pg_views | v | 0 pg_indexes | v | 0 pg_sequences | v | 0 pg_publication_tables | v | 0 pg_locks | v | 0 pg_cursors | v | 0 pg_available_extensions | v | 0 pg_available_extension_versions | v | 0 pg_prepared_xacts | v | 0 pg_prepared_statements | v | 0 pg_seclabels | v | 0 pg_statio_all_tables | v | 0 pg_statio_sys_tables | v | 0 pg_statio_user_tables | v | 0 pg_stat_all_indexes | v | 0 pg_stat_sys_indexes | v | 0 pg_stat_user_indexes | v | 0 pg_statio_user_indexes | v | 0 pg_statio_all_sequences | v | 0 pg_statio_sys_sequences | v | 0 pg_statio_user_sequences | v | 0 pg_stat_activity | v | 0 pg_stat_replication | v | 0 pg_stat_wal_receiver | v | 0 pg_stat_subscription | v | 0 pg_stat_ssl | v | 0 pg_stat_gssapi | v | 0 pg_replication_slots | v | 0 pg_stat_wal_buffer | v | 0 pg_stat_bgwriter | v | 0 sys_stat_pre_archivewal | v | 0 pg_stat_progress_vacuum | v | 0 pg_stat_instio | v | 0 pg_stat_instevent | v | 0 pg_stat_instlock | v | 0 pg_stat_sqltime | v | 0 pg_stat_sqlwait | v | 0 pg_stat_sqlio | v | 0 pg_stat_shmem | v | 0 pg_stat_waitaccum | v | 0 pg_stat_msgaccum | v | 0 pg_stat_cached_plans | v | 0 pg_stat_dmlcount | v | 0 pg_stat_sqlcount | v | 0 pg_stat_progress_cluster | v | 0 pg_stat_progress_create_index | v | 0 pg_user_mappings | v | 0 _lob | r | 2613 administrable_role_authorizations | v | 0 information_schema_catalog_name | v | 0 applicable_roles | v | 0 attributes | v | 0 domain_constraints | v | 0 character_sets | v | 0 check_constraint_routine_usage | v | 0 role_column_grants | v | 0 check_constraints | v | 0 domain_udt_usage | v | 0 collations | v | 0 collation_character_set_applicability | v | 0 column_column_usage | v | 0 domains | v | 0 column_domain_usage | v | 0 column_privileges | v | 0 sequences | v | 0 column_udt_usage | v | 0 enabled_roles | v | 0 columns | v | 0 constraint_column_usage | v | 0 routine_privileges | v | 0 constraint_table_usage | v | 0 key_column_usage | v | 0 role_routine_grants | v | 0 parameters | v | 0 pg_toast_12184 | t | 12185 referential_constraints | v | 0 pg_toast_12184_index | i | 12186 routines | v | 0 sql_features | r | 12184 schemata | v | 0 pg_toast_12187 | t | 12188 pg_toast_12187_index | i | 12189 sql_implementation_info | r | 12187 pg_toast_12190 | t | 12191 pg_toast_12190_index | i | 12192 sql_languages | r | 12190 pg_toast_12193 | t | 12194 pg_toast_12193_index | i | 12195 triggered_update_columns | v | 0 sql_packages | r | 12193 pg_toast_12196 | t | 12197 pg_toast_12196_index | i | 12198 sql_parts | r | 12196 pg_toast_12199 | t | 12200 pg_toast_12199_index | i | 12201 sql_sizing | r | 12199 pg_toast_12202 | t | 12203 pg_toast_12202_index | i | 12204 sql_sizing_profiles | r | 12202 triggers | v | 0 table_constraints | v | 0 table_privileges | v | 0 role_table_grants | v | 0 role_usage_grants | v | 0 tables | v | 0 transforms | v | 0 udt_privileges | v | 0 role_udt_grants | v | 0 user_defined_types | v | 0 usage_privileges | v | 0 view_column_usage | v | 0 view_routine_usage | v | 0 view_table_usage | v | 0 _pg_user_mappings | v | 0 views | v | 0 data_type_privileges | v | 0 element_types | v | 0 _pg_foreign_table_columns | v | 0 user_mapping_options | v | 0 column_options | v | 0 _pg_foreign_data_wrappers | v | 0 foreign_data_wrapper_options | v | 0 all_ids_rules | v | 0 foreign_data_wrappers | v | 0 _pg_foreign_servers | v | 0 foreign_server_options | v | 0 foreign_servers | v | 0 _pg_foreign_tables | v | 0 show_rules | v | 0 foreign_table_options | v | 0 foreign_tables | v | 0 user_mappings | v | 0 pg_type_nmap | r | 12237 all_audit_rules | v | 0 sysmac_policys | v | 0 sysmac_policy_enforcements | v | 0 sysmac_table_policies | v | 0 sysmac_policy | r | 12241 sysmac_policy_pkey | i | 12242 sysmac_policy_policy_col_name_i | i | 12243 sysmac_policy_enforcement | r | 12253 sysmac_policy_enforcement_policy_id_i | i | 12254 sysmac_user | r | 12255 sysmac_user_policy_id_i | i | 12256 sysmac_label | r | 12251 sysmac_label_pkey | i | 12252 sysmac_compartment | r | 12248 sysmac_compartment_policy_id_i | i | 12249 sysmac_compartment_shortname_i | i | 12250 sysmac_level | r | 12245 sysmac_level_policy_id_i | i | 12246 sysmac_level_level_shortname_i | i | 12247 sysmac_policy_oid_seq | S | 12244 sysmac_obj | r | 12257 sysmac_obj_index_i | i | 12258 sysmac_column_label | r | 12259 sysmac_column_label_i | i | 12260 all_policy | v | 0 check_type | r | 12265 check_type_pkey | i | 12266 hm_run_t_run_id_seq | S | 12267 pg_toast_12268 | t | 12269 pg_toast_12268_index | i | 12270 hm_run_t | r | 12268 hm_run_t_pkey | i | 12271 hm_run_t_run_name_key | i | 12272 pg_toast_12273 | t | 12274 pg_toast_12273_index | i | 12275 check_param | r | 12273 param | v | 0 sys_pwdht_shadow | v | 0 sys_anon_policy | v | 0 sys_audit_blocklog | v | 0 sys_audit_userlog | v | 0 sys_database_link | v | 0 sys_directory | v | 0 sys_package | v | 0 sys_pkgitem | v | 0 sys_privilege | v | 0 sys_protect | v | 0 sys_query_mapping | v | 0 sys_recyclebin | v | 0 sys_role_disable | v | 0 sys_synonym | v | 0 sys_sysaudit_ids_setting | v | 0 sys_sysaudit_setting | v | 0 sys_sysprivilege | v | 0 kdb_job | v | 0 kdb_ce_col | v | 0 kdb_ce_col_key | v | 0 kdb_ce_col_key_arg | v | 0 kdb_ce_mst_key | v | 0 kdb_ce_mst_key_arg | v | 0 kdb_ce_proc | v | 0 sys_aggregate | v | 0 sys_am | v | 0 sys_amop | v | 0 sys_amproc | v | 0 sys_attrdef | v | 0 sys_attribute | v | 0 sys_authid | v | 0 sys_auth_members | v | 0 sys_cast | v | 0 sys_class | v | 0 sys_collation | v | 0 sys_context | v | 0 sys_conversion | v | 0 sys_database | v | 0 sys_db_role_setting | v | 0 sys_default_acl | v | 0 sys_depend | v | 0 sys_description | v | 0 sys_enum | v | 0 sys_event_trigger | v | 0 sys_extension | v | 0 sys_foreign_data_wrapper | v | 0 sys_foreign_server | v | 0 sys_foreign_table | v | 0 sys_index | v | 0 sys_inherits | v | 0 sys_init_privs | v | 0 sys_language | v | 0 sys_largeobject | v | 0 sys_largeobject_metadata | v | 0 sys_objects | v | 0 sys_opclass | v | 0 sys_sequence | v | 0 sys_operator | v | 0 sys_opfamily | v | 0 sys_partitioned_table | v | 0 sys_shdescription | v | 0 sys_pltemplate | v | 0 sys_policy | v | 0 sys_proc | v | 0 sys_shseclabel | v | 0 sys_publication | v | 0 sys_publication_rel | v | 0 sys_range | v | 0 sys_statistic | v | 0 sys_replication_origin | v | 0 sys_rewrite | v | 0 sys_seclabel | v | 0 sys_statistic_ext | v | 0 sys_shdepend | v | 0 sys_statistic_ext_data | v | 0 sys_subpartition_table | v | 0 sys_subscription | v | 0 sys_subscription_rel | v | 0 sys_tablespace | v | 0 sys_transform | v | 0 sys_trigger | v | 0 sys_triggers | v | 0 sys_ts_config | v | 0 sys_ts_config_map | v | 0 sys_constraint | v | 0 sys_ts_dict | v | 0 sys_ts_parser | v | 0 sys_ts_template | v | 0 sys_constraint_status | v | 0 sys_type | v | 0 sys_user_mapping | v | 0 sys_protect | v | 0 sys_available_extensions | v | 0 sys_object_status | v | 0 pg_triggers | v | 0 sys_depends | v | 0 sys_available_extension_versions | v | 0 sys_namespace | v | 0 sys_config | v | 0 sys_cursors | v | 0 sys_file_settings | v | 0 sys_group | v | 0 sys_hba_file_rules | v | 0 sys_sequences | v | 0 sys_indexes | v | 0 sys_locks | v | 0 sys_matviews | v | 0 sys_settings | v | 0 sys_policies | v | 0 sys_prepared_statements | v | 0 sys_prepared_xacts | v | 0 sys_publication_tables | v | 0 sys_replication_origin_status | v | 0 sys_replication_slots | v | 0 sys_roles | v | 0 sys_rules | v | 0 sys_seclabels | v | 0 sys_shadow | v | 0 sys_stat_activity | v | 0 sys_stat_instio | v | 0 sys_stat_instevent | v | 0 sys_stat_bgwriter | v | 0 sys_stat_instlock | v | 0 sys_stat_sqltime | v | 0 sys_stat_sqlwait | v | 0 sys_stat_pre_archivewal | v | 0 sys_stat_sqlio | v | 0 sys_stat_shmem | v | 0 sys_stat_msgaccum | v | 0 sys_stat_database | v | 0 sys_stat_waitaccum | v | 0 sys_stat_cached_plans | v | 0 sys_stat_all_indexes | v | 0 sys_stat_database_conflicts | v | 0 sys_stat_all_tables | v | 0 sys_stat_archiver | v | 0 sys_stat_wal_buffer | v | 0 sys_stat_transaction | v | 0 sys_stat_dmlcount | v | 0 sys_stat_sqlcount | v | 0 sys_stat_gssapi | v | 0 sys_stat_progress_cluster | v | 0 sys_stat_progress_create_index | v | 0 sys_stat_progress_vacuum | v | 0 sys_stat_xact_sys_tables | v | 0 sys_stat_replication | v | 0 sys_stat_ssl | v | 0 sys_stat_subscription | v | 0 sys_stat_sys_indexes | v | 0 sys_stat_sys_tables | v | 0 sys_stat_user_functions | v | 0 sys_stat_user_indexes | v | 0 sys_stat_user_tables | v | 0 sys_stat_wal_receiver | v | 0 sys_stat_xact_all_tables | v | 0 sys_stat_xact_user_functions | v | 0 sys_stat_xact_user_tables | v | 0 sys_statio_all_indexes | v | 0 sys_statio_all_sequences | v | 0 sys_statio_all_tables | v | 0 sys_statio_sys_indexes | v | 0 sys_statio_sys_sequences | v | 0 sys_statio_sys_tables | v | 0 sys_statio_user_indexes | v | 0 sys_statio_user_sequences | v | 0 sys_statio_user_tables | v | 0 sys_stats | v | 0 sys_stats_ext | v | 0 sys_tables | v | 0 sys_timezone_abbrevs | v | 0 sys_timezone_names | v | 0 sys_user | v | 0 sys_role | v | 0 sys_usergroup | v | 0 sys_users | v | 0 sys_user_mappings | v | 0 sys_views | v | 0 recyclebin | v | 0 user_any_privs | v | 0 pg_stat_metric_group | v | 0 pg_stat_metric_name | v | 0 pg_stat_metric | v | 0 pg_stat_metric_history | v | 0 pg_stat_sysmetric | v | 0 pg_stat_sysmetric_history | v | 0 pg_stat_sysmetric_summary | v | 0 sys_stat_metric_group | v | 0 sys_stat_metric_name | v | 0 sys_stat_metric | v | 0 sys_stat_metric_history | v | 0 sys_stat_sysmetric | v | 0 sys_stat_sysmetric_history | v | 0 sys_stat_sysmetric_summary | v | 0 sys_resource_groups | v | 0 dba_tables | v | 0 sys_resgroupcapability | v | 0 sys_resgroup | v | 0 sys_resauthid | v | 0 dual | r | 12474 dbms_sql.desc_rec | c | 0 dba_objects | v | 0 user_objects | v | 0 all_objects | v | 0 user_tables | v | 0 dba_types | v | 0 user_types | v | 0 all_tables | v | 0 all_types | v | 0 dba_all_tables | v | 0 user_all_tables | v | 0 all_all_tables | v | 0 dba_users | v | 0 all_ind_columns | v | 0 user_table_cols | v | 0 dba_col_privs | v | 0 user_col_privs | v | 0 all_col_privs | v | 0 pg_col_privs | v | 0 user_constraints | v | 0 user_ind_columns | v | 0 all_constraints | v | 0 dba_indexes | v | 0 dba_tab_cols | v | 0 all_tab_columns | v | 0 user_tab_cols | v | 0 dba_tab_columns | v | 0 all_tab_cols | v | 0 user_indexes | v | 0 user_views | v | 0 all_indexes | v | 0 user_tab_columns | v | 0 dba_ind_columns | v | 0 all_views | v | 0 dba_sequences | v | 0 dba_views | v | 0 all_sequences | v | 0 user_sequences | v | 0 dba_constraints | v | 0 dba_tab_comments | v | 0 dba_triggers | v | 0 all_triggers | v | 0 user_triggers | v | 0 dba_source | v | 0 all_source | v | 0 user_source | v | 0 dba_cons_columns | v | 0 all_cons_columns | v | 0 dba_tablespace | v | 0 dba_tablespaces | v | 0 user_tablespace | v | 0 user_tablespaces | v | 0 user_cons_columns | v | 0 all_users | v | 0 user_users | v | 0 dba_tab_privs | v | 0 all_tab_privs | v | 0 user_tab_privs | v | 0 dba_roles | v | 0 dba_role_privs | v | 0 user_role_privs | v | 0 dba_trigger_cols | v | 0 all_tab_comments | v | 0 user_tab_comments | v | 0 all_trigger_cols | v | 0 user_trigger_cols | v | 0 dba_col_comments | v | 0 all_col_comments | v | 0 user_col_comments | v | 0 v$database | v | 0 v$schema | v | 0 dba_part_tables | v | 0 all_part_tables | v | 0 user_part_tables | v | 0 v$session | v | 0 dba_tab_partitions | v | 0 all_tab_partitions | v | 0 user_tab_partitions | v | 0 v$metric | v | 0 v$metric_history | v | 0 v$instance | v | 0 v$sysstat | v | 0 v$lock | v | 0 v$parameter | v | 0 v$metricgroup | v | 0 v$metricname | v | 0 v$sysmetric | v | 0 v$sysmetric_history | v | 0 v$sysmetric_summary | v | 0 sys_freespaces | v | 0 dba_free_space | v | 0 user_free_space | v | 0 v$locked_object | v | 0 dba_synonyms | v | 0 db_files | v | 0 all_synonyms | v | 0 user_synonyms | v | 0 dba_db_links | v | 0 pg_toast_12587 | t | 12588 dba_arguments | v | 0 user_db_links | v | 0 all_arguments | v | 0 all_db_links | v | 0 dba_directories | v | 0 pg_toast_12587_index | i | 12589 _kingbase_loginfo | r | 12587 all_directories | v | 0 user_directories | v | 0 sys_grant_privileges | v | 0 sys_pwdht | v | 0 sys_logs | v | 0 sys_session | v | 0 user_arguments | v | 0 sys_space_quota | v | 0 v$context | v | 0 package_privileges | v | 0 role_package_grants | v | 0 sys_stat_statements_all | v | 0 sys_stat_statements | v | 0 (881 rows)

2.1.2 global 目录

该目录存放与整个数据库集群相关的全局系统表,比如数据库角色、用户、权限等信息,此目录下的文件对所有数据库都是共享的。例如,角色和权限的定义都会存放在global目录下。

在 global 目录有三个重要的以 sys 开头的文件,如下所示

示例:

[kingbase@testingdb ~]$ ls -l /database/kingbase/ES/V9/data/global/sys_*
-rw-------. 1 kingbase kingbase  8192 Oct 12 14:32 /database/kingbase/ES/V9/data/global/sys_control
-rw-------. 1 kingbase kingbase   512 Oct  3 15:28 /database/kingbase/ES/V9/data/global/sys_filenode.map
-rw-------  1 kingbase kingbase 41588 Oct 12 14:28 /database/kingbase/ES/V9/data/global/sys_internal.init

这三个以 sys 开头的文件属于数据库系统的元数据文件,直接影响数据库的状态管理和操作,不建议通过 vi 等命令打开和编辑这些文件,可通过 kingbase 提供的一些系统工具或命令以更安全的方式读取这些文件的信息。

1)sys_control 文件

该文件记录数据库集群的控制信息,类似 oracle的 control 控制文件,可通过 kingbase 提供的 sys_controldata 命令查看该文件信息。

注意:sys_controldata 命令不能直接查看文件,否则会报错,而是要通过查看目录的方式查看控制文件,如下所示

[kingbase@testingdb ~]$ /database/kingbase/ES/V9/KESRealPro/V009R001C001B0030/Server/bin/sys_controldata /database/kingbase/ES/V9/data/global/sys_control sys_controldata: fatal: could not open file "/database/kingbase/ES/V9/data/global/sys_control/global/sys_control" for reading: Not a directory [kingbase@testingdb ~]$ [kingbase@testingdb ~]$ /database/kingbase/ES/V9/KESRealPro/V009R001C001B0030/Server/bin/sys_controldata /database/kingbase/ES/V9/data sys_control version number: 1201 Catalog version number: 202311131 Database system identifier: 7421448089621999580 Database cluster state: in production sys_control last modified: Sat 12 Oct 2024 02:32:40 PM CST Latest checkpoint location: 0/16000100 Latest checkpoint's REDO location: 0/160000D0 Latest checkpoint's REDO WAL file: 000000010000000000000016 Latest checkpoint's WalTimeLineID: 1 Latest checkpoint's PrevTimeLineID: 1 Latest checkpoint's full_page_writes: on Latest checkpoint's NextXID: 0:1090 Latest checkpoint's NextOID: 16413 Latest checkpoint's NextMultiXactId: 1 Latest checkpoint's NextMultiOffset: 0 Latest checkpoint's oldestXID: 1051 Latest checkpoint's oldestXID's DB: 1 Latest checkpoint's oldestActiveXID: 1090 Latest checkpoint's oldestMultiXid: 1 Latest checkpoint's oldestMulti's DB: 1 Latest checkpoint's oldestCommitTsXid:0 Latest checkpoint's newestCommitTsXid:0 Time of latest checkpoint: Sat 12 Oct 2024 02:32:40 PM CST Fake LSN counter for unlogged rels: 0/3E8 Minimum recovery ending location: 0/0 Min recovery ending loc's timeline: 0 Backup start location: 0/0 Backup end location: 0/0 End-of-backup record required: no wal_level setting: replica wal_log_hints setting: off max_connections setting: 100 max_worker_processes setting: 8 max_wal_senders setting: 10 max_prepared_xacts setting: 0 max_locks_per_xact setting: 64 track_commit_timestamp setting: off Maximum data alignment: 8 Database block size: 8192 Blocks per segment of large relation: 131072 WAL block size: 8192 Bytes per WAL segment: 16777216 Maximum length of identifiers: 64 Maximum columns in an index: 32 Maximum size of a TOAST chunk: 1988 Size of a large-object chunk: 2048 Date/time type storage: 64-bit integers Float4 argument passing: by value Float8 argument passing: by value Data page checksum version: 0 Data page checksum device: 0 Mock authentication nonce: ee4ce400b50ff4991751600824462afaeb7226d05dc15f3b2236a82deb38aa98 database mode: 1 auth method mode: 0

image.png

2)sys_filenode.map 文件

sys_filenode.map 文件包含了数据库逻辑对象到物理文件的映射信息,通常我们不会直接查看这个文件,但可以通过 SQL 查询系统表来获取相关的映射信息。

示例:如通过如下命令查看 查看数据库对象的文件节点映射信息:

[kingbase@testingdb ~]$ ksql -p 54321 -U system kingdb Password for user system: Type "help" for help. kingdb=# SELECT oid, relname, relfilenode FROM pg_class WHERE relkind IN ('r', 'i'); oid | relname | relfilenode -------+---------------------------------------+------------- 16385 | agent_customer_area_limit_cn | 16385 16395 | pk_agentcustomerarealimitcn | 16395 16402 | pg_toast_16397_index | 16402 16397 | edm_email_info | 16397 16403 | pk_edm_email_info | 16403 2619 | _stat | 2619 1247 | _typ | 0 16407 | employees | 16407 16411 | employees_pkey | 16411 3764 | _tstmpl | 3764 4160 | pg_toast_2600_index | 4160 2831 | pg_toast_2604_index | 2831 ......

3)sys_internal.init sys_internal.init 文件主要用于初始化系统对象元数据,这个文件的直接内容并不适合手工查看,而应该依赖数据库的内部命令来读取相关的系统元数据信息。

示例:如可通过 SQL 查询系统对象的信息

kingdb=# SELECT * FROM pg_catalog.pg_class WHERE relnamespace = (SELECT oid FROM pg_namespace WHERE nspname = 'pg_catalog'); -- 以上输出内容过多

image.png

对于 sys_internal.init、sys_filenode.map、sys_control 文件的详细解释,本文就不做过多解释,以后会专门写此方面的文章,敬请期待。

2.1.3 sys_wal 目录

这个目录用于存储数据库的WAL(Write-Ahead Log)日志文件。WAL日志记录了数据库中每个事务的变更信息,确保数据的持久性和一致性。WAL日志对于数据库的恢复和灾难恢复非常重要。

在处理WAL(预写日志)的归档过程中,系统维护了一个专门的目录,名为archive_status,用以跟踪和管理那些待归档的WAL日志文件。当一个WAL文件的存在对于保持数据库的持久性不再必要时(即,它超出了配置的 wal_keep_segments 的限制),系统会在 archive_status 目录中创建一个与该WAL文件同名的 .ready 文件。这个 .ready 文件的存在标志着相应的WAL文件已经准备好并可以进行归档操作了。一旦归档操作成功完成,系统会将这个标记文件转换为 .done 状态,表明归档过程已经完成,WAL文件可以被安全地移除

示例:

[kingbase@testingdb ~]$ ls -lrt /database/kingbase/ES/V9/data/sys_wal
total 81920
-rw-------  1 kingbase kingbase 16777216 Oct 11 16:02 000000010000000000000018
-rw-------. 1 kingbase kingbase 16777216 Oct 11 16:07 000000010000000000000019
-rw-------. 1 kingbase kingbase 16777216 Oct 11 21:23 00000001000000000000001A
-rw-------  1 kingbase kingbase 16777216 Oct 12 14:32 000000010000000000000016
drwx------. 2 kingbase kingbase       43 Oct 12 14:32 archive_status
-rw-------  1 kingbase kingbase 16777216 Oct 12 14:32 000000010000000000000017

这些文件是WAL日志文件,每个文件的大小取决于配置的WAL日志大小(默认16MB)。

2.1.4 sys_aud 目录

sys_aud 目录下存储了系统的审计日志信息,这些日志文件包括用户登录登出、数据库操作、DDL(数据定义语言)变更、DML(数据操作语言)操作等。通过这些审计日志,DBA 可以清晰地了解系统中发生的各种安全性相关的操作行为。

sys_aud 目录的主要内容包括以下几类信息:

  • 用户登录登出审计:记录用户何时登录和登出数据库,包括登录失败的情况。

  • 对象操作审计:记录对数据库对象(如表、视图、存储过程等)的操作,包含创建、修改、删除等操作。

  • 数据操作审计:记录对数据的查询、插入、更新和删除操作。

  • 异常操作审计:记录非法操作或未授权访问行为。

这些审计记录的存在,帮助管理员进行追踪分析,尤其在安全事件发生后,通过这些信息能够回溯事件细节。

[kingbase@testingdb 14432]$ pwd /database/kingbase/ES/V9/data/sys_aud/14432 [kingbase@testingdb 14432]$ ll total 24 -rw-------. 1 kingbase kingbase 0 Oct 3 15:29 12149 -rw-------. 1 kingbase kingbase 0 Oct 3 15:29 12150 -rw-------. 1 kingbase kingbase 8192 Oct 3 15:29 12151 -rw-------. 1 kingbase kingbase 0 Oct 3 15:29 12154 -rw-------. 1 kingbase kingbase 0 Oct 3 15:29 12593 -rw-------. 1 kingbase kingbase 8192 Oct 3 15:29 12594 -rw-------. 1 kingbase kingbase 0 Oct 3 15:29 12597 -rw-------. 1 kingbase kingbase 0 Oct 3 15:29 12598 -rw-------. 1 kingbase kingbase 8192 Oct 3 15:29 12599 -- 目录 /database/kingbase/ES/V9/data/sys_aud/ 是专门用于存储审计数据的目录。 -- 文件名如 12149, 12150, 等等,这些文件通常是审计日志文件,它们的文件名为自动生成的序列号或编号,表示不同的审计日志数据块或事件记录。 -- 文件大小为 8192 字节,意味着这些是分片存储的文件,Kingbase 会把审计日志分成多个小文件存储,以便于管理和查询。

示例:

-- 通过 show all 将会列出所有配置参数,可在输出结果中查找类似 audit 的参数,看看是否有与审计功能相关的条目(例如 enable_audit、audit_log 等)及其状态。 -- 可以通过如下 SQL 查询当前数据库包含“audit”或“log”的表名,以帮助用户找到与审计日志或者操作日志相关的表。 SELECT schemaname, tablename FROM sys_tables WHERE tablename LIKE '%audit%' OR tablename LIKE '%log%';

image.png

2.1.5 sys_bulkload 目录

在 Kingbase V9 数据库中,sys_bulkload 目录与批量加载(bulk load)数据功能紧密相关。批量加载是将大量数据快速导入数据库的一种方式,广泛应用于数据仓库、大规模数据迁移和日志归档等场景。sys_bulkload 目录存储与这些操作相关的各种文件和信息。

sys_bulkload 目录内容

  • 批量加载中间数据文件
    在加载过程中,Kingbase 将待导入的数据文件存放在该目录下。数据格式可为 CSV、文本或 Kingbase 特定的二进制格式,具体取决于配置。文件经过读取、格式转换及验证等处理后导入数据库。

  • 加载日志文件
    目录中还包含加载日志,记录加载过程中的关键事件,如成功或失败的记录、加载进度等。这些日志有助于追踪批量加载的详细信息及错误排查。

  • 临时或控制文件
    加载过程中,Kingbase 可能生成临时文件以优化操作。控制文件用于记录加载状态、进度等控制信息,加载完成后会被清理。

批量加载的应用场景

  • 数据迁移:批量加载可加速将外部系统数据导入 Kingbase,减少迁移时间。
  • 数据仓库导入:处理大规模数据集时,批量加载可迅速将数据集成至数据库,供后续分析使用。
  • 日志和大数据导入:在导入日志文件或大数据集时,批量加载提供高效的数据导入解决方案。

2.1.6 sys_xact 目录

在 Kingbase V9 数据库中,sys_xact 目录用于管理与数据库 事务(Transaction) 相关的信息。sys_xact 是事务提交日志(Commit Log)的存储目录. 事务提交日志默认256KB,文件名形如XXXX, 系统初始化后从0000开始递增至FFFF。事务是数据库操作的基本单元,用于保证数据的一致性和完整性。sys_xact 目录包含事务的元数据,帮助数据库在执行事务操作时维持数据的一致性。

作用:

  • 存储事务的元数据

    • sys_xact 目录用于存储数据库中所有事务的元数据信息,包括每个事务的状态(如正在执行、已提交、已回滚等)以及其对应的数据版本。
  • 保证事务的原子性与一致性

    • 在数据库执行过程中,事务可能因为各种原因而需要进行回滚或提交。sys_xact 中的事务状态信息帮助数据库在崩溃或恢复时确定每个事务的正确状态,从而保证数据的一致性。
  • 管理事务的隔离性

    • 在并发环境中,多个事务同时访问相同的数据可能会导致数据不一致。sys_xact 目录中的信息帮助数据库实现隔离控制,确保事务之间不会互相干扰。

sys_xact 目录中的信息通常是以二进制格式存储在系统内部,用户不能直接通过 SQL 查询该目录中的文件内容。Kingbase 提供了一些系统视图和相关工具,帮助你查看与事务管理有关的元数据。

1) 查看当前活跃事务

使用系统视图 sys_stat_activity 来查看数据库中所有活跃的事务,包括事务的状态、执行的 SQL 语句、用户等信息。 [kingbase@testingdb ~]$ ksql -p 54321 -U system kingbase Password for user system: Type "help" for help. kingbase=# select datid, datname, pid, usename, state, query, backend_start, xact_start from sys_stat_activity; datid | datname | pid | usename | state | query | backend_start | xact_start -------+----------+-------+---------+--------+------------------------------------------------------------------------------------------------------+-- -----------------------------+------------------------------- | | 1202 | | | | 2 024-11-25 23:09:08.156456+08 | 14431 | kingbase | 1215 | system | idle | | 2 024-11-25 23:09:08.208331+08 | | | 1216 | system | idle | | 2 024-11-25 23:09:08.233263+08 | | | 1217 | system | | | 2 024-11-25 23:09:08.240726+08 | 14431 | kingbase | 33167 | system | active | select datid, datname, pid, usename, state, query, backend_start, xact_start from sys_stat_activity; | 2 024-11-26 09:23:42.206040+08 | 2024-11-26 09:24:12.464550+08 | | 1200 | | | | 2 024-11-25 23:09:08.148748+08 | | | 1199 | | | | 2 024-11-25 23:09:08.145563+08 | | | 1201 | | | | 2 024-11-25 23:09:08.151744+08 | (8 rows) 字段说明: datid:数据库的 ID。 datname:数据库的名称。 pid:该事务所属进程的 ID。 usename:用户名。 state:当前事务的状态(如 active、idle 等)。 query:当前正在执行的 SQL 查询。 backend_start:后台进程开始时间。 xact_start:事务的开始时间。

image.png

2) 查看事务锁的信息

-- 使用系统视图 sys_locks 来查看当前事务持有的锁的信息,这对于了解哪些资源被事务锁定以及锁等待情况非常有用。 [kingbase@testingdb ~]$ ksql -p 54321 -U system kingbase Password for user system: Type "help" for help. kingbase=# select locktype, database, relation, page, tuple, virtualxid, transactionid, classid, objid, kingbase-# virtualtransaction, pid, mode, granted from sys_locks; locktype | database | relation | page | tuple | virtualxid | transactionid | classid | objid | virtualtransaction | pid | mode | grante d ------------+----------+----------+------+-------+------------+---------------+---------+-------+--------------------+-------+-----------------+------- -- relation | 14431 | 12085 | | | | | | | 6/210 | 33495 | AccessShareLock | t relation | 14431 | 12381 | | | | | | | 6/210 | 33495 | AccessShareLock | t virtualxid | | | | | 6/210 | | | | 6/210 | 33495 | ExclusiveLock | t (3 rows) kingbase=# 字段说明: locktype:锁的类型(如 relation、page、tuple 等)。 transactionid:事务的 ID。 relation:被锁的表的 OID。 pid:持有锁的进程 ID。 mode:锁的模式(如 AccessShareLock、RowExclusiveLock 等)。 granted:指示锁是否已授予(true 表示已授予,false 表示正在等待)。

image.png

3) 查看未决的两阶段提交事务

-- 对于使用 两阶段提交(2PC) 的事务,可以使用系统视图 sys_prepared_xacts 来查看已经完成准备阶段但尚未提交或回滚的事务。 [kingbase@testingdb ~]$ ksql -p 54321 -U system kingbase Password for user system: Type "help" for help. kingbase=# select database, gid, prepared, owner, transaction kingbase-# from sys_prepared_xacts; database | gid | prepared | owner | transaction ----------+-----+----------+-------+------------- (0 rows) kingbase=#

image.png

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

文章被以下合辑收录

评论