3.DM垂直分区语法说明
DM数据库管理系统通过PARTITON子句提供垂直分区功能,语法式如下:
CREATE TABLE <表名定义>
(<列定义> {,<列定义>} {,<表级完整性约束>})
[]
[<空间限制子句>]
[];
……
::= PARTITION BY
::=
RANGE (<列名>) [LEFT | RIGHT] FOR VALUES ( {,})
| HASH (<列名>) PARTITIONS <分区数> [STORE IN (<文件组列表>)]
| COLUMN ((<列名> {,<列名>}){,(<列名> {,<列名>})})
……
(<列定义> {,<列定义>} {,<表级完整性约束>})
[]
[<空间限制子句>]
[];
……
::= PARTITION BY
::=
RANGE (<列名>) [LEFT | RIGHT] FOR VALUES ( {,})
| HASH (<列名>) PARTITIONS <分区数> [STORE IN (<文件组列表>)]
| COLUMN ((<列名> {,<列名>}){,(<列名> {,<列名>})})
……
4.DM垂直分区使用限制
垂直分区表的主表不包含实际数据,实际数据存放在垂直分区子表中。对用户来说,垂直分区表和普通表是没有任何区别的,用户可以像使用普通表一样使用垂直分区表。但用户应谨慎考虑垂直分区操作,因为分析多个分区内的数据需要查询连接这些表。如果分区过大的话,可能会影响性能。
同时,垂直分区也不是适合任何应用场景,垂直分区的使用也存在一定的限制,DM垂直分区的使用存在如下限制:
1. 建立垂直分区表必须要有CLUSTER PK,并且此聚集索引不允许删除
2. 除PK列外,其他任何列只能出现在一个分区子表中
3. 包含IDENTITY列的表不允许定义垂直分区
4. 垂直分区表不允许建立触发器
5. 垂直分区表不允许建立CHECK约束
6. 垂直分区子表不允许建立索引
7. 不允许跨分区定义索引
8. 一张表最多允许定义8个垂直分区
9. 由于DM系统中,大数据对象的实现已进行了优化,数据是保存在大数据对象从表中;因此,包含BLOB/CLOB列的表不允许定义垂直分区