
# hashbucket表特性规格约束
#### hashbucket表约束
- hashbucket表只支持分布式Astore/Ustore行存储、hash分布键，不支持RANGE、LIST、MURMURhash分布，支持分区表，不支持二级分区表，不支持临时表、unlogged表，不支持外表、不支持复制表。
- hashbucket表不支持GIN/GiST索引。
- hashbucket表绑定段页式存储，即hashbucket=on隐含segment=on。
- 由于hashbucket表新增了bucket维度的文件存储信息，出于性能考虑，需要适当调大segment_buffers。
- hashbucket表不支持细粒度备份恢复的表级备份，支持细粒度表级恢复，支持细粒度库级备份和恢复，支持集群级备份和恢复，支持pitr。
- hashbucket表不支持在线DDL操作，不支持M兼容性DDL、DML操作。
- 小表（即普通表小于8MB，分区表小于8MB \* 分区数量）不建议创建成hashbucket表，否则顺序扫描性能会较普通表劣化2倍。hashbucket表由于使用段页式存储，且物理文件存储层多了bucket维度，空表或小数据量的表存在一定的存储空间预占用。单DN 10GB以上数据存储场景相较于普通表基本无空间膨胀。
- 不支持创建hashbucket类型的全量物化视图；不支持针对hashbucket表创建增量物化视图。
- 不支持Ustore hashbucket表和Astore hashbucket表库级混用。
- 当带有GPI索引的hashbucket分区表执行ALTER TABLE ... ADD/DROP/TRUNCATE/SPLIT PARTITION ... UPDATE GLOBAL INDEX命令时，被删除的分区会残留少量元数据页面，这些残留页面依赖于段页式自动残留清理特性开启状态下进行删除，即GUC参数enable_auto_segment_remain_cleanup=on（默认值为on）。建议在hashbucket分区表涉及以上DDL操作时维持此参数为on。
- 不支持使用枚举类型、复合类型、复合数组类型、表类型、特殊类型（"regproc"、"pg_node_tree"、"regprocedure"、"regoper"、"regoperator"、"regclass"、"regtype"、"_regprocedure"、"_regoper"、"_regoperator"、"_regclass"、"_regtype"、"regconfig"、"regdictionary"、"_regconfig"和"_regdictionary"）作为列来创建或修改hashbucket表。对于已经创建成功且包含上述类型列的hashbucket表，不支持扩容操作。
 
#### Ustore hashbucket表约束
- Ustore hashbucket表继承hashbucket表的所有约束。
- Ustore hashbucket表继承Ustore表的约束。不支持在事务块/存储过程中执行ALTER TABLE MERGE PARTITIONS的操作。在线并行创建/重建索引支持CBI、LBI索引，支持Ustore普通索引、GLOBAL索引、LOCAL索引，不支持PCR索引。
- Ustore hashbucket表不支持ubtree批量插入特性。
- Ustore hashbucket表不支持GSI在线创建索引。
- Ustore hashbucket表创建CBI索引不支持include。
- Ustore hashbucket表不支持表类型转换。
 
#### hashbucket表特性规格
hashbucket表（普通表/分区表）DML性能相比于普通表（普通表/分区表）性能劣化5%以内。
