==========================================
现供职于某上市互联网公司担任DBA
Oracle & PG ACE称号,
拥有 Oracle OCM、AWS、以及部分国产数据库等产品认证。
喜欢技术分享,热爱交友,也热爱健身。
2019年加入墨天轮,目前已发表了一百多篇原创文章,曾多次获评"月度墨力之星"。
OceanBase、PG中国分会、IvorySQL等南京地区组织者,也是TeckTalk技术交流社区创始人。
==========================================
1. 金仓数据库 KingbaseES 概述
金仓数据库(KingbaseES)作为中国自主研发的高性能关系型数据库,特别适用于金融、电信和政府等关键领域。其V9版本是Kingbase数据库中一款重要的版本,具有极高的稳定性、安全性以及与PostgreSQL相似的结构。在使用Kingbase数据库时,深入理解其目录结构和配置文件,对数据库管理员进行日常维护、调优以及故障处理至关重要。本文将详细介绍KingbaseES V9的目录结构与配置文件,并结合实际示例进行深入分析,力求为您提供一篇实用性极强的参考指南。
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
在上述目录中,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)
通过上述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
上面每个文件代表什么含义呢,此处我们可以通过使用 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
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');
-- 以上输出内容过多
对于 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%';
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:事务的开始时间。
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 表示正在等待)。
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=#