DBAplus社群 openGauss魔改PG?它能兼容Oracle的数据库表吗?( 三 )
postgres=#createclustert_cluster(idnumber)size600;
ERROR:syntaxerroratornear"cluster"
LINE1:createclustert_cluster(idnumber)size600;
在某些为了提高连接性能的情况下 , 可以考虑用列存与partialclusterkey结合的方式替代 , 表定义中可以选取某一列或几列设置为partialclusterkey 。
在导入数据时 , 按设置的列进行局部排序(默认每70个CU即420万行排序一次) , 生成的CU会聚集在一起 , 即CU的min,max会在一个较小的区间内 。 当查询时 , where条件含有这些列时 , 可产生良好的过滤效果 。
postgres=#CREATETABLEWAREHOUSE
W_WAREHOUSE_SKINTEGERNOTNULL,
W_WAREHOUSE_IDCHAR(16)NOTNULL,
W_WAREHOUSE_NAMEVARCHAR(20),
PARTIALCLUSTERKEY(W_WAREHOUSE_SK,W_WAREHOUSE_ID)
)WITH(ORIENTATION=COLUMN);六、分区表
分区表是将一个大表按照一定的规则分解成多张具有独立存储空间的实体表 。 对于应用来说 , 逻辑上只有一个表 , 但在物理上这个表由多个物理分区组成 。 每个分区都是一个独立的对象 , 可以独自处理 , 也可以作为一个更大对象的一部分进行处理 。 分区表通常分为范围分区、列表分区、哈希分区以及复合分区 。
1、范围分区
范围分区就是对数据表中的某个值的范围进行分区 , 根据某个值的范围 , 决定将该数据存储在哪个分区上 。 如根据序号分区 , 根据业务记录的创建日期进行分区等(联通每个月的账单记录就用的分区表存储) 。 在openGauss中 , 可以支持范围分区 。
postgres=#CREATETABLEt_range_partition
(prod_idNUMBER(6)
,cust_idNUMBER
,time_idDATE
,channel_idCHAR(1)
,promo_idNUMBER(6)
,quantity_soldNUMBER(3)
,amount_soldNUMBER(10,2)
)PARTITIONBYRANGE(time_id)
(PARTITIONsales_q1_2006VALUESLESSTHAN(TO_DATE('01-APR-2006','dd-MON-yyyy'))TABLESPACEpg_default,PARTITIONsales_q2_2006VALUESLESSTHAN(TO_DATE('01-JUL-2006','dd-MON-yyyy'))TABLESPACEpg_default,PARTITIONsales_q3_2006VALUESLESSTHAN(TO_DATE('01-OCT-2006','dd-MON-yyyy'))TABLESPACEpg_default,PARTITIONsales_q4_2006VALUESLESSTHAN(TO_DATE('01-JAN-2007','dd-MON-yyyy'))TABLESPACEpg_default);
CREATETABLE
2、列表分区
列表分区是根据所有可能的值 , 指定应该插入相应的分区 , openGauss当前版本无法支持列表分区 。
postgres=#CREATETABLEt_list_partition_table
(idnumber,
namevarchar2(20),
salesnumber(10,2),
statevarchar2(2))
PARTITIONBYLIST(state)
(PARTITIONq1_northwestVALUES('OR','WA'),
PARTITIONq1_southwestVALUES('AZ','UT','NM'),
PARTITIONq1_northeastVALUES('NY','VM','NJ'),
PARTITIONq1_southeastVALUES('FL','GA'),
PARTITIONq1_northcentralVALUES('SD','WI'),
PARTITIONq1_southcentralVALUES('OK','TX'));
ERROR:syntaxerroratornear"LIST"
LINE6:PARTITIONBYLIST(state)
3、散列分区
散列(HASH)分区通过在分区键值上执行一个散列函数来说决定数据的物理位置 。 散列分区把记录分布在比范围分区更多的分区上 , 这减少了I/O争用的可能性 。 openGauss当前版本无法支持散列(HASH)分区 。
postgres=#CREATETABLEt_hash_partition
(deptnoNUMBER,deptnameVARCHAR(32))
PARTITIONBYHASH(deptno)
(PARTITIONp1TABLESPACEpg_default,PARTITIONp2TABLESPACEpg_default,
PARTITIONp3TABLESPACEpg_default,PARTITIONp4TABLESPACEpg_default);
ERROR:syntaxerroratornear"HASH"
- 真创业者真创业者社群:2020年10月16日投融资事件汇总[共36起,中国24起]
- 颜某人 如何选择靠谱社区团购小程序系统?,“社群+小程序”成热门趋势
- 世纪智仁 社群运营不用愁!,学了这3个关键策略
- 真创业者 中国22起],真创业者社群:2020年10月13日投融资事件汇总[共29起
- 技术编程openGauss魔改PG?它能兼容Oracle的数据库表吗?
- 一个“抑郁症”创业者:组建病友社群“兜住”更多人
- 仙尊科技 社区团购小程序凭什么能够让商家生意爆棚,直面传统社群下单痛点
- 东方网|后疫情时代谁在逆势生长?2020第五届国际社群节聚焦产业新“风口”
- 真创业者真创业者社群:2020年9月25日投融资事件汇总[共35起,中国26起]
- 守护袁昆 社交社群移动微电商到底卖的是什么?微电商要怎么玩?