大型数据库分区表研究

来源 :中国新通信 | 被引量 : 0次 | 上传用户:guogangw1987
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  【摘要】 分區表在大型数据库特别是分布式数据库中占有重要地位,分区是一种“分而治之”的技术,为大量数据提供了可伸缩的性能,提高了对巨型数据库的读写和查询速度。本文主要研究了分布式数据库Oralce 中的List分区表和Range分区表的创建与应用,探讨了其切割和分区表的修改技术。从而可以类推分区表在其它数据库关系系统如大数据中Hive中的应用。
  【关键字】 大型数据库Oracle list分区表 range 分区表 分区表的切割
  一、引言
  分区表应用在大型的分布数据库中,分区是一种“分而治之”的技术,通过将大表引分成可以管理的小块,从而避免了对每个表作为一个大的、单独的对象进行管理,为大量数据提供了可伸缩的性能,提高了巨型数据库的读写和查询速度。
  分区表是将一个大的表分割成较小的片段(分区),在实际应用中,分区表的操作是在独立的分区上,但是对用户而言是透明的 [1][2] 。Oracle提供了分区技术以支持VLDB(Very Large DataBase)。分区表通过对分区列的判断,把分区列不同的记录,放到不同的分区中。分区完全对应用透明。Oracle的分区表可以包括多个分区,每个分区都是一个独立的段(SEGMENT),可以存放到不同的表空间中。查询时可以通过查询表来访问各个分区中的数据,也可以通过在查询时直接指定分区的方法来进行查询。
  分区表的主要优点为:
  (1)由于将数据分散到各个分区中,减少了数据损坏的可能性;(2)可以对单独的分区进行备份和恢复;(3)可以将分区映射到不同的物理磁盘上,来分散IO;(4)提高可管理性、可用性和性能。
  什么时候需要分区表,官网给出了2个建议:
  (1)Tables greater than 2GB should always be considered for partitioning.
  (2)Tables containing historical data, in which new data is added into the newest partition. A typical example is a historical table where only the current month’s data is updatable and the other 11 months are read only.
  二、分区表的创建和应用
  Oracle 10g以上版本提供了以下几种分区类型:
  (1)范围分区(range);(2)哈希分区(hash);(3)列表分区(list);(4)范围-哈希复合分区(range-hash);(5)范围-列表复合分区(range-list)。
  这里以应用广泛的list分区和range分区为例说明分区表的应用。
  2.1 list 分区表
  List分区(列表分区): 通过列表方法(指定字符串值方法)进行分区。 List分区表需要考虑分区的依据,分区的名字,分区值(或者值的区域)每个分区所在的表空间。在分区时必须确定分区列可能存在的值,一旦插入的列值不在分区范围内,则插入/更新就会失败,因此通常建议使用list分区时,要创建一个default分区存储那些不在指定范围内的记录,类似range分区中的maxvalue分区。
  create table part_book1
  ( bid number(4),
  bookname VARCHAR2(20),
  bookpress VARCHAR2(30),
  booktime date)
  partition by list(bookpress)
  (partition part1 values(‘清华大学出版社’) tablespace system,
  partition part2 values(‘教育出版社’) tablespace users); list分区表的插入同普通表,如下:
  SQL> insert into part_book1 values(1,’oralce’,’清华大学出版社’,to_date(‘20110102’,’yyyymmdd’));
  SQL> insert into part_book1 values(2,’音乐基础欣赏’,’教育出版社’,to_date(‘20120102’,’yyyymmdd’));
  list分区表可以分区查询,如下:
  SQL> select * from part_book1 partition(part1);


  创建或修改分区时,可以指定default,把非分区规则的数据,全部放到这个default分区,如除了’清华大学出版社’, ‘教育出版社’之外的出版社,放到分区表part_book1的part3分区中。
  SQL> alter table part_book1 add partition part3 values(default) tablespace system;
  与分区表相关的数据字典:dba_part_tables,dba_tab_ partitions等等。



  2.2 range 分区表
  Range 分区表是应用范围比较广的表分区方式[3][4],范围分区就是对数据表中的某个值的范围进行分区,根据某个值的范围,决定将该数据存储在哪个分区上。它是以列的值的范围来做为分区的划分条件,将记录存放到列值所在的range分区中。
  比如按照时间划分,某大型企业的数据2015 年1 季度的数据放到a 分区,2015年2 季度的数据放到b分区,因此在创建的时候,需要指定基于的列,以及分区的范围值。若某些记录暂无法预测范围,可创建maxvalue 分区,所有不在指定范围内的记录会存储maxvalue 区。
  建立range分区表分区表需要考虑分区的依据,分区的名字,分区值(或者值的区域)每个分区所在的表空间。values less than:后跟分区范围值(如果依赖列有多个,范围对应值也应是多个,中间以逗号分隔);
  create table part_book
  ( bid number(4),
  bookname VARCHAR2(20),
  bookpress VARCHAR2(30),
  booktime date)
  partition by range(booktime)
  (partition part1 values less than(to_ date(‘20100101’,’yyyymmdd’)) tablespace system,
  partition part2 values less than (to_ date(‘20120101’,’yyyymmdd’)) tablespace users,
  partition part3 values less than (MAXVALUE) tablespace users
  );
  insert into part_book values(1,’oracle’,’清华大学出版社’,to_date(‘20110102’,’yyyymmdd’));
  insert into part_book values(2,’oracle’,’清华大学出版社’,to_date(‘20090101’,’yyyymmdd’));


  Range 分区表用过一段时间之后,若需要增加新的分区,可以对range分区表进行切割[5]。Range 分区切割的位置为在分区表中间或者开始处或者带有maxvalue值的尾处增加分区。其语法格式如下:
  ALTER TABLE 表名 SPLIT PARTITION 分区的名字 AT(值) INTO (PARTITION 新分区的名字1 ,PARTITION 新分区的名字2)
  分区表的切割举例:将part3分区切割为两个新的分区,名字为part3、part4,分区的的依据值为20140101.
  alter table part_book4
  s p l i t p a r t i t i o n p a r t 3 a t ( t o _ date(‘20140101’,’yyyymmdd’))
  into(partition part3,partition part4);
  Range 分区表的插入和查询操作同 list分区表,在这里不再赘述。 另外对于组合分区:如果某表按照某列分区之后,仍然较大,或者是一些其它的需求,还可以通过分区内再建子分区的方式将分区再分区,即组合分区的方式。
  三、总结
  分區表提高了大型、巨型数据库的读写和查询速度,为大量数据的存储、读取提供了可伸缩性能,本文主要研究了分布式数据库Oracle 中的List分区表和Range分区表的创建与应用,探讨了其切割和分区表的修改技术。
  参 考 文 献
  [1] 王立君.并行多媒体数据库中基于内容的高效检索的数据分配方法的研究. [J]科学技术与工程,2013.13(9),2544-2548
  [2] 郭晋秦, 韩 焱. 大型数据库聚类中伪装危险数据识别方法研究. 计算机仿真 2015.433-436 32(11)
  [3] 徐洪丽,王志军.认知策略与知识结构化的研究与应用-以大型数据库学习为例. 高教学刊. 2016.3 73-74.
  [4] 李亚龙, 朱岩. 表分区在分界开关监控系统数据库的应用.2016(25)2: P235-237
  [5] 史斌.大型数据库管理系统 Oracle 体系结构. 电脑编程技巧与维护. 2010.18:p72-74
其他文献
长征精神是中国共产党领导民族解放与人民自由的历史实践中,凝练而成的革命精神与民族精神的统一。在中华民族面临危亡的时刻,中国共产党进行了伟大的长征。中国共产党人和红
要高效进行阅读教学,在语文阅读教学中融入"生态课堂"理念,教师必须正确认识"生态课堂"内涵,巧妙创设阅读教学情境,科学合理进行阅读技巧教学,积极开展读书交流活动。
在当代,计算机技术涉及的网络技术已经深入到我们日常生活和工作中,公安机关作为社会的守护神,必须要时刻跟进社会脚步,计算机基础相关课程已成为公安干警的必修课。但是,在我国,部
【摘要】 近几年来,随着我国总体信息产业的快速发展,国家经济环境有了较大的改变,尤其是大部分领域都已经实现了信息化运作模式,这就在一定程度上提升了产业运转及其管理的效率。我国山西省同煤集团在各级领导的带领下,积极探索通信基础工程建设,强化通信信息化服务项目,且执行效果较为突出,实现了产业升级的企业发展目标,这与同煤通信综合业务服务平台的设计及其应用密不可分。本文就同煤通信综合业务服务平台及其实际应
本文介绍了二氧化碳压裂增产技术的基本原理及其特点,分析了永乐油田葡萄花油层前期3口试验井压裂效果,为低产低渗透油田的增产改造技术探索了新途径.近年来,新兴的CO2压裂技
我国著名语文教育家叶圣陶先生说:“天地阅览室,万物皆书卷。”从学校生活到家庭生活再到社会交往,都需要沟通信息和交流思想感情,都需要运用语文,也都可以从中学习语文,语文学习就包含课内语文学习和课外语文学习两个方面。“课内”指语文的课堂教学活动,包括课前预习、上课及课后的复习和作业;“课外”则指语文课堂教学之外的语文学习和活动。语文教学中的课堂学习和课外学习各有其作用,又相互依存,构成一个整体,只有密
项目概述新荷兰岛(New Holland)规划与景观设计项目的目标不仅在于修复场地原有的历史性建筑地标,还期望重塑该岛在城市中的角色。West 8城市规划与景观设计事务所(West8)提出的