?

大型數據庫分區表研究

2016-08-09 07:23史斌
中國新通信 2016年11期
關鍵詞:清華大學出版社分區列表

【摘要】 分區表在大型數據庫特別是分布式數據庫中占有重要地位,分區是一種“分而治之”的技術,為大量數據提供了可伸縮的性能,提高了對巨型數據庫的讀寫和查詢速度。本文主要研究了分布式數據庫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 months 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

猜你喜歡
清華大學出版社分區列表
上海實施“分區封控”
另辟蹊徑使用Linux備份和還原Windows系統
擴列吧
Desperate Love towards the Dark Lady in Shakespeare’s Sonnets
安裝Windows 10時創建分區錯誤該怎么辦
Appreciation of “August” by Charles Dickens from the Angle of Deviation
《秘書工作手記》
列表法解分式方程問題探索
列表畫樹狀圖各有所長
2011年《小說月刊》轉載列表
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合