6.3、分區表、分區表索引--Oracle模式對象

来源:http://www.cnblogs.com/jionjionyou/archive/2016/06/01/5548176.html
-Advertisement-
Play Games

分區: (1).一種分區技術,可以在創建表時應用分區技術,將數據以分區形式保存。 (2).可以將巨型表或索引分割成相對較小的、可獨立管理的部分。 (3).表分區時必須為表中的每一條記錄指定所屬分區。 對錶進行分區優點: 增強可用性; 維護方便; 均衡I/O; 改善查詢性能。 創建分區表 分區方法:範 ...


分區:

(1).一種分區技術,可以在創建表時應用分區技術,將數據以分區形式保存

(2).可以將巨型表或索引分割成相對較小的、可獨立管理的部分

(3).表分區時必須為表中的每一條記錄指定所屬分區

 

對錶進行分區優點:

增強可用性;

維護方便;

均衡I/O

改善查詢性能。

 

創建分區表

分區方法:範圍分區、散列分區、列表分區、組合範圍散列分區和組合範圍列表分區;

 

1、範圍分區:是對數據表中某個值的範圍,使用partition by range子句進行分區。

 1 create table testscore(
 2 id      number primary key,
 3 name    varchar2(8),
 4 subject varchar2(10),
 5 score   number
 6 )
 7 --指定按照score列,進行範圍分區
 8 partition by range(score)
 9 (
10 --將表分成3個區,分別為range1、range2、range3,並存在不同的三個表空間上
11 partition range1 values less than(60) tablespace AAA,
12 partition range2 values less than(80) tablespace BBB,
13 partition range3 values less than(maxvalue) tablespace CCC
14 );

--向表testscoe中插入數據

1 insert into testscore values (1,'tyou','maths',50);
2 insert into testscore values (2,'zhangsa','maths',90);
3 insert into testscore values (3,'thm','english',76);
4 insert into testscore values (4,'tya','maths',98);
5 insert into testscore values (5,'jionjion','yuwen',32);
6 insert into testscore values (6,'haha','wuli',66);
7 commit;

--查詢分區range1的結果如下:

select * from testscore partition(range1);

--查詢分區range2的結果如下:

select * from testscore partition(range2);

 

2、散列分區:通過哈希hash演算法均勻分佈數據,通過在I/O設備上進行散列分區,可以使得分區的大小一致。使用partition by hash子句。

 1 create table testid(
 2 id      number primary key,
 3 name    varchar2(8),
 4 subject  varchar2(10),
 5 score     number
 6 )
 7 --指定按照id列,進行散列分區
 8 partition by hash(id)
 9 (
10 partition part1 tablespace AAA,
11 partition part2 tablespace BBB,
12 partition part3 tablespace BBB
13 );

 

3、列表分區:適用於分區列的值為非數字或日期數據類型,並且分區列的取值範圍較少時,使用partition by list子句。

--例如,成績表中的subject科目列取值較少。

 1 create table testsubject(
 2 id      number primary key,
 3 name    varchar2(8),
 4 subject varchar2(10),
 5 score   number
 6 )
 7 --指定按照id列,進行散列分區
 8 partition by list(subject)
 9 (
10 partition part1 values('maths','yuwen') tablespace AAA,
11 partition part2 values('english','wuli') tablespace BBB,
12 partition part3 values('huaxue') tablespace CCC
13 );

--向表testsubject中插入數據

1 insert into testsubject values (1,'tyou','maths',50);
2 insert into testsubject values (2,'zhangsa','maths',90);
3 insert into testsubject values (3,'thm','english',76);
4 insert into testsubject values (4,'tya','maths',98);
5 insert into testsubject values (5,'jionjion','yuwen',32);
6 insert into testsubject values (6,'haha','wuli',66);
7 insert into testsubject values (7,'hehe','huaxue',66);
8 commit;

--查詢分區part1的結果如下:

select * from testsubject partition(part1);

--查詢分區part2的結果如下:

select * from testsubject partition(part2);

--查詢分區part3的結果如下:

select * from testsubject partition(part3);

 

4、組合範圍散列分區:結合範圍分區和散列分區

 1 create table testRanHas(
 2 id      number primary key,
 3 name    varchar2(8),
 4 subject varchar2(10),
 5 score   number
 6 )
 7 --指定按照score列範圍分區分成3個分區
 8 partition by range(score)
 9 --然後,再使用subpartition by子句進行散列分區
10 subpartition by hash(id)
11 subpartitions 2 store in (AAA,BBB)
12 (
13 partition range1 values less than(60),
14 partition range2 values less than(80),
15 partition range3 values less than(maxvalue)
16 );

 

5、組合範圍列表分區:結合範圍分區和列表分區

 1 create table testRanLis(
 2 id      number primary key,
 3 name    varchar2(8),
 4 subject varchar2(10),
 5 score   number
 6 )
 7 partition by range(score)
 8 subpartition by list(subject)
 9 (
10 partition range1 values less than(60)
11      (
12       subpartition part1_1 values('maths','yuwen') tablespace AAA,
13       subpartition part1_2 values('english','wuli') tablespace BBB
14       ),
15 partition range2 values less than(80)
16       (
17       subpartition part2_1 values('maths','yuwen') tablespace AAA,
18       subpartition part2_2 values('huaxue') tablespace CCC
19       ),
20 partition range3 values less than(maxvalue)
21       (
22        subpartition part3_1 values('maths','yuwen') tablespace AAA,
23        subpartition part3_2 values('english','wuli') tablespace BBB,
24        subpartition part3_3 values('huaxue') tablespace CCC
25        )
26 );

 

分區表索引:3種類型,局部分區索引、全局分區索引和全局非分區索引

局部分區索引:

為分區表的各個分區單獨建立的索引,各個分區索引之間相互獨立的。

--先創建一個範圍分區表

 1 create table testscore(
 2 id      number primary key,
 3 name    varchar2(8),
 4 subject varchar2(10),
 5 score   number
 6 )
 7 partition by range(score)
 8 (
 9 partition range1 values less than(60) tablespace AAA,
10 partition range2 values less than(80) tablespace BBB,
11 partition range3 values less than(maxvalue) tablespace CCC
12 );

--再創建局部分區索引

1 create index index_testscore
2 on testscore(name) local
3 (
4 partition index1 tablespace AAA,
5 partition index2 tablespace BBB,
6 partition index3 tablespace CCC
7 );

 

全局分區索引:

對整個分區表建立的索引,全局分區索引的各個分區之間不是相互對立的。

1 create index global_index_testscore
2 on testscore(score)
3 Global partition by range(score)
4 (
5 partition range1 values less than(60) tablespace AAA,
6 partition range2 values less than(80) tablespace BBB,
7 partition range3 values less than(maxvalue) tablespace CCC
8 );

註意:使用global建立全局分區索引,只能用於range分區!!!
 

全局非分區索引:

對整個分區表建立索引,但未對索引進行分區。

create index nopart_index_testscore

on testscore(subject);

 

分區表管理:

1、增加分區

為範圍分區表增加分區:

--先創建一個test範圍分區表

create table test(
id      number primary key,
name    varchar2(8),
subject varchar2(10),
score   number
)
partition by range(score)
(
partition range1 values less than(60) tablespace AAA,
partition range2 values less than(80) tablespace BBB,
partition range3 values less than(100) tablespace CCC
);

--在最後一個分區之後增加分區

alter table test
add partition range4 values less than(150)

 

--在分區中間或開始出增加分區

--80-100之間,增加一個90分開成兩個分區,即range3分成range5和range6

1 alter table test
2 split partition range3 at(90)
3 into(
4      partition range5 tablespace AAA,
5      partition range6 tablespace BBB
6      );

 

為散列分區表增加分區:

alter table test2

add partition range4 tablespace AAA;

 

為列表分區表增加分區:

alter table test3

add partition range4 values('shengwu') tablespace AAA;

 

2、合併分區:

--將之前增加的分區合併

alter table test

merge partitions range5,range6 into partition range3;

 

3、刪除分區:

alter table test

drop partition range4;

 

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 運行結果列印: 原文文檔介紹: Runs the loop once, blocking for input in the specified mode until a given date. //執行loop一次,堵塞等待給定模式的輸入直至給定的時間點 Parameters mode The mo ...
  • 做基於WebView應用時,頁面上有一個輸入框,當輸入的文字過多時,超過輸入框的行數時,輸入框能夠滾動,這時間問題來了,輸入的提示箭頭會移動到輸入框外,如何解決這個問題呢,查找chromium源碼如下: void LoadIfNecessary(jobject context) { if (load ...
  • 1.代碼如下 (註釋都有) - (void)viewDidLoad { [super viewDidLoad]; UIImageView * bigImageView = [[UIImageView alloc]initWithFrame:CGRectMake(100, 100, 100, 100) ...
  • 複製並修改原有項目 複製之前創建的項目CC+CV操作 需要改動的地方: * 項目名字 * 應用包名 * R文件重新導包 接著修改件/AndroidManifest.xml中的包名:package="com.wuyudong.rwinrom" 簡單起見直接改為package="com.wuyudong ...
  • ~/Library/MobileDevice/Provisioning Profiles ...
  • 蘋果的通訊錄功能在iOS7,iOS8,iOS9 都有著一定的不同,iOS7和8用的是 <AddressBookUI/AddressBookUI.h> ,但是兩個系統版本的代理方法有一些變化,有些代理方法都標註了 NS_DEPRECATED_IOS(2_0, 8_0) 並推薦了另一個代理方法與之對應。 ...
  • 一,效果圖。 二,工程圖。 三,代碼。 RootViewController.h #import <UIKit/UIKit.h> @interface RootViewController : UIViewController <UITableViewDataSource,UITableViewDe ...
  • 命名有些錯誤,但功能實現,以後註意下命名規範 WJViewGroup.h #import <UIKit/UIKit.h> @interface WJViewGroup : UIView { NSInteger _width; NSInteger _height; } @property (nonat ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...