代码拉取完成,页面将自动刷新
根据一个索引对表进行聚簇排序。
CLUSTER指定openGauss通过索引名指定的索引聚簇由表名指定的表。表名上必须已经定义该索引。
当对一个表聚集后,该表将基于索引信息进行物理存储。聚集是一次性操作:当表被更新之后,更改的内容不会被聚集。也就是说,系统不会试图按照索引顺序对新的存储内容及更新记录进行重新聚集。
在对一个表聚簇之后,openGauss会记录在哪个索引上建立了聚集。CLUSTER table_name的聚集形式在之前的同一个索引的表上重新聚集。用户也可以用ALTER TABLE的CLUSTER或SET WITHOUT CLUSTER形式来设置索引来用于后续的聚集操作或清除任何之前的设置。
不含参数的CLUSTER会将当前用户所拥有的数据库中的先前做过聚簇的所有表重新处理,或者系统管理员调用的这些表。
在对一个表进行聚簇的时候,会在其上请求一个ACCESS EXCLUSIVE锁。这样就避免了在CLUSTER完成之前对此表执行其它的操作(包括读写)。
对一个表进行聚簇排序。
CLUSTER [ VERBOSE ] table_name [ USING index_name ];
对一个分区进行聚簇排序。
CLUSTER [ VERBOSE ] table_name PARTITION ( partition_name ) [ USING index_name ];
对已做过聚簇的表重新进行聚簇。
CLUSTER [ VERBOSE ];
VERBOSE
启用显示进度信息。
table_name
表名称。
取值范围:已存在的表名称。
index_name
索引名称。
取值范围:已存在的索引名称。
partition_name
分区名称。
取值范围:已存在的分区名称。
-- 创建一个分区表。
openGauss=# CREATE TABLE tpcds.inventory_p1
(
INV_DATE_SK INTEGER NOT NULL,
INV_ITEM_SK INTEGER NOT NULL,
INV_WAREHOUSE_SK INTEGER NOT NULL,
INV_QUANTITY_ON_HAND INTEGER
)
PARTITION BY RANGE(INV_DATE_SK)
(
PARTITION P1 VALUES LESS THAN(2451179),
PARTITION P2 VALUES LESS THAN(2451544),
PARTITION P3 VALUES LESS THAN(2451910),
PARTITION P4 VALUES LESS THAN(2452275),
PARTITION P5 VALUES LESS THAN(2452640),
PARTITION P6 VALUES LESS THAN(2453005),
PARTITION P7 VALUES LESS THAN(MAXVALUE)
);
-- 创建索引ds_inventory_p1_index1。
openGauss=# CREATE INDEX ds_inventory_p1_index1 ON tpcds.inventory_p1 (INV_ITEM_SK) LOCAL;
-- 对表tpcds.inventory_p1进行聚集。
openGauss=# CLUSTER tpcds.inventory_p1 USING ds_inventory_p1_index1;
-- 对分区p3进行聚集。
openGauss=# CLUSTER tpcds.inventory_p1 PARTITION (p3) USING ds_inventory_p1_index1;
-- 对数据库中可以进行聚集的表进行聚集。
openGauss=# CLUSTER;
--删除索引。
openGauss=# DROP INDEX tpcds.ds_inventory_p1_index1;
--删除分区表。
openGauss=# DROP TABLE tpcds.inventory_p1;
- cluster
- 建议在新近聚簇的表上运行ANALYZE。否则,优化器可能会选择很差劲的查询规划。
- 不允许在事务中执行CLUSTER。
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。