技术开发 频道

专家点评:达梦6.0试用之分区

  Oracle生成了两张表,名称是表名后面增加00DMPART和01DMPART。查询或修改的时候数据库自动将两种表组合在一起。

  水平分区支持RANGE和HASH两种方法,与Oracle的RANGE、HASH分区相比要简单很多。

  首先看看RANGE分区:

SQL>CREATE TABLE T_PART_RANGE
2   (ID NUMBER,
3   NAME VARCHAR(30),
4   CREATE_DATE DATE)
5   PARTITION BY RANGE (CREATE_DATE)
6   LEFT FOR VALUES (TO_DATE('2009-1-1', 'YYYY-MM-DD'),
7   TO_DATE('2010-1-1', 'YYYY-MM-DD'),
8   TO_DATE('2011-1-1', 'YYYY-MM-DD'));
CREATE TABLE T_PART_RANGE
(ID
NUMBER,
NAME
VARCHAR(30),
CREATE_DATE DATE)
PARTITION
BY RANGE (CREATE_DATE)
LEFT FOR VALUES (TO_DATE('2009-1-1', 'YYYY-MM-DD'),
TO_DATE(
'2010-1-1', 'YYYY-MM-DD'),
TO_DATE(
'2011-1-1', 'YYYY-MM-DD'));
time used:
18.524(ms) clock tick:30718050.

  用户只能通过设定分区的上限或下限来确定分区的创建,而达梦似乎并没有提供分区信息的视图。

  这是一个HASH分区的例子:

SQL>CREATE TABLE T_PART_RANGE
2   (ID NUMBER,
3   NAME VARCHAR(30),
4   CREATE_DATE DATE)
5   PARTITION BY RANGE (CREATE_DATE)
6   LEFT FOR VALUES (TO_DATE('2009-1-1', 'YYYY-MM-DD'),
7   TO_DATE('2010-1-1', 'YYYY-MM-DD'),
8   TO_DATE('2011-1-1', 'YYYY-MM-DD'));
CREATE TABLE T_PART_RANGE
(ID
NUMBER,
NAME
VARCHAR(30),
CREATE_DATE DATE)
PARTITION
BY RANGE (CREATE_DATE)
LEFT FOR VALUES (TO_DATE('2009-1-1', 'YYYY-MM-DD'),
TO_DATE(
'2010-1-1', 'YYYY-MM-DD'),
TO_DATE(
'2011-1-1', 'YYYY-MM-DD'));
time used:
18.524(ms) clock tick:30718050.

  虽然达梦数据库支持RANGE和HASH分区,但是与Oracle的分区还是存在很大的区别的。其中最主要的一点就是不透明,分区表建立成功后,就无法判断这个表十分是分区表了,而建立的分区数量,每个分区的名称以及物理属性都是不可见的。连分区名称都不清除,更不要说支持Oracle的SELECT * FROM TABLE PARTITION (P1)的语法了。

  达梦数据库支持分区,也支持分区索引,但是在分区的透明度上还存在很大的不足。

0
相关文章