排球

DM6水平分区简介

2019-10-17 03:12:46来源:励志吧0次阅读

对于大型数据库管理系统而言,一个表中的数据量可能有上千万。这样大规模的数据表,就难以进行有效的管理,甚至进行查询、更新等操作的性能和速度都会受到不利的影响,那么此时你就可以尝试利用水平分区功能以提高性能。

达梦数据库DM6提供对表的分区方法有两种:

1、范围分区:范围分区就是对表中的某个值的范围进行分区,根据某个值的范围,决定将该数据存储在哪个分区上。

2、HASH分区:HASH分区是通过指定分区编号来均匀分布数据的一种分区类型,因为通过在I/O设备上进行散列分区,使得这些分区大小一致。

除了对表进行分区,还可以对索引进行分区。达梦数据库DM6支持下面三种类型的分区索引:

1、本地索引:其分区方式与其所在基础表的分区方式一模一样的索引。本地索引的每个分区仅对应于其所在基础表的一个分区。

2、全局分区索引:使用不同于其所在表的分区键进行分区的索引,其所在表可以是分区表或非分区表。

3、全局非分区索引:全局非分区索引基本上和非分区表的索引一样。索引结构是不分区的。

本次我们探讨的主要是对表的水平分区,这实际上是将一个表分为多个子表,这样,每个表包含的列数相同,但是行更少。例如,一个表可能包含最近三年的数据,但是只定期访问本年度的数据。在这种情况下,可考虑将数据分区成三个表,每个表只包含一年的数据。下面,按照这个思路实验一下使用水平分区的性能提升情况。

1、非分区表

先建数据表,表结构如下:

CREATETABLETABP(

ID INTIDENTITY(1,1),

AUTHOR VARCHAR(10),

PUBLISH_DATE DATE);

向表中插入1000万条数据,表中的数据按照PUBLISH_DATE列中的日期分为2007年、2008年、2009年三年的数据,数据分布情况如下:

查询全部2009年的数据,执行以下语句:

SELECT*FROMTABP WHEREPUBLISH_DATE BETWEEN'2008-1-1'AND'2008-12-31'

执行结果,耗时10秒。

2、分区表

在非分区表的基础上增加水平分区:

CREATETABLETABP(

ID INTIDENTITY(1,1),

AUTHOR VARCHAR(10),

PUBLISH_DATE DATE)

PARTITION BYRANGE(PUBLISH_DATE) LEFTFORVALUES('2007-12-31','2008-12-31');

可以看到,定义PUBLISH_DATE列为水平分区,LEFT指定每个值为每个分区的上边界,分区结果如下:

同样向表中插入1000万条记录,数据分布和非分区表一样。

同样查询2009年的数据。

SELECT*FROMTABP WHEREPUBLISH_DATE BETWEEN'2008-1-1'AND'2008-12-31'

执行结果,耗时3秒167毫秒。

通过上组实验可以看到,尽管没有用到索引等其它优化手段,只是利用了水平分区功能,查询效率就提供了近70%,效果非常明显。由此,水平分区功能为我们今后的优化工作又提供了一个有效的手段。

河源治疗前列腺增生方法
泰州治疗盆腔炎医院
延安治疗龟头炎费用
石家庄治疗前列腺炎医院
常德整形美容医院
分享到: