亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 數據庫 > Oracle > 正文

詳解oracle的分表之表分區的具體使用和示例

2020-07-26 14:01:46
字體:
來源:轉載
供稿:網友

此文從以下幾個方面來整理關于分區表的概念及操作:

        1.表空間及分區表的概念

        2.表分區的具體作用

        3.表分區的優缺點

        4.表分區的幾種類型及操作方法

        5.對表分區的維護性操作.

(1.) 表空間及分區表的概念

表空間:

是一個或多個數據文件的集合,所有的數據對象都存放在指定的表空間中,但主要存放的是表, 所以稱作表空間。

分區表:

當表中的數據量不斷增大,查詢數據的速度就會變慢,應用程序的性能就會下降,這時就應該考慮對表進行分區。表進行分區后,邏輯上表仍然是一張完整的表,只是將表中的數據在物理上存放到多個表空間(物理文件上),這樣查詢數據時,不至于每次都掃描整張表。

( 2).表分區的具體作用

Oracle的表分區功能通過改善可管理性、性能和可用性,從而為各式應用程序帶來了極大的好處。通常,分區可以使某些查詢以及維護操作的性能大大提高。此外,分區還可以極大簡化常見的管理任務,分區是構建千兆字節數據系統或超高可用性系統的關鍵工具。

分區功能能夠將表、索引或索引組織表進一步細分為段,這些數據庫對象的段叫做分區。每個分區有自己的名稱,還可以選擇自己的存儲特性。從數據庫管理員的角度來看,一個分區后的對象具有多個段,這些段既可進行集體管理,也可單獨管理,這就使數據庫管理員在管理分區后的對象時有相當大的靈活性。但是,從應用程序的角度來看,分區后的表與非分區表完全相同,使用 SQL DML 命令訪問分區后的表時,無需任何修改。

什么時候使用分區表:

1、表的大小超過2GB。

2、表中包含歷史數據,新的數據被增加都新的分區中。

 (3).表分區的優缺點

表分區有以下優點:

1、改善查詢性能:對分區對象的查詢可以僅搜索自己關心的分區,提高檢索速度。

2、增強可用性:如果表的某個分區出現故障,表在其他分區的數據仍然可用;

3、維護方便:如果表的某個分區出現故障,需要修復數據,只修復該分區即可;

4、均衡I/O:可以把不同的分區映射到磁盤以平衡I/O,改善整個系統性能。

缺點:

分區表相關:已經存在的表沒有方法可以直接轉化為分區表。不過 Oracle 提供了在線重定義表的功能。

(4).表分區的幾種類型及操作方法

 一.范圍分區:

范圍分區將數據基于范圍映射到每一個分區,這個范圍是你在創建分區時指定的分區鍵決定的。這種分區方式是最為常用的,并且分區鍵經常采用日期。舉個例子:你可能會將銷售數據按照月份進行分區。

當使用范圍分區時,請考慮以下幾個規則:

1、每一個分區都必須有一個VALUES LESS THEN子句,它指定了一個不包括在該分區中的上限值。分區鍵的任何值等于或者大于這個上限值的記錄都會被加入到下一個高一些的分區中。

2、所有分區,除了第一個,都會有一個隱式的下限值,這個值就是此分區的前一個分區的上限值。

3、在最高的分區中,MAXVALUE被定義。MAXVALUE代表了一個不確定的值。這個值高于其它分區中的任何分區鍵的值,也可以理解為高于任何分區中指定的VALUE LESS THEN的值,同時包括空值。

例一:

假設有一個CUSTOMER表,表中有數據200000行,我們將此表通過CUSTOMER_ID進行分區,每個分區存儲100000行,我們將每個分區保存到單獨的表空間中,這樣數據文件就可以跨越多個物理磁盤。下面是創建表和分區的代碼,如下:

CREATE TABLE CUSTOMER (  CUSTOMER_ID NUMBER NOT NULL PRIMARY KEY,  FIRST_NAME VARCHAR2(30) NOT NULL,  LAST_NAME VARCHAR2(30) NOT NULL,  PHONE VARCHAR2(15) NOT NULL,  EMAIL VARCHAR2(80),  STATUS CHAR(1) ) PARTITION BY RANGE (CUSTOMER_ID) (  PARTITION CUS_PART1 VALUES LESS THAN (100000) TABLESPACE CUS_TS01,  PARTITION CUS_PART2 VALUES LESS THAN (200000) TABLESPACE CUS_TS02 )

例二:按時間劃分

CREATE TABLE ORDER_ACTIVITIES (  ORDER_ID NUMBER(7) NOT NULL,  ORDER_DATE DATE,  TOTAL_AMOUNT NUMBER,  CUSTOTMER_ID NUMBER(7),  PAID  CHAR(1) ) PARTITION BY RANGE (ORDER_DATE) ( PARTITION ORD_ACT_PART01 VALUES LESS THAN (TO_DATE('01- MAY -2003','DD-MON-YYYY')) TABLESPACEORD_TS01, PARTITION ORD_ACT_PART02 VALUES LESS THAN (TO_DATE('01-JUN-2003','DD-MON-YYYY')) TABLESPACE ORD_TS02, PARTITION ORD_ACT_PART02 VALUES LESS THAN (TO_DATE('01-JUL-2003','DD-MON-YYYY')) TABLESPACE ORD_TS03)

例三:MAXVALUE

CREATE TABLE RangeTable(  idd INT PRIMARY KEY ,  iNAME VARCHAR(10),  grade INT ) PARTITION BY RANGE (grade) (  PARTITION part1 VALUES LESS THEN (1000) TABLESPACE Part1_tb,  PARTITION part2 VALUES LESS THEN (MAXVALUE) TABLESPACE Part2_tb );

二.列表分區:

該分區的特點是某列的值只有幾個,基于這樣的特點我們可以采用列表分區。

例一

CREATE TABLE PROBLEM_TICKETS (  PROBLEM_ID NUMBER(7) NOT NULL PRIMARY KEY,  DESCRIPTION VARCHAR2(2000),  CUSTOMER_ID NUMBER(7) NOT NULL,  DATE_ENTERED DATE NOT NULL,  STATUS VARCHAR2(20) ) PARTITION BY LIST (STATUS) (  PARTITION PROB_ACTIVE VALUES ('ACTIVE') TABLESPACE PROB_TS01,  PARTITION PROB_INACTIVE VALUES ('INACTIVE') TABLESPACE PROB_TS02

例二

CREATE TABLE ListTable(  id INT PRIMARY KEY ,  name VARCHAR (20),  area VARCHAR (10) ) PARTITION BY LIST (area) (  PARTITION part1 VALUES ('guangdong','beijing') TABLESPACE Part1_tb,  PARTITION part2 VALUES ('shanghai','nanjing') TABLESPACE Part2_tb );)

三.散列分區:

這類分區是在列值上使用散列算法,以確定將行放入哪個分區中。當列的值沒有合適的條件時,建議使用散列分區。

散列分區為通過指定分區編號來均勻分布數據的一種分區類型,因為通過在I/O設備上進行散列分區,使得這些分區大小一致。

例一:

CREATE TABLE HASH_TABLE (  COL NUMBER(8),  INF VARCHAR2(100) ) PARTITION BY HASH (COL) (  PARTITION PART01 TABLESPACE HASH_TS01,  PARTITION PART02 TABLESPACE HASH_TS02,  PARTITION PART03 TABLESPACE HASH_TS03 )

簡寫:

CREATE TABLE emp( empno NUMBER (4), ename VARCHAR2 (30), sal NUMBER )PARTITION BY HASH (empno) PARTITIONS 8STORE IN (emp1,emp2,emp3,emp4,emp5,emp6,emp7,emp8);

hash分區最主要的機制是根據hash算法來計算具體某條紀錄應該插入到哪個分區中,hash算法中最重要的是hash函數,Oracle中如果你要使用hash分區,只需指定分區的數量即可。建議分區的數量采用2的n次方,這樣可以使得各個分區間數據分布更加均勻。

四.組合范圍散列分區

這種分區是基于范圍分區和列表分區,表首先按某列進行范圍分區,然后再按某列進行列表分區,分區之中的分區被稱為子分區。

CREATE TABLE SALES (PRODUCT_ID VARCHAR2(5),SALES_DATE DATE,SALES_COST NUMBER(10),STATUS VARCHAR2(20))PARTITION BY RANGE(SALES_DATE) SUBPARTITION BY LIST (STATUS)( PARTITION P1 VALUES LESS THAN(TO_DATE('2003-01-01','YYYY-MM-DD'))TABLESPACE rptfact2009   (   SUBPARTITION P1SUB1 VALUES ('ACTIVE') TABLESPACE rptfact2009,   SUBPARTITION P1SUB2 VALUES ('INACTIVE') TABLESPACE rptfact2009   ),  PARTITION P2 VALUES LESS THAN (TO_DATE('2003-03-01','YYYY-MM-DD')) TABLESPACE rptfact2009   (   SUBPARTITION P2SUB1 VALUES ('ACTIVE') TABLESPACE rptfact2009,   SUBPARTITION P2SUB2 VALUES ('INACTIVE') TABLESPACE rptfact2009   ) )

五.復合范圍散列分區:

這種分區是基于范圍分區和散列分區,表首先按某列進行范圍分區,然后再按某列進行散列分區。

create table dinya_test  (  transaction_id number primary key,  item_id number(8) not null,  item_description varchar2(300),  transaction_date date  )  partition by range(transaction_date)subpartition by hash(transaction_id) subpartitions 3 store in (dinya_space01,dinya_space02,dinya_space03)  (  partition part_01 values less than(to_date(‘2006-01-01','yyyy-mm-dd')),  partition part_02 values less than(to_date(‘2010-01-01','yyyy-mm-dd')),  partition part_03 values less than(maxvalue)  );

(5).有關表分區的一些維護性操作:

一、添加分區

以下代碼給SALES表添加了一個P3分區

復制代碼 代碼如下:

ALTER TABLE SALES ADD PARTITION P3 VALUES LESS THAN(TO_DATE('2003-06-01','YYYY-MM-DD'));

注意:以上添加的分區界限應該高于最后一個分區界限。

以下代碼給SALES表的P3分區添加了一個P3SUB1子分區

復制代碼 代碼如下:

ALTER TABLE SALES MODIFY PARTITION P3 ADD SUBPARTITION P3SUB1 VALUES('COMPLETE');

二、刪除分區

以下代碼刪除了P3表分區:

ALTER TABLE SALES DROP PARTITION P3;

在以下代碼刪除了P4SUB1子分區:

ALTER TABLE SALES DROP SUBPARTITION P4SUB1;

注意:如果刪除的分區是表中唯一的分區,那么此分區將不能被刪除,要想刪除此分區,必須刪除表。

三、截斷分區

截斷某個分區是指刪除某個分區中的數據,并不會刪除分區,也不會刪除其它分區中的數據。當表中即使只有一個分區時,也可以截斷該分區。通過以下代碼截斷分區:

ALTER TABLE SALES TRUNCATE PARTITION P2;

通過以下代碼截斷子分區:

ALTER TABLE SALES TRUNCATE SUBPARTITION P2SUB2;

四、合并分區

合并分區是將相鄰的分區合并成一個分區,結果分區將采用較高分區的界限,值得注意的是,不能將分區合并到界限較低的分區。以下代碼實現了P1 P2分區的合并:

ALTER TABLE SALES MERGE PARTITIONS P1,P2 INTO PARTITION P2;

五、拆分分區

拆分分區將一個分區拆分兩個新分區,拆分后原來分區不再存在。注意不能對HASH類型的分區進行拆分。

復制代碼 代碼如下:

ALTER TABLE SALES SBLIT PARTITION P2 AT(TO_DATE('2003-02-01','YYYY-MM-DD')) INTO (PARTITION P21,PARTITION P22);

六、接合分區(coalesca)

結合分區是將散列分區中的數據接合到其它分區中,當散列分區中的數據比較大時,可以增加散列分區,然后進行接合,值得注意的是,接合分區只能用于散列分區中。通過以下代碼進行接合分區:

ALTER TABLE SALES COALESCA PARTITION;

七、重命名表分區

以下代碼將P21更改為P2

ALTER TABLE SALES RENAME PARTITION P21 TO P2;

八、相關查詢

跨分區查詢

select sum( *) from(select count(*) cn from t_table_SS PARTITION (P200709_1)union allselect count(*) cn from t_table_SS PARTITION (P200709_2));

查詢表上有多少分區

SELECT * FROM useR_TAB_PARTITIONS WHERE TABLE_NAME='tableName'

查詢索引信息

select object_name,object_type,tablespace_name,sum(value)from v$segment_statisticswhere statistic_name IN ('physical reads','physical write','logical reads')and object_type='INDEX'group by object_name,object_type,tablespace_nameorder by 4 desc

--顯示數據庫所有分區表的信息:

select * from DBA_PART_TABLES

--顯示當前用戶可訪問的所有分區表信息:

select * from ALL_PART_TABLES

--顯示當前用戶所有分區表的信息:

select * from USER_PART_TABLES

--顯示表分區信息 顯示數據庫所有分區表的詳細分區信息:

select * from DBA_TAB_PARTITIONS

--顯示當前用戶可訪問的所有分區表的詳細分區信息:

select * from ALL_TAB_PARTITIONS

--顯示當前用戶所有分區表的詳細分區信息:

select * from USER_TAB_PARTITIONS

--顯示子分區信息 顯示數據庫所有組合分區表的子分區信息:

select * from DBA_TAB_SUBPARTITIONS

--顯示當前用戶可訪問的所有組合分區表的子分區信息:

select * from ALL_TAB_SUBPARTITIONS

--顯示當前用戶所有組合分區表的子分區信息:

select * from USER_TAB_SUBPARTITIONS

--顯示分區列 顯示數據庫所有分區表的分區列信息:

select * from DBA_PART_KEY_COLUMNS

--顯示當前用戶可訪問的所有分區表的分區列信息:

select * from ALL_PART_KEY_COLUMNS

--顯示當前用戶所有分區表的分區列信息:

select * from USER_PART_KEY_COLUMNS

--顯示子分區列 顯示數據庫所有分區表的子分區列信息:

select * from DBA_SUBPART_KEY_COLUMNS

--顯示當前用戶可訪問的所有分區表的子分區列信息:

select * from ALL_SUBPART_KEY_COLUMNS

--顯示當前用戶所有分區表的子分區列信息:

select * from USER_SUBPART_KEY_COLUMNS

--怎樣查詢出oracle數據庫中所有的的分區表

select * from user_tables a where a.partitioned='YES'

--刪除一個表的數據是

truncate table table_name;

--刪除分區表一個分區的數據是

alter table table_name truncate partition p5;

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲国产成人久久| 欧美日韩亚洲精品一区二区三区| 久久精品国产综合| 蜜臀久久99精品久久久久久宅男| 久久久久久999| 久久99国产精品久久久久久久久| 欧美www在线| 亚洲女人被黑人巨大进入| 国产欧美va欧美va香蕉在| 欧美激情二区三区| 91极品视频在线| 国产精品青青在线观看爽香蕉| 久久97精品久久久久久久不卡| 亚洲成色777777女色窝| 91久久精品国产91久久| 欧美日韩国产一区二区| 欧美孕妇孕交黑巨大网站| 欧美香蕉大胸在线视频观看| 国产精品扒开腿做爽爽爽的视频| 久久久亚洲福利精品午夜| 国产精品狼人色视频一区| 亚洲国产精品成人精品| 欧美亚洲成人xxx| 欧美日韩中文字幕在线视频| 精品国产户外野外| 亚洲性av在线| 91精品国产91久久久久久| 国产免费成人av| 91精品国产色综合久久不卡98| 欧美性xxxx极品hd满灌| 欧美性猛交xxx| 亚洲欧美视频在线| 精品久久久视频| 国产精品爽黄69天堂a| 亚洲片国产一区一级在线观看| 亚洲一区二区三区sesese| 青草青草久热精品视频在线网站| 亚洲va国产va天堂va久久| 欧美黄色小视频| 欧美精品一二区| 欧美一级视频一区二区| 国产亚洲在线播放| 激情懂色av一区av二区av| 亚洲色图第一页| 国产精品香蕉av| 91色琪琪电影亚洲精品久久| 国产亚洲精品激情久久| 精品中文字幕久久久久久| 日韩少妇与小伙激情| 日韩有码片在线观看| 日韩视频免费在线观看| 日韩美女写真福利在线观看| 欧美一区二粉嫩精品国产一线天| 高清欧美性猛交xxxx黑人猛交| 国产99久久精品一区二区永久免费| 亚洲成av人片在线观看香蕉| 北条麻妃一区二区三区中文字幕| 成人在线一区二区| 久热精品视频在线观看一区| 少妇精69xxtheporn| 热99精品里视频精品| 亚洲中国色老太| 亚洲国产欧美精品| 成人免费直播live| 日本久久久久久久久| 国产精品久久久久久亚洲影视| 国产69精品久久久| 成人a视频在线观看| 欧美电影免费观看大全| 777午夜精品福利在线观看| 亚洲国产精品va在看黑人| 日韩成人中文字幕| 成人国产精品色哟哟| 亚洲国产美女精品久久久久∴| 国产69精品99久久久久久宅男| 欧美国产日韩一区二区在线观看| 91九色国产在线| 欧美日韩在线第一页| 亚洲va久久久噜噜噜久久天堂| 久久精品视频在线播放| 欧美精品videosex牲欧美| 精品国产一区av| 国产精品视频99| 97久久超碰福利国产精品…| 日韩电视剧免费观看网站| 亚洲热线99精品视频| 国产美女直播视频一区| 九九久久久久久久久激情| 亚洲成人网在线观看| 久久91亚洲精品中文字幕奶水| 国外成人免费在线播放| 欧美国产日本在线| 精品无人国产偷自产在线| 日本乱人伦a精品| 国产精品99蜜臀久久不卡二区| 国产91精品青草社区| 国产做受高潮69| 欧美制服第一页| 欧美极品在线播放| 韩国v欧美v日本v亚洲| 国产日韩在线看| 这里只有精品在线播放| 91久久国产婷婷一区二区| 日韩乱码在线视频| 亚洲精品一区二区网址| 亚洲高清一区二| 亚洲高清一区二| 在线视频免费一区二区| 97色在线视频观看| 亚洲国产精品va在线| 色哟哟亚洲精品一区二区| 69影院欧美专区视频| 爽爽爽爽爽爽爽成人免费观看| 日韩欧美一区二区三区| 日韩精品中文字幕在线播放| 国产在线不卡精品| 亚洲精选一区二区| 日韩专区在线播放| 中文字幕精品一区二区精品| 成人黄色免费在线观看| 欧洲精品在线视频| 91精品视频在线看| 欧美激情一区二区三区久久久| 日韩精品在线视频美女| 欧美日韩成人精品| www.久久草.com| 日韩亚洲在线观看| 精品国偷自产在线视频99| 亚洲跨种族黑人xxx| 九九视频直播综合网| 91精品国产高清久久久久久91| 亚洲精品一区久久久久久| 国产精品久久久久久网站| 热草久综合在线| 国产亚洲一级高清| 精品无人区乱码1区2区3区在线| 久久久久久有精品国产| 久久亚洲精品一区二区| 久久综合免费视频| 少妇高潮久久久久久潘金莲| 色综合久久天天综线观看| 国产69精品久久久久99| 97国产精品久久| 久久久久久999| 亚洲欧美国产日韩天堂区| 国产丝袜精品视频| 欧美日韩亚洲高清| 精品在线小视频| 亚洲天堂免费观看| 国产日韩欧美一二三区| 成人性生交大片免费观看嘿嘿视频| 欧美精品18videos性欧美| 久久久久久久久久久人体| 亚洲91精品在线| 亚洲成人黄色在线观看| 久久久久久久久久av| 性色av一区二区三区免费| 亚洲免费影视第一页| 日韩av在线网站| 欧美性生交xxxxxdddd| 久久久久久久久久久亚洲| 国产999在线| 欧美电影免费观看网站| 伊人男人综合视频网|