`
yingxiongwudi
  • 浏览: 57791 次
  • 性别: Icon_minigender_1
  • 来自: 郑州
社区版块
存档分类
最新评论

分区表

阅读更多
在现代的大型分布式信息系统中,数据量的规模已经达到了海量的规模。数据量的增大是数据库管理系统出现了新的问题:数据的可用性降低、DML操作效率降低、数据的管理和维护麻烦。在Oracle数据库管理系统中提出了一个分区的概念。
当一个数据表达到一定大的时候,即使是用索引来进行查询操作,也会相当的慢。为了提高大数据量表的DML操作的性能,可以将一个大表划分成几个部分,这就是分区的概念。可以对任意的表进行分区,但是如果表属于聚簇的一部分,这样的表不能进行分区。分区以后的表当然可以提高查询的速度,如果你查询的数据只是涉及到一个分区,那么DBMS不会尝试去查询别的分区。每一个分区都存储在不同的段,并且都有自己的存储设置。分区甚至是可以存储在不同的表空间里面,因为表空间是一斤是一个物理的存储单位,所以你可以把一张表的不同分区存储在不同的硬盘上面;这样对构建分布式的数据库相当的方便。试想有一个大型连锁supermarket,在全国1x个城市都有连锁店,,那么分布式的数据库系统可以根据地理位置将数据表进行分区。
 对数据库表进行分区的一个基本的原则是:能够使对数据库表的DML操作只涉及到一个或这尽量少的分区。对表数据的分区办法一共有五种:范围分区、散列分区、列表分区、范围-散列混合分区、范围-列表混合分区。
 范围分区是通过指定值得范围来对数据进行分区。例如:第一季度得销售数据放在第一个partition,这里我们用tablespace来作为一个partition单位。第二季度得销售数据放在第二个partition。在Oracle中可以用以下得语句创建:
 create table pta(A data,B varchar2(20)) partition by range(A)
 (patition p1 values less than (to_date('20040701','yyyymmdd')),
 partition p2 values less than (to_date('20050101','yyyymmdd')))
 散列分区对一列或几列应用散列函数,将数据平均分布到各个表分区中。利用这样的分区方式往往是你对分区的范围不确定的时候,而只是希望将数据平均的分布到不同的分区中。对应Oracle中的语句创建是:
 create table ta(A date, B varchar2(20))
 partition by hash(A)(patition p1, partition p2)
 或者
 create table ta(A date, B varchar2(20))
 partition by hash(A) partitions 2 store in (p1, p2)
 列表分区是通过建立一个不同的列表分区的键值,然后根绝这个键值来确定那些数据记录要放到指定键值对应的分区中。这样的分区方式适合于根据值来分区的应用。例如根据城市的名称。对应Oracle中的语句创建是:
 create table ta(city_id number; city_ab varchar2(5)) partition by list (city_ab)
 (partition beijing values('bg') tablespace ts1,
 partition shanghao values('sh') tablespace ts2;
 混合分区分方式为范围散列混合分区和范围列表混合分区方式,这两种混合方式并没有新的概念,而只是创建上的语法不同而以。
# posted by wallywong @ 2005-04-09 00:38 评论(0) 





分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics