华为云用户手册

  • PG_AM PG_AM系统表存储有关索引访问方法的信息。系统支持的每种索引访问方法都有一行。 表1 PG_AM字段 名称 类型 引用 描述 oid oid - 行标识符(隐含属性,必须明确选择)。 amname name - 访问方法的名称。 amstrategies smallint - 访问方法的操作符策略个数,或者如果访问方法没有一个固定的操作符策略集则为0。 amsupport smallint - 访问方法的支持过程个数。 amcanorder boolean - 这种访问方式是否支持通过索引字段值的命令扫描排序。 t(true):表示支持。 f(false):表示不支持。 amcanorderbyop boolean - 这种访问方式是否支持通过索引字段上操作符的结果的命令扫描排序。 t(true):表示支持。 f(false):表示不支持。 amcanbackward boolean - 访问方式是否支持向后扫描。 t(true):表示支持。 f(false):表示不支持。 amcanunique boolean - 访问方式是否支持唯一索引。 t(true):表示支持。 f(false):表示不支持。 amcanmulticol boolean - 访问方式是否支持多字段索引。 t(true):表示支持。 f(false):表示不支持。 amoptionalkey boolean - 访问方式是否支持第一个索引字段上没有任何约束的扫描。 t(true):表示支持。 f(false):表示不支持。 amsearcharray boolean - 访问方式是否支持ScalarArrayOpExpr搜索。 t(true):表示支持。 f(false):表示不支持。 amsearchnulls boolean - 访问方式是否支持IS NULL/NOT NULL搜索。 t(true):表示支持。 f(false):表示不支持。 amstorage boolean - 是否允许索引存储的数据类型与列的数据类型不同。 t(true):表示允许。 f(false):表示不允许。 amclusterable boolean - 是否允许在一个这种类型的索引上聚簇。 t(true):表示允许。 f(false):表示不允许。 ampredlocks boolean - 是否允许这种类型的一个索引管理细粒度的谓词锁定。 t(true):表示允许。 f(false):表示不允许。 amkeytype oid PG_TYPE.oid 存储在索引里数据的类型,如果不是一个固定的类型则为0。 aminsert regproc PG_PROC.proname “插入这个行”函数。 ambeginscan regproc PG_PROC.proname “准备索引扫描”函数。 amgettuple regproc PG_PROC.proname “下一个有效行”函数,如果没有则为0。 amgetbitmap regproc PG_PROC.proname “抓取所有的有效行” 函数,如果没有则为0。 amrescan regproc PG_PROC.proname “(重新)开始索引扫描”函数。 amendscan regproc PG_PROC.proname “索引扫描后清理” 函数。 ammarkpos regproc PG_PROC.proname “标记当前扫描位置”函数。 amrestrpos regproc PG_PROC.proname “恢复已标记的扫描位置”函数。 ammerge regproc PG_PROC.proname “归并多个索引对象”函数。 ambuild regproc PG_PROC.proname “建立新索引”函数。 ambuildempty regproc PG_PROC.proname “建立空索引”函数。 ambulkdelete regproc PG_PROC.proname 批量删除函数。 amvacuumcleanup regproc PG_PROC.proname VACUUM后的清理函数。 amcanreturn regproc PG_PROC.proname 检查是否索引支持唯一索引扫描的函数,如果没有则为0。 amcostestimate regproc PG_PROC.proname 估计一个索引扫描开销的函数。 amoptions regproc PG_PROC.proname 为一个索引分析和确认reloptions的函数。 父主题: 其他系统表
  • MY_TAB_PARTITIONS MY_TAB_PARTITIONS视图显示当前用户下所有一级分区信息。当前用户下每个分区表的一级分区都会在MY_TAB_PARTITIONS中有一条记录。所有用户都可以访问。该视图同时存在于PG_CATA LOG 和SYS Schema下。 表1 MY_TAB_PARTITIONS字段 名称 类型 描述 table_owner character varying(64) 表的所有者。 table_name character varying(64) 关系表名称。 partition_name character varying(64) 分区名称。 high_value text 分区的边界值。 对于范围分区和间隔分区,显示各分区的上边界值。 对于列表分区,显示各分区的取值列表。 对于哈希分区,显示各分区的编号。 tablespace_name name 分区表的表空间名称。 schema character varying(64) 名称空间的名称。 subpartition_count bigint 二级分区的个数。 high_value_length integer 分区边界值表达式的长度。 composite character varying(3) 表是否为二级分区表。 partition_position numeric 分区在表中的位置。 pct_free numeric 块中可用空间的最小百分比。 pct_used numeric 暂不支持,值为NULL。 ini_trans numeric 初始事务数,默认值为4,非USTORE分区表时为NULL。 max_trans numeric 最大事务数,默认值为128,非USTORE分区表时为NULL。 initial_extent numeric 暂不支持,值为NULL。 next_extent numeric 暂不支持,值为NULL。 min_extent numeric 暂不支持,值为NULL。 max_extent numeric 暂不支持,值为NULL。 max_size numeric 暂不支持,值为NULL。 pct_increase numeric 暂不支持,值为NULL。 freelists numeric 暂不支持,值为NULL。 freelist_groups numeric 暂不支持,值为NULL。 logging character varying(7) 是否记录对表的更改。 compression character varying(8) 表分区的实际压缩属性。 compress_for character varying(30) 暂不支持,值为NULL。 num_rows numeric 分区中的行数。 blocks numeric 暂不支持,值为NULL。 empty_blocks numeric 暂不支持,值为NULL。 avg_space numeric 暂不支持,值为NULL。 chain_cnt numeric 暂不支持,值为NULL。 avg_row_len numeric 暂不支持,值为NULL。 sample_size numeric 暂不支持,值为NULL。 last_analyzed timestamp with time zone 最近分析此分区的日期。 buffer_pool character varying(7) 用于分区块的缓冲池。 flash_cache character varying(7) 暂不支持,值为NULL。 cell_flash_cache character varying(7) 暂不支持,值为NULL。 global_stats character varying(3) 暂不支持,值为NULL。 user_stats character varying(3) 暂不支持,值为NULL。 is_nested character varying(3) 指示这是否是嵌套表分区。 parent_table_partition character varying(128) 暂不支持,值为NULL。 interval character varying(3) 分区是否在间隔分区表的间隔节中。 segment_created character varying(4) 表分区是否创建了段。 indexing character varying(4) 暂不支持,值为NULL。 read_only character varying(4) 暂不支持,值为NULL。 inmemory character varying(8) 暂不支持,值为NULL。 inmemory_priority character varying(8) 暂不支持,值为NULL。 inmemory_distribute character varying(15) 暂不支持,值为NULL。 inmemory_compression character varying(17) 暂不支持,值为NULL。 inmemory_duplicate character varying(13) 暂不支持,值为NULL。 cellmemory character varying(24) 暂不支持,值为NULL。 inmemory_service character varying(12) 暂不支持,值为NULL。 inmemory_service_name character varying(100) 暂不支持,值为NULL。 memoptimize_read character varying(8) 暂不支持,值为NULL。 memoptimize_write character varying(8) 暂不支持,值为NULL 父主题: 分区表
  • STATIO_SYS_INDEXES STATIO_SYS_INDEXES显示命名空间中所有系统表索引的I/O状态信息,如表1所示。 表1 STATIO_SYS_INDEXES字段 名称 类型 描述 relid oid 索引的表的OID。 indexrelid oid 该索引的OID。 schemaname name 该索引的模式名。 relname name 该索引的表名。 indexrelname name 索引名称。 idx_blks_read bigint 从索引中读取的磁盘块数。 idx_blks_hit bigint 索引命中缓存数。 last_updated timestamp with time zone 视图中该对象监控数据最后一次更新的时间。 父主题: Cache/IO
  • 分区表统计信息函数 gs_stat_get_partition_stats(oid) 描述:获取特定分区的统计信息。 返回值类型:record。 gs_stat_get_xact_partition_stats(oid) 描述:获取特定分区的事务中统计信息。 返回值类型:record。 gs_stat_get_all_partitions_stats() 描述:获取所有分区的统计信息。 返回值类型:setof record。 gs_stat_get_xact_all_partitions_stats() 描述:获取所有分区的事务中统计信息。 返回值类型:setof record。 gs_statio_get_all_partitions_stats() 描述:获取所有分区的I/O统计信息。 返回值类型:setof record。 上述五个函数示例: 运行时统计信息上报是异步的,且基于UDP协议,后台线程处理可能存在延迟和丢包,此处示例预期仅供参考。 事务外统计信息查询: gaussdb=# CREATE TABLE part_tab1 gaussdb-# ( gaussdb(# a int, b int gaussdb(# ) gaussdb-# PARTITION BY RANGE(b) gaussdb-# ( gaussdb(# PARTITION P1 VALUES LESS THAN(10), gaussdb(# PARTITION P2 VALUES LESS THAN(20), gaussdb(# PARTITION P3 VALUES LESS THAN(MAXVALUE) gaussdb(# ); CREATE TABLE gaussdb=# CREATE TABLE subpart_tab1 gaussdb-# ( gaussdb(# month_code VARCHAR2 ( 30 ) NOT NULL , gaussdb(# dept_code VARCHAR2 ( 30 ) NOT NULL , gaussdb(# user_no VARCHAR2 ( 30 ) NOT NULL , gaussdb(# sales_amt int gaussdb(# ) gaussdb-# PARTITION BY RANGE (month_code) SUBPARTITION BY RANGE (dept_code) gaussdb-# ( gaussdb(# PARTITION p_201901 VALUES LESS THAN( '201903' ) gaussdb(# ( gaussdb(# SUBPARTITION p_201901_a VALUES LESS THAN( '2' ), gaussdb(# SUBPARTITION p_201901_b VALUES LESS THAN( '3' ) gaussdb(# ), gaussdb(# PARTITION p_201902 VALUES LESS THAN( '201904' ) gaussdb(# ( gaussdb(# SUBPARTITION p_201902_a VALUES LESS THAN( '2' ), gaussdb(# SUBPARTITION p_201902_b VALUES LESS THAN( '3' ) gaussdb(# ) gaussdb(# ); CREATE TABLE gaussdb=# CREATE INDEX index_part_tab1 ON part_tab1(b) LOCAL gaussdb-# ( gaussdb(# PARTITION b_index1, gaussdb(# PARTITION b_index2, gaussdb(# PARTITION b_index3 gaussdb(# ); CREATE INDEX gaussdb=# CREATE INDEX idx_user_no ON subpart_tab1(user_no) LOCAL; CREATE INDEX gaussdb=# INSERT INTO part_tab1 VALUES(1, 1); INSERT 0 1 gaussdb=# INSERT INTO part_tab1 VALUES(1, 11); INSERT 0 1 gaussdb=# INSERT INTO part_tab1 VALUES(1, 21); INSERT 0 1 gaussdb=# UPDATE part_tab1 SET a = 2 WHERE b = 1; UPDATE 1 gaussdb=# UPDATE part_tab1 SET a = 3 WHERE b = 11; UPDATE 1 gaussdb=# UPDATE /*+ indexscan(part_tab1) */ part_tab1 SET a = 4 WHERE b = 21; UPDATE 1 gaussdb=# DELETE FROM part_tab1; DELETE 3 gaussdb=# ANALYZE part_tab1; ANALYZE gaussdb=# VACUUM part_tab1; VACUUM gaussdb=# INSERT INTO subpart_tab1 VALUES('201902', '1', '1', 1); INSERT 0 1 gaussdb=# INSERT INTO subpart_tab1 VALUES('201902', '2', '2', 1); INSERT 0 1 gaussdb=# INSERT INTO subpart_tab1 VALUES('201903', '1', '3', 1); INSERT 0 1 gaussdb=# INSERT INTO subpart_tab1 VALUES('201903', '2', '4', 1); INSERT 0 1 gaussdb=# UPDATE subpart_tab1 SET sales_amt = 2 WHERE user_no='1'; UPDATE 1 gaussdb=# UPDATE subpart_tab1 SET sales_amt = 3 WHERE user_no='2'; UPDATE 1 gaussdb=# UPDATE subpart_tab1 SET sales_amt = 4 WHERE user_no='3'; UPDATE 1 gaussdb=# UPDATE /*+ indexscan(subpart_tab1) */ subpart_tab1 SET sales_amt = 5 WHERE user_no='4'; UPDATE 1 gaussdb=# DELETE FROM subpart_tab1; DELETE 4 gaussdb=# ANALYZE subpart_tab1; ANALYZE gaussdb=# VACUUM subpart_tab1; VACUUM gaussdb=# SELECT * FROM gs_stat_all_partitions; partition_oid | schemaname | relname | partition_name | sub_partition_name | seq_scan | seq_tup_read | idx_scan | idx_tup_fetch | n_tup_ins | n_tup_upd | n_tup_del | n_tup_hot_upd | n_live_tup | n_dead_tup | last_vacuum | last_autovacuum | last_analyze | last_autoanalyze | vacuum_count | autovacuum_count | analyze_count | autoanalyze_count ---------------+------------+--------------+----------------+--------------------+----------+--------------+----------+---------------+-----------+-----------+-----------+---------------+------------+ ------------+-------------------------------+------------------------+-------------------------------+------------------------+--------------+------------------+---------------+------------------- 16964 | public | subpart_tab1 | p_201902 | p_201902_b | 5 | 1 | 4 | 1 | 1 | 1 | 1 | 1 | 0 | 1 | 2023-05-15 20:36:45.293965+08 | 2000-01-01 08:00:00+08 | 2023-05-15 20:36:44.688861+08 | 2000-01-01 08:00:00+08 | 1 | 0 | 1 | 0 16963 | public | subpart_tab1 | p_201902 | p_201902_a | 5 | 1 | 4 | 0 | 1 | 1 | 1 | 1 | 0 | 1 | 2023-05-15 20:36:45.291022+08 | 2000-01-01 08:00:00+08 | 2023-05-15 20:36:44.688843+08 | 2000-01-01 08:00:00+08 | 1 | 0 | 1 | 0 16961 | public | subpart_tab1 | p_201901 | p_201901_b | 5 | 1 | 4 | 0 | 1 | 1 | 1 | 1 | 0 | 1 | 2023-05-15 20:36:45.288037+08 | 2000-01-01 08:00:00+08 | 2023-05-15 20:36:44.688829+08 | 2000-01-01 08:00:00+08 | 1 | 0 | 1 | 0 16960 | public | subpart_tab1 | p_201901 | p_201901_a | 5 | 1 | 4 | 0 | 1 | 1 | 1 | 1 | 0 | 1 | 2023-05-15 20:36:45.285311+08 | 2000-01-01 08:00:00+08 | 2023-05-15 20:36:44.688802+08 | 2000-01-01 08:00:00+08 | 1 | 0 | 1 | 0 16954 | public | part_tab1 | p3 | | 2 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 1 | 2023-05-15 20:36:29.490636+08 | 2000-01-01 08:00:00+08 | 2023-05-15 20:36:28.540115+08 | 2000-01-01 08:00:00+08 | 1 | 0 | 1 | 0 16953 | public | part_tab1 | p2 | | 4 | 1 | 1 | 0 | 1 | 1 | 1 | 1 | 0 | 1 | 2023-05-15 20:36:29.487914+08 | 2000-01-01 08:00:00+08 | 2023-05-15 20:36:28.540098+08 | 2000-01-01 08:00:00+08 | 1 | 0 | 1 | 0 16952 | public | part_tab1 | p1 | | 5 | 1 | 1 | 0 | 1 | 1 | 1 | 1 | 0 | 1 | 2023-05-15 20:36:29.48536+08 | 2000-01-01 08:00:00+08 | 2023-05-15 20:36:28.540071+08 | 2000-01-01 08:00:00+08 | 1 | 0 | 1 | 0 (7 rows) gaussdb=# SELECT * FROM gs_statio_all_partitions; partition_oid | schemaname | relname | partition_name | sub_partition_name | heap_blks_read | heap_blks_hit | idx_blks_read | idx_blks_hit | toast_blks_read | toast_blks_hit | tidx_blks_read | t idx_blks_hit ---------------+------------+--------------+----------------+--------------------+----------------+---------------+---------------+--------------+-----------------+----------------+----------------+-- ------------- 16964 | public | subpart_tab1 | p_201902 | p_201902_b | 4 | 8 | 2 | 21 | | | | 16963 | public | subpart_tab1 | p_201902 | p_201902_a | 4 | 8 | 2 | 21 | | | | 16961 | public | subpart_tab1 | p_201901 | p_201901_b | 4 | 8 | 2 | 21 | | | | 16960 | public | subpart_tab1 | p_201901 | p_201901_a | 4 | 8 | 2 | 21 | | | | 16954 | public | part_tab1 | p3 | | 4 | 8 | 2 | 15 | | | | 16953 | public | part_tab1 | p2 | | 4 | 8 | 2 | 15 | | | | 16952 | public | part_tab1 | p1 | | 4 | 8 | 2 | 15 | | | | (7 rows) gaussdb=# SELECT * FROM gs_stat_get_partition_stats(16952); partition_oid | seq_scan | seq_tup_read | idx_scan | idx_tup_fetch | n_tup_ins | n_tup_upd | n_tup_del | n_tup_hot_upd | n_live_tup | n_dead_tup | last_vacuum | last_autovacuum | last_analyze | last_autoanalyze | vacuum_count | autovacuum_count | analyze_count | autoanalyze_count | last_data_changed | heap_blks_read | heap_blks_hit | idx_blks_re ad | idx_blks_hit | tup_fetch | block_fetch ---------------+----------+--------------+----------+---------------+-----------+-----------+-----------+---------------+------------+------------+------------------------------+---------------------- --+-------------------------------+------------------------+--------------+------------------+---------------+-------------------+------------------------+----------------+---------------+------------ ---+--------------+-----------+------------- 16952 | 5 | 1 | 1 | 0 | 1 | 1 | 1 | 1 | 0 | 1 | 2023-05-15 20:36:29.48536+08 | 2000-01-01 08:00:00+0 8 | 2023-05-15 20:36:28.540071+08 | 2000-01-01 08:00:00+08 | 1 | 0 | 1 | 0 | 2000-01-01 08:00:00+08 | 4 | 8 | 2 | 21 | 0 | 12 (1 row) 事务内统计信息查询: gaussdb=# BEGIN; BEGIN gaussdb=# INSERT INTO part_tab1 VALUES(1, 1); INSERT 0 1 gaussdb=# INSERT INTO part_tab1 VALUES(1, 11); INSERT 0 1 gaussdb=# INSERT INTO part_tab1 VALUES(1, 21); INSERT 0 1 gaussdb=# UPDATE part_tab1 SET a = 2 WHERE b = 1; UPDATE 1 gaussdb=# UPDATE part_tab1 SET a = 3 WHERE b = 11; UPDATE 1 gaussdb=# UPDATE /*+ indexscan(part_tab1) */ part_tab1 SET a = 4 WHERE b = 21; UPDATE 1 gaussdb=# DELETE FROM part_tab1; DELETE 3 gaussdb=# INSERT INTO subpart_tab1 VALUES('201902', '1', '1', 1); INSERT 0 1 gaussdb=# INSERT INTO subpart_tab1 VALUES('201902', '2', '2', 1); INSERT 0 1 gaussdb=# INSERT INTO subpart_tab1 VALUES('201903', '1', '3', 1); INSERT 0 1 gaussdb=# INSERT INTO subpart_tab1 VALUES('201903', '2', '4', 1); INSERT 0 1 gaussdb=# UPDATE subpart_tab1 SET sales_amt = 2 WHERE user_no='1'; UPDATE 1 gaussdb=# UPDATE subpart_tab1 SET sales_amt = 3 WHERE user_no='2'; UPDATE 1 gaussdb=# UPDATE subpart_tab1 SET sales_amt = 4 WHERE user_no='3'; UPDATE 1 gaussdb=# UPDATE /*+ indexscan(subpart_tab1) */ subpart_tab1 SET sales_amt = 5 WHERE user_no='4'; UPDATE 1 gaussdb=# DELETE FROM subpart_tab1; DELETE 4 gaussdb=# SELECT * FROM gs_stat_xact_all_partitions; partition_oid | schemaname | relname | partition_name | sub_partition_name | seq_scan | seq_tup_read | idx_scan | idx_tup_fetch | n_tup_ins | n_tup_upd | n_tup_del | n_tup_hot_upd ---------------+------------+--------------+----------------+--------------------+----------+--------------+----------+---------------+-----------+-----------+-----------+--------------- 16964 | public | subpart_tab1 | p_201902 | p_201902_b | 4 | 4 | 1 | 2 | 1 | 1 | 1 | 1 16963 | public | subpart_tab1 | p_201902 | p_201902_a | 4 | 4 | 1 | 0 | 1 | 1 | 1 | 1 16961 | public | subpart_tab1 | p_201901 | p_201901_b | 4 | 4 | 1 | 0 | 1 | 1 | 1 | 1 16960 | public | subpart_tab1 | p_201901 | p_201901_a | 4 | 4 | 1 | 0 | 1 | 1 | 1 | 1 16954 | public | part_tab1 | p3 | | 1 | 1 | 1 | 2 | 1 | 1 | 1 | 1 16953 | public | part_tab1 | p2 | | 3 | 2 | 0 | 0 | 1 | 1 | 1 | 1 16952 | public | part_tab1 | p1 | | 4 | 2 | 0 | 0 | 1 | 1 | 1 | 1 (7 rows) gaussdb=# SELECT * FROM gs_stat_get_xact_partition_stats(16952); partition_oid | seq_scan | seq_tup_read | idx_scan | idx_tup_fetch | n_tup_ins | n_tup_upd | n_tup_del | n_tup_hot_upd | tup_fetch ---------------+----------+--------------+----------+---------------+-----------+-----------+-----------+---------------+----------- 16952 | 4 | 2 | 0 | 0 | 1 | 1 | 1 | 1 | 0 (1 row) gs_stat_get_partition_analyze_count(oid) 描述:用户在该分区上启动分析的次数。 返回值类型:bigint。 gs_stat_get_partition_autoanalyze_count(oid) 描述:autovacuum守护线程在该分区上启动分析的次数。 返回值类型:bigint。 gs_stat_get_partition_autovacuum_count(oid) 描述:autovacuum守护线程在该分区上启动清理的次数。 返回值类型:bigint。 gs_stat_get_partition_last_analyze_time(oid) 描述:用户在该分区上最后一次手动启动分析或者autovacuum线程启动分析的时间。 返回值类型:timestamptz。 gs_stat_get_partition_last_autoanalyze_time(oid) 描述:autovacuum守护线程在该分区上最后一次启动分析的时间。 返回值类型:timestamptz。 gs_stat_get_partition_last_autovacuum_time(oid) 描述:autovacuum守护线程在该分区上最后一次启动清理的时间。 返回值类型:timestamptz。 gs_stat_get_partition_last_data_changed_time(oid) 描述:对于在分区上的修改insert/update/delete/truncate,在该表上最后一次操作的时间。当前暂不支持。 返回值类型:timestamptz。 gs_stat_get_partition_last_vacuum_time(oid) 描述:用户在该分区上最后一次手动启动清理或者autovacuum线程启动清理的时间。 返回值类型:timestamptz。 gs_stat_get_partition_numscans(oid) 描述:分区顺序扫描读取的行数目。 返回值类型:bigint。 gs_stat_get_partition_tuples_returned(oid) 描述:分区顺序扫描读取的行数目。 返回值类型:bigint。 gs_stat_get_partition_tuples_fetched(oid) 描述:分区位图扫描抓取的行数目。 返回值类型:bigint。 gs_stat_get_partition_vacuum_count(oid) 描述:用户在该分区上启动清理的次数。 返回值类型:bigint。 gs_stat_get_xact_partition_tuples_fetched(oid) 描述:事务中扫描的tuple行数。 返回值类型:bigint。 gs_stat_get_xact_partition_numscans(oid) 描述:当前事务中分区执行的顺序扫描次数。 返回值类型:bigint。 gs_stat_get_xact_partition_tuples_returned(oid) 描述:当前事务中分区通过顺序扫描读取的行数。 返回值类型:bigint。 gs_stat_get_partition_blocks_fetched(oid) 描述:分区的磁盘块抓取请求的数量。 返回值类型:bigint。 gs_stat_get_partition_blocks_hit(oid) 描述:在缓冲区中找到的分区的磁盘块请求数目。 返回值类型:bigint。 pg_stat_get_partition_tuples_inserted(oid) 描述:插入相应表分区中行的数量。 返回值类型:bigint。 pg_stat_get_partition_tuples_updated(oid) 描述:在相应表分区中已更新行的数量。 返回值类型:bigint。 pg_stat_get_partition_tuples_deleted(oid) 描述:从相应表分区中删除行的数量。 返回值类型:bigint。 pg_stat_get_partition_tuples_changed(oid) 描述:该表分区上一次analyze或autoanalyze之后插入、更新、删除行的总数量。 返回值类型:bigint。 pg_stat_get_partition_live_tuples(oid) 描述:分区表活行数。 返回值类型:bigint。 pg_stat_get_partition_dead_tuples(oid) 描述:分区表死行数。在Ustore表中仅代表不活跃行指针数量。 返回值类型:bigint。 pg_stat_get_xact_partition_tuples_inserted(oid) 描述:表分区相关的活跃子事务中插入的tuple数。 返回值类型:bigint。 pg_stat_get_xact_partition_tuples_deleted(oid) 描述:表分区相关的活跃子事务中删除的tuple数。 返回值类型:bigint。 pg_stat_get_xact_partition_tuples_hot_updated(oid) 描述:表分区相关的活跃子事务中热更新的tuple数。 返回值类型:bigint。 pg_stat_get_xact_partition_tuples_updated(oid) 描述:表分区相关的活跃子事务中更新的tuple数。 返回值类型:bigint。 pg_stat_get_partition_tuples_hot_updated(oid) 描述:返回给定分区id的分区热更新元组数的统计。 参数:oid。 返回值类型:bigint。 gs_session_alt_status() 描述:查询当前用户所执行的计划外ALT会话的可恢复状态。这里不包括不支持的驱动接口调用所导致的会话状态变更。不可恢复的原因仅提供基本类别;如果是不支持的GUC参数、SQL或系统函数,请查询ALT支持的列表来确认应用程序调用的请求是否在支持范围内,详见《特性指南》的“计划外应用无损透明”章节中对GUC参数、SQL语法和系统函数的ALT支持策略列表描述。 返回值类型:setof record。 名称 类型 描述。 sessionid integer 会话ID。 sessionreplaystatus text ALT会话恢复的状态。 enable: 可恢复。 disable:不可恢复。 xactreplaystatus text ALT事务重放的状态。 enable: 可恢复。 disable:不可恢复。 reason text 不可恢复的原因简述。 示例: 1 2 3 4 5 6 gaussdb=# SELECT * FROM GS_SESSION_ALT_STATUS(); sessionid | sessionreplaystatus | xactreplaystatus | reason -----------------+---------------------+------------------+---------------------------------------------------------------------------------------- 140564166014720 | disable | disable | Session data types(valid after transaction is finished):unsupported set from current, + | | | Transaction non-replayable types:advisory lock, (1 row)
  • GS_RLSPOLICIES GS_RLSPOLICIES视图显示行级访问控制策略的信息。初始化用户和具有sysadmin属性的用户可以查看全部的策略信息,其他用户只能查看自己所拥有表上的策略信息。 表1 GS_RLSPOLICIES字段 名称 类型 描述 schemaname name 行级访问控制策略作用的表对象所属的模式名称。 tablename name 行级访问控制策略作用的表对象名称。 policyname name 行级访问控制策略名称。 policypermissive text 行级访问控制策略的表达式拼接方式,可选取值有: PERMISSIVE:宽容性策略,用OR表达式拼接。 RESTRICTIVE:限制性策略,用AND表达式拼接。 policyroles name[] 行级访问控制策略影响的用户列表,不指定表示影响所有的用户。 policycmd text 行级访问控制策略影响的SQL操作。 policyqual text 行级访问控制策略的表达式。 父主题: 用户和权限管理
  • 示例 -- 创建自定义函数。 gaussdb=# CREATE OR REPLACE FUNCTION int_add(int,int) RETURNS int AS $BODY$ declare begin return $1 + $2; end; $BODY$ language plpgsql; -- 创建聚合函数。 gaussdb=# CREATE AGGREGATE myavg(int) ( sfunc = int_add, stype = int, initcond = '0' ); --将int类型的聚合函数myavg删除。 gaussdb=# DROP AGGREGATE myavg(int); -- 删除自定义函数。 gaussdb=# DROP FUNCTION int_add(int,int);
  • 几何函数 area(object) 描述:计算图形的面积。 返回类型:double precision 示例: 1 2 3 4 5 gaussdb=# SELECT area(box '((0,0),(1,1))') AS RESULT; result -------- 1 (1 row) center(object) 描述:计算图形的中心。 返回类型:point 示例: 1 2 3 4 5 gaussdb=# SELECT center(box '((0,0),(1,2))') AS RESULT; result --------- (0.5,1) (1 row) diameter(circle) 描述:计算圆的直径。 返回类型:double precision 示例: 1 2 3 4 5 gaussdb=# SELECT diameter(circle '((0,0),2.0)') AS RESULT; result -------- 4 (1 row) height(box) 描述:矩形的竖直高度。 返回类型:double precision 示例: 1 2 3 4 5 gaussdb=# SELECT height(box '((0,0),(1,1))') AS RESULT; result -------- 1 (1 row) isclosed(path) 描述:图形是否为闭合路径。 返回类型:Boolean 示例: 1 2 3 4 5 gaussdb=# SELECT isclosed(path '((0,0),(1,1),(2,0))') AS RESULT; result -------- t (1 row) isopen(path) 描述:图形是否为开放路径。 返回类型:Boolean 示例: 1 2 3 4 5 gaussdb=# SELECT isopen(path '[(0,0),(1,1),(2,0)]') AS RESULT; result -------- t (1 row) length(object) 描述:计算图形的长度。 返回类型:double precision 示例: 1 2 3 4 5 gaussdb=# SELECT length(path '((-1,0),(1,0))') AS RESULT; result -------- 4 (1 row) npoints(path) 描述:计算路径的顶点数。 返回类型:int 示例: 1 2 3 4 5 gaussdb=# SELECT npoints(path '[(0,0),(1,1),(2,0)]') AS RESULT; result -------- 3 (1 row) npoints(polygon) 描述:计算多边形的顶点数。 返回类型:int 示例: 1 2 3 4 5 gaussdb=# SELECT npoints(polygon '((1,1),(0,0))') AS RESULT; result -------- 2 (1 row) pclose(path) 描述:把路径转换为闭合路径。 返回类型:path 示例: 1 2 3 4 5 gaussdb=# SELECT pclose(path '[(0,0),(1,1),(2,0)]') AS RESULT; result --------------------- ((0,0),(1,1),(2,0)) (1 row) popen(path) 描述:把路径转换为开放路径。 返回类型:path 示例: 1 2 3 4 5 gaussdb=# SELECT popen(path '((0,0),(1,1),(2,0))') AS RESULT; result --------------------- [(0,0),(1,1),(2,0)] (1 row) radius(circle) 描述:计算圆的半径。 返回类型:double precision 示例: 1 2 3 4 5 gaussdb=# SELECT radius(circle '((0,0),2.0)') AS RESULT; result -------- 2 (1 row) width(box) 描述:计算矩形的水平尺寸。 返回类型:double precision 示例: 1 2 3 4 5 gaussdb=# SELECT width(box '((0,0),(1,1))') AS RESULT; result -------- 1 (1 row)
  • ADM_PART_INDEXES ADM_PART_INDEXES视图显示数据库中所有分区表索引的信息(不包含分区表全局索引)。默认只有系统管理员权限才可以访问,普通用户需要授权才可以访问。该视图同时存在于PG_CATALOG和SYS Schema下。 表1 ADM_PART_INDEXES字段 名称 类型 描述 def_tablespace_name name 分区表索引的表空间名称。 index_owner character varying(64) 分区表索引的所有者名称。 index_name character varying(64) 分区表索引的名称。 partition_count bigint 分区表索引的索引分区的个数。 partitioning_key_count integer 分区表的分区键个数。 partitioning_type text 分区表的分区策略。 说明: 当前分区表策略支持范围见CREATE TABLE PARTITION。 schema character varying(64) 分区表索引所属模式的名称。 table_name character varying(64) 分区表索引所属的分区表名称。 subpartitioning_type text 二级分区表的分区策略。如果分区表是一级分区表,则显示NONE。 说明: 当前二级分区表策略支持范围见CREATE TABLE SUBPARTITION。 def_subpartition_count integer 默认创建二级分区的个数。二级分区表为1,一级分区表为0。 subpartitioning_key_count integer 分区表二级分区键的个数。 父主题: 分区表
  • 示例 声明用于查询的游标示例: EXEC SQL DECLARE C CURSOR FOR SELECT * FROM My_Table; EXEC SQL DECLARE C CURSOR FOR SELECT Item1 FROM T; EXEC SQL DECLARE cur1 CURSOR FOR SELECT version(); 声明用于预备语句的游标示例: EXEC SQL PREPARE stmt1 AS SELECT version(); EXEC SQL DECLARE cur1 CURSOR FOR stmt1;
  • ADM_TAB_HISTOG RAM S ADM_TAB_HISTOGRAMS系统视图显示数据库所有表和视图的直方图信息。默认只有系统管理员权限才可以访问,普通用户需要授权才可以访问。该视图同时存在于PG_CATALOG和SYS Schema下。 表1 ADM_TAB_HISTOGRAMS字段 名称 类型 描述 owner character varying(128) 表的所有者。 table_name character varying(128) 表名。 column_name character varying(4000) 列名。 endpoint_number numeric 直方图的桶号。 endpoint_value numeric 暂不支持,值为NULL。 endpoint_actual_value character varying(4000) 桶端点的实际值。 endpoint_actual_value_raw raw 暂不支持,值为NULL。 endpoint_repeat_count numeric 暂不支持,值为NULL。 scope character varying(7) 暂不支持,值为SHARED。 父主题: 其他系统视图
  • GS_SESSION_MEMORY_CONTEXT GS_SESSION_MEMORY_CONTEXT视图显示所有会话的内存使用情况,以MemoryContext节点来统计。当GUC参数enable_memory_limit或enable_thread_pool的值为off时,本视图不可用。 其中内存上下文“TempSmallContextGroup”,记录当前线程中所有内存上下文字段“totalsize”小于8192字节的信息汇总,并且内存上下文统计计数记录到“usedsize”字段中。所以在视图中,“TempSmallContextGroup”内存上下文中的“totalsize”和“freesize”是该线程中所有内存上下文“totalsize”小于8192字节的汇总总和,usedsize字段表示统计的内存上下文个数。多租场景下,non-PDB访问该视图时返回全部信息,PDB访问该视图时仅返回该PDB相关信息。 表1 GS_SESSION_MEMORY_CONTEXT字段 名称 类型 描述 sessid text 会话启动时间+会话标识(字符串信息为timestamp.sessionid)。 threadid bigint 会话绑定的线程标识,如果未绑定线程,该值为-1。 contextname text 内存上下文名称。 level smallint 当前上下文在整体内存上下文中的层级。 parent text 父内存上下文名称。 totalsize bigint 当前内存上下文的内存总数,单位Byte。 freesize bigint 当前内存上下文中已释放的内存总数,单位Byte。 usedsize bigint 当前内存上下文中已使用的内存总数,单位Byte;“TempSmallContextGroup”内存上下文中该字段含义为统计计数。 该视图为运维视图,用于定位内存问题时使用,不要并发查询该视图,并发查询该视图会随着并发数的增多导致新连接接入等待时间增加,长时间无法接入。 父主题: 其他系统视图
  • 原型 PGresult* PQexecParams(PGconn* conn, const char* command, int nParams, const Oid* paramTypes, const char* const* paramValues, const int* paramLengths, const int* paramFormats, int resultFormat);
  • PG_STATIO_ALL_TABLES PG_STATIO_ALL_TABLES视图可用来查询当前数据库中每个表(包括TOAST表)的I/O统计信息。 表1 PG_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表索引命中缓存数(如果存在)。 父主题: 其他系统视图
  • 示例 --设置时区为意大利。 gaussdb=# SET timezone TO 'Europe/Rome'; --查看当前时区。 gaussdb=# SHOW timezone; TimeZone ------------- Europe/Rome (1 row) --将时区设置为缺省值。 gaussdb=# RESET timezone; --查看当前时区。 gaussdb=# SHOW timezone; TimeZone ---------- PRC (1 row) --如上SQL等效于如下两条SQL,将时区设置为缺省值。 gaussdb=# SET timezone TO DEFAULT; gaussdb=# ALTER SESSION SET timezone to DEFAULT;
  • MY_TAB_STATS_HISTORY MY_TAB_STATS_HISTORY视图提供当前用户所拥有的表的表统计信息历史。所有用户都可以访问该视图。该视图同时存在于PG_CATALOG和SYS Schema下。 表1 MY_TAB_STATS_HISTORY字段 名称 类型 描述 table_name character varying(128) 表名。 partition_name character varying(128) 暂不支持,值为NULL。 subpartition_name character varying(128) 暂不支持,值为NULL。 stats_update_time timestamp(6) with time zone 统计信息更新的时间,数据库重启后,数据会丢失。 父主题: 其他系统视图
  • PG_COMM_STATUS PG_COMM_STATUS视图展示单个DN的通信库状态。 表1 PG_COMM_STATUS字段 名称 类型 描述 node_name text 节点名称。 rxpck_rate integer 节点通信库接收速率,单位Byte/s。 txpck_rate integer 节点通信库发送速率,单位Byte/s。 rxkbyte_rate bigint 节点通信库接收速率,单位KByte/s。 txkbyte_rate bigint 节点通信库发送速率,单位KByte/s。 buffer bigint cmailbox的buffer大小。 memkbyte_libcomm bigint libcomm线程通信内存大小,单位Byte。 memkbyte_libpq bigint libpq线程通信内存大小,单位Byte。 used_pm integer postmaster线程实时使用率。 used_sflow integer gs_sender_flow_controller线程实时使用率。 used_rflow integer gs_receiver_flow_controller线程实时使用率。 used_rloop integer 多个gs_receivers_loop线程中高的实时使用率。 stream integer 当前使用的逻辑连接总数。 父主题: 通信
  • 位串类型 位串就是一串1和0的字符串。它们可以用于存储位掩码。 GaussDB 支持两种位串类型:bit(n)和bit varying(n),这里的n是一个正整数,n最大取值为83886080,相当于10M的容量。 bit类型的数据必须准确匹配长度n,如果存储短或者长的数据都会报错。bit varying类型的数据是最长为n的变长类型,长度超过n时会被拒绝。一个没有长度的bit等效于bit(1),没有长度的bit varying表示没有长度限制。 如果用户明确地把一个位串值转换成bit(n),则此位串右边的内容将被截断或者在右边补齐零,直到刚好n位,而不会抛出任何错误。 如果用户明确地把一个位串数值转换成bit varying(n),如果它超过了n位,则它的右边将被截断。 使用ADMS平台8.1.3-200驱动版本及之前版本时,写入bit类型需要用::bit varying进行类型转换,否则可能出现异常报错。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 --创建表。 gaussdb=# CREATE TABLE bit_type_t1 ( BT_COL1 INTEGER, BT_COL2 BIT(3), BT_COL3 BIT VARYING(5) ) ; --插入数据。 gaussdb=# INSERT INTO bit_type_t1 VALUES(1, B'101', B'00'); --插入数据的长度不符合类型的标准会报错。 gaussdb=# INSERT INTO bit_type_t1 VALUES(2, B'10', B'101'); ERROR: bit string length 2 does not match type bit(3) CONTEXT: referenced column: bt_col2 --将不符合类型长度的数据进行转换。 gaussdb=# INSERT INTO bit_type_t1 VALUES(2, B'10'::bit(3), B'101'); --查看数据。 gaussdb=# SELECT * FROM bit_type_t1; bt_col1 | bt_col2 | bt_col3 ---------+---------+--------- 1 | 101 | 00 2 | 100 | 101 (2 rows) --删除表。 gaussdb=# DROP TABLE bit_type_t1; 父主题: 数据类型
  • 语法格式 设置事务的隔离级别、读写模式。 { SET [ LOCAL | SESSION | GLOBAL ] TRANSACTION|SET SESSION CHARACTERIS TICS AS TRANSACTION } { ISOLATION LEVEL { READ COMMITTED | READ UNCOMMITTED | SERIALIZABLE | REPEATABLE READ } | { READ WRITE | READ ONLY } };
  • 参数说明 LOCAL 声明该命令只在当前事务中有效。 SESSION 声明这个命令只对当前会话起作用。 SET SESSION TRANSACTION语句需要在sql_compatibility = 'B'场景下,设置GUC参数b_format_behavior_compat_options为set_session_transaction后生效,作用等同于SET SESSION CHARACTERISTI CS AS TRANSACTION语句。 GLOBAL 声明这个命令对当前数据库的全局会话生效。 作用范围:在sql_compatibility = 'B'场景下生效。对后续连接的会话生效。 SESSION CHARACTERISTICS 声明这个命令只对当前会话起作用。 ISOLATION LEVEL 指定事务隔离级别,该参数决定当一个事务中存在其他并发运行事务时能够看到什么数据。 在事务中第一个数据修改语句(SELECT、INSERT、DELETE、UPDATE、FETCH、COPY)执行之后,当前事务的隔离级别就不能再次设置。 事务块内SET SESSION CHARACTERISTICS AS TRANSACTION ISOLATION LEVEL对当前事务不生效,需要COMMIT之后才生效。 取值范围: READ COMMITTED:读已提交隔离级别,只能读到已经提交的数据,而不会读到未提交的数据。这是缺省值。 READ UNCOMMITTED:读未提交隔离级别,指定后的行为和READ COMMITTED行为一致。 REPEATABLE READ:可重复读隔离级别,仅仅能看到事务开始之前提交的数据,不能看到未提交的数据,以及在事务执行期间由其它并发事务提交的修改。 SERIALIZABLE:GaussDB目前功能上不支持此隔离级别,等价于REPEATABLE READ。 READ WRITE | READ ONLY 指定事务访问模式(读/写或者只读)。
  • 示例 --创建并切换至测试数据库。 gaussdb=# CREATE DATABASE my_compatible_db DBCOMPATIBILITY 'B'; gaussdb=# \c my_compatible_db --开启一个事务,设置事务的隔离级别为READ COMMITTED,访问模式为READ ONLY。 my_compatible_db=# START TRANSACTION; my_compatible_db=# SET LOCAL TRANSACTION ISOLATION LEVEL READ COMMITTED READ ONLY; my_compatible_db=# COMMIT; --设置当前会话的事务隔离级别、读写模式。 --在sql_compatibility = 'B'场景下,b_format_behavior_compat_options设置为set_session_transaction。 my_compatible_db=# SET b_format_behavior_compat_options TO set_session_transaction; my_compatible_db=# SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED READ ONLY; --给sql_compatibility = 'B'的数据库设置全局会话的事务隔离级别、读写模式(当前只能在sql_compatibility = 'B'场景下)。 gaussdb=# SET GLOBAL TRANSACTION ISOLATION LEVEL READ COMMITTED READ ONLY; --切换回初始数据库,并删除测试数据库。请用真实的数据库名替换postgres。 my_compatible_db=# \c postgres gaussdb=# DROP DATABASE my_compatible_db;
  • GLOBAL_CONFIG_SETTINGS GLOBAL_CONFIG_SETTINGS显示各节点数据库运行时参数的相关信息,如表1所示。 表1 GLOBAL_CONFIG_SETTINGS的字段 名称 类型 描述 node_name text 节点名称。 name text 参数名称。 setting text 参数当前值。 unit text 参数的隐式结构。 category text 参数的逻辑组。 short_desc text 参数的简单描述。 extra_desc text 参数的详细描述。 context text 设置参数值的上下文,包括internal、postmaster、sighup、backend、superuser和user。 vartype text 参数类型,包括bool、enum、integer、real和string。 source text 参数的赋值方式。 min_val text 参数最小值。如果参数类型不是数值型,那么该字段值为null。 max_val text 参数最大值。如果参数类型不是数值型,那么该字段值为null。 enumvals text[] enum类型参数合法值。如果参数类型不是enum型,那么该字段值为null。 boot_val text 数据库启动时参数默认值。 reset_val text 数据库重置时参数默认值。 sourcefile text 设置参数值的配置文件。如果参数不是通过配置文件赋值,那么该字段值为null。 sourceline integer 设置参数值的配置文件的行号。如果参数不是通过配置文件赋值,那么该字段值为null。 父主题: Configuration
  • MY_TAB_STATISTICS MY_TAB_STATISTICS视图显示数据库中有关当前用户拥有的表的统计信息。所有用户均可访问该视图,该视图同时存在于PG_CATALOG和SYS Schema下。 表1 MY_TAB_STATISTICS字段 名称 类型 描述 table_name character varying(128) 表名。 partition_name character varying(128) 暂不支持,值为NULL。 partition_position numeric 暂不支持,值为NULL。 subpartition_name character varying(128) 暂不支持,值为NULL。 subpartition_position numeric 暂不支持,值为NULL。 object_type character varying(12) 对象类型: TABLE PARTITION SUBPARTITION num_rows numeric 对象中的行数。 blocks numeric 暂不支持,值为NULL。 empty_blocks numeric 暂不支持,值为NULL。 avg_space numeric 暂不支持,值为NULL。 chain_cnt numeric 暂不支持,值为NULL。 avg_row_len integer 平均行长,包括行开销。 avg_space_freelist_blocks numeric 暂不支持,值为NULL。 num_freelist_blocks numeric 暂不支持,值为NULL。 avg_cached_blocks numeric 暂不支持,值为NULL。 avg_cache_hit_ratio numeric 暂不支持,值为NULL。 im_imcu_count numeric 暂不支持,值为NULL。 im_block_count numeric 暂不支持,值为NULL。 im_stat_update_time timestamp(6) without time zone 暂不支持,值为NULL。 scan_rate numeric 暂不支持,值为NULL。 sample_size numeric 分析表格时使用的样本量。 last_analyzed timestamp with time zone 最近分析表的日期。数据库重启后,数据会丢失。 global_stats character varying(3) 暂不支持,值为NULL。 user_stats character varying(3) 暂不支持,值为NULL。 stattype_locked character varying(5) 暂不支持,值为NULL。 stale_stats character varying(7) 暂不支持,值为NULL。 notes character varying(25) 暂不支持,值为NULL。 scope character varying(7) 暂不支持,默认值SHARED。 父主题: 其他系统视图
  • ODBC接口参考 ODBC接口是一套提供给用户的API函数,本节将对部分常用接口做具体描述,若涉及其他接口可参考msdn(网址:https://msdn.microsoft.com/en-us/library/windows/desktop/ms714177(v=vs.85).aspx)中ODBC Programmer's Reference项的相关内容。 SQLAllocEnv SQLAllocConnect SQLAllocHandle SQLAllocStmt SQLBindCol SQLBindParameter SQLColAttribute SQLConnect SQLDisconnect SQLExecDirect SQLExecute SQLFetch SQLFreeStmt SQLFreeConnect SQLFreeHandle SQLFreeEnv SQLPrepare SQLGetData SQLGetDiagRec SQLSetConnectAttr SQLSetEnvAttr SQLSetStmtAttr 父主题: 基于ODBC开发
  • 返回值 ConnStatusType:连接状态的枚举,包括: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 CONNECTION_STARTED 等待进行连接。 CONNECTION_MADE 连接成功;等待发送。 CONNECTION_AWAITING_RESPONSE 等待来自服务器的响应。 CONNECTION_AUTH_OK 已收到认证;等待后端启动结束。 CONNECTION_SSL_STARTUP 协商SSL加密。 CONNECTION_SETENV 协商环境驱动的参数设置。 CONNECTION_OK 连接正常。 CONNECTION_BAD 连接故障。
  • 注意事项 状态可以是多个值之一。但是,在异步连接过程之外只能看到其中两个:CONNECTION_OK和CONNECTION_BAD。与数据库的良好连接状态为CONNECTION_OK,与数据库连接失败状态为CONNECTION_BAD。通常,“正常”状态将一直保持到PQfinish,但通信失败可能会导致状态过早变为CONNECTION_BAD。在这种情况下,应用程序可以尝试通过调用进行恢复PQreset。
  • STATEMENT_RESPONSETIME_PERCENTILE 获取数据库SQL响应时间P80,P95分布信息,如表1所示。 表1 STATEMENT_RESPONSETIME_PERCENTILE的字段 名称 类型 描述 p80 bigint 数据库80%的SQL的响应时间(单位:微秒)。 p95 bigint 数据库95%的SQL的响应时间(单位:微秒)。 dbid oid 当前数据库的OID,如果在PDB中查询为当前PDB的dbid,否则dbid为0表示查询结果为当前节点的SQL响应时间P80,P95分布信息。 示例: -- 在CDB中可以查询当前节点的SQL响应时间分布,此时对应dbid为0。 gaussdb=# select * from dbe_perf.STATEMENT_RESPONSETIME_PERCENTILE; p80 | p95 | dbid ------+------+------ 2803 | 6518 | 0 (1 row) -- 在PDB中查询当前PDB的SQL响应时间分布,此时对应dbid为当前PDB的dbid。 gaussdb=# \c pdb1 pdb1=# select * from dbe_perf.STATEMENT_RESPONSETIME_PERCENTILE; p80 | p95 | dbid ------+------+------------ 6211 | 7348 | 1255163054 (1 row) 父主题: Query
  • javax.sql.ConnectionPoolDataSource javax.sql.ConnectionPoolDataSource是数据源连接池接口。 表1 对javax.sql.ConnectionPoolDataSource的支持情况 方法名 返回值类型 支持JDBC4 支持计划外ALT getPooledConnection() PooledConnection Yes Yes getPooledConnection(String user,String password) PooledConnection Yes Yes 父主题: JDBC接口参考
  • PG_SYNONYM PG_SYNONYM系统表存储同义词对象名与其他数据库对象名间的映射信息。 表1 PG_SYNONYM字段 名称 类型 描述 oid oid 行标识符(隐含字段,必须明确选择)。 synname name 同义词名称。 synnamespace oid 包含该同义词名称空间的OID。PUBLIC同义词名称空间的OID为0。 synowner oid 同义词的所有者,通常是创建它的用户OID。PUBLIC同义词的所有者为0。 synobjschema name 关联对象指定的模式名。 synobjname name 关联对象名。 syndblinkname name 关联DATABASE LINK对象名。 父主题: 其他系统表
  • 参数说明 table_name 分区表名。 取值范围:已存在的分区表名。 partition_name 分区名。 取值范围:已存在的分区名。 tablespacename 指定分区要移动到哪一个表空间。 取值范围:已存在的表空间名。 partition_value 分区键值。 通过PARTITION FOR ( partition_value [, ...] )子句指定的这一组值,可以唯一确定一个分区。 取值范围:需要进行操作的分区的分区键的取值范围。 UNUSABLE LOCAL INDEXES 设置该分区上的所有索引不可用。 REBUILD UNUSABLE LOCAL INDEXES 重建该分区上的所有索引。 { ENABLE | DISABLE } ROW MOVEMET 行迁移开关。 如果进行UPDATE操作时,更新了元组在分区键上的值,造成了该元组所在分区发生变化,就会根据该开关给出报错信息,或者进行元组在分区间的转移。 取值范围: ENABLE:打开行迁移开关。 DISABLE:关闭行迁移开关。 默认是打开状态。 ordinary_table_name 进行迁移的普通表的名称。 取值范围:已存在的普通表名。 { WITH | WITHOUT } VALIDATION 在进行数据迁移时,是否检查普通表中的数据满足指定分区的分区键范围。 取值范围: WITH:对于普通表中的数据要检查是否满足分区的分区键范围,如果有数据不满足,则报错。 WITHOUT:对于普通表中的数据不检查是否满足分区的分区键范围。 默认是WITH状态。 由于检查比较耗时,特别是当数据量很大的情况下。所以在保证当前普通表中的数据满足分区的分区键范围时,可以加上WITHOUT来指明不进行检查。 VERBOSE 在VALIDATION是WITH状态时,如果检查出普通表有不满足要交换分区的分区键范围的数据,那么把这些数据插入到正确的分区,如果路由不到任何分区,再报错。 只有在VALIDATION是WITH状态时,才可以指定VERBOSE。 partition_new_name 分区的新名称。 取值范围:字符串,要符合标识符命名规范。 UPDATE GLOBAL INDEX 如果使用该参数,则会更新分区表上的所有全局索引,以确保使用全局索引可以查询出正确的数据。如果不使用该参数,则分区表上的所有全局索引将会失效。 SET PARTITIONING { AUTOMATIC | MANUAL } 开启或关闭列表分区的自动扩展功能。使用AUTOMATIC关键字时为开启自动扩展功能,使用MANUAL关键字时为关闭自动扩展功能。 SET INTERVAL ( [ interval_expr ] ) 用于实现间隔分区与范围分区之间的互转,间隔分区相当于开启了自动扩展功能后的范围分区。interval_expr缺省时,将间隔分区转为范围分区;否则将范围分区转为间隔分区。其中,interval_expr为自动创建分区的间隔,需要符合partition_key的字段类型,目前只支持数值类型和日期/时间类型,例如:1、'1 day'、'1 month'。
  • 语法格式 修改分区表分区包括修改表分区主语法、修改表分区名称的语法、重置分区ID和开启/关闭分区自动扩展功能的语法。 修改表分区主语法。 ALTER TABLE [ IF EXISTS ] { table_name [*] | ONLY table_name | ONLY ( table_name )} action [, ... ]; 其中action统指如下分区维护子语法。当存在多个分区维护子句时,保证了分区的连续性,无论这些子句的排序如何,GaussDB总会先执行DROP PARTITION再执行ADD PARTITION操作,最后顺序执行其它分区维护操作。 move_clause | exchange_clause | row_clause | merge_clause | modify_clause | split_clause | add_clause | drop_clause | truncate_clause | ilm_clause | set_partitioning_clause move_clause子语法用于移动分区到新的表空间。 MOVE PARTITION { partion_name | FOR ( partition_value [, ...] ) } TABLESPACE tablespacename exchange_clause子语法用于把普通表的数据迁移到指定的分区。 EXCHANGE PARTITION { ( partition_name ) | partition_name | FOR ( partition_value [, ... ] ) } WITH TABLE {[ ONLY ] ordinary_table_name | ordinary_table_name * | ONLY ( ordinary_table_name )} [ { WITH | WITHOUT } VALIDATION ] [ VERBOSE ] [ UPDATE GLOBAL INDEX ] 进行交换的普通表和分区必须满足如下条件: 普通表和分区的列数相同,对应列的信息严格一致,包括:列名、列的数据类型、列约束、列的Collation信息、列的存储参数、列的压缩信息等。 普通表和分区的表压缩信息严格一致。 普通表索引和分区Local索引个数相同,且对应索引的信息严格一致。 普通表和分区的表约束个数相同,且对应表约束的信息严格一致。 普通表不可以是临时表,分区表只能是范围分区表,列表分区表,哈希分区表或间隔分区表。 在内置安全策略开关开启的情况下,普通表和分区表上不可以有动态数据脱敏,行访问控制约束。 完成交换后,普通表和分区的数据被置换,同时普通表和分区的表空间信息被置换。此时,普通表和分区的统计信息变得不可靠,需要对普通表和分区重新执行analyze。 由于非分区键不能建立本地唯一索引,只能建立全局唯一索引,所以如果普通表含有唯一索引时,可能会导致无法交换数据。 如果需要进行数据交换操作,可以通过创建中间表的方式。先将分区数据插入到中间表,truncate分区,普通表数据插入分区表,drop普通表,重命名中间表的方式完成数据交换操作。 对于普通表和分区表都是Ustore的场景,如果普通表的Ubtree索引类型(RCR或者PCR,默认为RCR)和分区表本地的Ubtree索引类型(RCR或PCR,默认为RCR)不一致,会导致无法完成数据交换的操作。 如果在普通表/分区表上进行了DROP COLUMN操作,被删除的列依然物理存在,则需要保证普通表和分区的被删除列严格对齐才能交换成功。 EXCHANGE PARTITION { ( partition_name ) | partition_name | FOR ( partition_value [, ... ] ) }操作在B模式数据库(即sql_compatibility = 'B')下可用,其他模式下仅EXCHANGE PARTITION { ( partition_name ) | FOR ( partition_value [, ... ] ) }可用。 在B模式数据库(即sql_compatibility = 'B')下,当partition_name为一级分区名时,进行交换的是一级分区和普通表;当partition_name为二级分区时, 进行交换的是二级分区和普通表。 不支持在二级分区表中交换一级分区和普通表。 row_clause子语法用于设置分区表的行迁移开关。 { ENABLE | DISABLE } ROW MOVEMENT merge_clause子语法用于把多个分区合并成一个分区。一个命令中合并的源分区上限为300。 MERGE PARTITIONS { partition_name } [, ...] INTO PARTITION partition_name [ ILM ADD POLICY ROW STORE COMPRESS ADVANCED ROW AFTER n { day | month | year } OF NO MODIFICATION [ ON ( EXPR )] ] [ TABLESPACE tablespacename ] [ UPDATE GLOBAL INDEX ] 对于范围分区/间隔分区,MERGE分区要求源分区的范围连续递增,且MERGE后的分区名可以与最后一个源分区名相同;对于列表分区,则源分区无顺序要求,且MERGE后的分区名可以与任一源分区名相同。如果MERGE后的分区名与源分区名相同,视为同一个分区。 未打开guc参数enable_ilm的情况下,如果使用merge_clause子语法把多个带有ilm policy的分区合并成一个分区,新分区不继承ilm policy。 USTORE存储引擎表不支持在事务块/存储过程中执行ALTER TABLE MERGE PARTITIONS的操作。 modify_clause子语法用于设置分区索引是否可用。 MODIFY PARTITION partition_name { UNUSABLE LOCAL INDEXES | REBUILD UNUSABLE LOCAL INDEXES | COLVIEW [ PRIORITY { HIGH | LOW | NONE } ] | NOCOLVIEW [ PRIORITY { HIGH | LOW | NONE } ]} split_clause子语法用于把一个分区切割成多个分区。 SPLIT PARTITION { partition_name | FOR ( partition_value [, ...] ) } { split_point_clause | no_split_point_clause } [ UPDATE GLOBAL INDEX ] SPLIT后的分区名可以与源分区名相同,将视为不同的分区。 未打开guc参数enable_ilm的情况下,如果使用split_clause子语法把一个带有ilm policy的分区分割成多个分区,新分区不继承ilm policy。 范围分区表和间隔分区表指定切割点split_point_clause的语法为: AT ( partition_value ) INTO ( PARTITION partition_name [ ILM ADD POLICY ROW STORE COMPRESS ADVANCED ROW AFTER n { day | month | year } OF NO MODIFICATION [ ON ( EXPR )] ] [ TABLESPACE tablespacename ] , PARTITION partition_name [ ILM ADD POLICY ROW STORE COMPRESS ADVANCED ROW AFTER n { day | month | year } OF NO MODIFICATION [ ON ( EXPR )] ] [ TABLESPACE tablespacename ] ) 切割点的大小要位于正在被切割的分区的分区键范围内,指定切割点的方式只能把一个分区切割成两个新分区。 范围分区表和间隔分区表不指定切割点no_split_point_clause的语法为: INTO { ( partition_less_than_item [, ...] ) | ( partition_start_end_item [, ...] ) } 不指定切割点的方式,partition_less_than_item指定的第一个新分区的分区键要大于正在被切割的分区的前一个分区(如果存在)的分区键,partition_less_than_item指定的最后一个分区的分区键要等于正在被切割的分区的分区键。 不指定切割点的方式,partition_start_end_item指定的第一个新分区的起始点(如果存在)必须等于正在被切割的分区的前一个分区(如果存在)的分区键,partition_start_end_item指定的最后一个分区的终止点(如果存在)必须等于正在被切割的分区的分区键。 partition_less_than_item支持的分区键个数最多为16,而partition_start_end_item仅支持1个分区键,其支持的数据类型请参见•PARTITION BY RANGE [COLUMNS] (partition_key)。 在同一语句中partition_less_than_item和partition_start_end_item两者不可同时使用;不同split语句之间没有限制。 分区项partition_less_than_item的语法如下,其中最后一个分区可以不写分区范围定义,即VALUES LESS THAN (partition_value)部分,默认继承源分区范围定义的上界值。 PARTITION partition_name VALUES LESS THAN {( { partition_value | MAXVALUE } [, ...] ) | MAXVALUE } [ ILM ADD POLICY ROW STORE COMPRESS ADVANCED ROW AFTER n { day | month | year } OF NO MODIFICATION [ ON ( EXPR )] ] [ TABLESPACE tablespacename ] RANGE分区时支持MAXVALUE关键字不带括号,只能支持B模式使用,不支持在二级分区的子分区中使用,不支持在分区字段为多列的场景使用。 分区项partition_start_end_item的语法如下,其约束请参见START END语法描述。 PARTITION partition_name { {START(partition_value) END (partition_value) EVERY (interval_value)} | {START(partition_value) END ({partition_value | MAXVALUE})} | {START(partition_value)} | {END({partition_value | MAXVALUE})} } [ ILM ADD POLICY ROW STORE COMPRESS ADVANCED ROW AFTER n { day | month | year } OF NO MODIFICATION [ ON ( EXPR )] ] [TABLESPACE tablespace_name] 列表分区表指定切割点split_point_clause的语法如下。 VALUES ( partition_value_list ) INTO ( PARTITION partition_name [ ILM ADD POLICY ROW STORE COMPRESS ADVANCED ROW AFTER n { day | month | year } OF NO MODIFICATION [ ON ( EXPR )]] [ TABLESPACE tablespacename ] , PARTITION partition_name [ ILM ADD POLICY ROW STORE COMPRESS ADVANCED ROW AFTER n { day | month | year } OF NO MODIFICATION [ ON ( EXPR )]] [ TABLESPACE tablespacename ] ) 切割点必须是源分区的一个非空真子集,指定切割点的方式只能把一个分区切割成两个新分区。 列表分区表不指定切割点no_split_point_clause的语法如下,其中最后一个分区不能写分区范围定义,即VALUES (partition_value_list)部分,其范围等于源分区去掉其他子分区后的剩余集合。 INTO ( PARTITION partition_name VALUES (partition_value_list) [ ILM ADD POLICY ROW STORE COMPRESS ADVANCED ROW AFTER n { day | month | year } OF NO MODIFICATION [ ON ( EXPR )]] [ TABLESPACE tablespacename ][, ...] ) COMPRESS ADVANCED ROW: 最后一个新分区不能写分区范围定义,其范围等于源分区去掉其他子分区后的剩余集合。 不指定切割点的方式,每一个新分区都必须是源分区的一个非空真子集,且互不交叉。 add_clause子语法用于为指定的分区表添加一个或多个分区。 ADD {{partition_less_than_item | partition_start_end_item| partition_list_item } | PARTITION({partition_less_than_item | partition_start_end_item | partition_list_item})} PARTITION({partition_less_than_item | partition_start_end_item | partition_list_item})语法只支持B模式下使用。 不支持ALTER TABLE table_name ADD PARTITION (partition_definition1, partition_definition2,…);语法添加多分区。仅支持原有添加多分区语法:ALTER TABLE table_name ADD PARTITION (partition_definition1), ADD PARTITION (partition_definition2), …。 分区项partition_list_item的语法为: PARTITION partition_name VALUES [IN] (list_values_clause) [ ILM ADD POLICY ROW STORE COMPRESS ADVANCED ROW AFTER n { day | month | year } OF NO MODIFICATION [ ON ( EXPR )] ] [ TABLESPACE tablespacename ] partition_list_item支持最多16个分区键,其支持的数据类型请参见•PARTITION BY LIST [COLUMNS] (partition_key)。 间隔/哈希分区表不支持添加分区。 IN需要在B模式下使用,不支持在二级分区的子分区中使用。 drop_clause子语法用于删除分区表中的指定分区。 DROP PARTITION { partition_name | FOR ( partition_value [, ...] ) } [ UPDATE GLOBAL INDEX ] 哈希分区表不支持删除分区。 当分区表只有一个分区时,不能删除该分区。 truncate_clause子语法用于清空分区表中的指定分区。 TRUNCATE PARTITION { partition_name | FOR ( partition_value [, ...] ) } [ UPDATE GLOBAL INDEX ] ilm_clause子语法用于为分区添加ILM策略,为数据生命周期管理-OLTP表压缩特性支持语法。 MODIFY PARTITION partition_name ILM ADD POLICY ROW STORE COMPRESS ADVANCED ROW AFTER n { day | month | year } OF NO MODIFICATION [ ON ( EXPR ) ] set_partitioning_clause子语法用于开启或关闭列表/范围分区自动扩展功能。 SET PARTITIONING { AUTOMATIC | MANUAL } | SET INTERVAL ( [ interval_expr ] ) 修改表分区名称的语法。 ALTER TABLE [ IF EXISTS ] { table_name [*] | ONLY table_name | ONLY ( table_name )} RENAME PARTITION { partion_name | FOR ( partition_value [, ...] ) } TO partition_new_name; 重置分区ID的语法。 ALTER TABLE [ IF EXISTS ] { table_name [*] | ONLY table_name | ONLY ( table_name )} RESET PARTITION;
共100000条