Oracle9i中分割槽Partition的使用簡介
第一種 範圍分割槽
1 對錶進行單列的範圍分割槽:
這使最為常用也是最簡單的方法,具體例子如下:
create table emp (empno number(4), ename varchar2(30), sal number) partition by range(empno) (partition e1 values less than (1000) tablespace emp1, partition e2 values less than (2000) tablespace emp2, partition e3 values less than (maxvalue) tablespace emp3); insert into emp values (100,'Tom',1000); insert into emp values (500,'Peter',2000); insert into emp values (1000,'Scott',3000); insert into emp values (1999,'Bill',4000); insert into emp values (5000,'Gates',6000); commit; |
從emp表中選擇全部的紀錄如下:
SQL> select * from emp; EMPNO ENAME SAL ---------- ------------------------------ ---------- 100 Tom 1000 500 Peter 2000 1000 Scott 3000 1999 Bill 4000 5000 Gates 6000 |
還可以按照分割槽進行選擇:
SQL> select * from emp partition (e1); EMPNO ENAME SAL ---------- ------------------------------ ---------- 100 Tom 1000 500 Peter 2000 SQL> select * from emp partition (e2) EMPNO ENAME SAL ---------- ------------------------------ ---------- 1000 Scott 3000 1999 Bill 4000 SQL> select * from emp partition (e3) EMPNO ENAME SAL ---------- ------------------------------ ---------- 5000 Gates 6000 |
使用了分割槽,還可以單獨針對指定的分割槽進行truncate操作:
alter table emp truncate partition e2; |
2 對錶進行多列的範圍分割槽:
多列的範圍分割槽主要是基於表中多個列的值的範圍對資料進行分割槽,例如:
drop table emp; create table emp (empno number(4), ename varchar2(30), sal number, day integer not null, month integer not null) partition by range(month,day) (partition e1 values less than (5,1) tablespace emp1, partition e2 values less than (10,2) tablespace emp2, partition e3 values less than (maxvalue,maxvalue) tablespace emp3); SQL> insert into emp values (100,'Tom',1000,10,6); SQL> insert into emp values (200,'Peter',2000,3,1); SQL> insert into emp values (300,'Jane',3000,23,11); |
第二種 Hash分割槽:
hash分割槽最主要的機制是根據hash演算法來計算具體某條紀錄應該插入到哪個分割槽中,hash演算法中最重要的是hash函式,Oracle中如果你要使用hash分割槽,只需指定分割槽的數量即可。建議分割槽的數量採用2的n次方,這樣可以使得各個分割槽間資料分佈更加均勻。
具體例子如下:
drop table emp; create table emp ( empno number(4), ename varchar2(30), sal number) partition by hash (empno) partitions 8 store in (emp1,emp2,emp3,emp4,emp5,emp6,emp7,emp8); |
怎麼樣?很方便吧!
第三種 複合分割槽:
這是一種將前兩種分割槽綜合在一起使用的方法,例如:
drop table emp; create table emp ( empno number(4), ename varchar2(30), hiredate date) partition by range (hiredate) subpartition by hash (empno) subpartitions 2 (partition e1 values less than (to_date('20020501','YYYYMMDD')), partition e2 values less than (to_date('20021001','YYYYMMDD')), partition e3 values less than (maxvalue)); |
上面的例子中將僱員表先按照僱傭時間hiredate進行了範圍分割槽,然後再把每個分割槽分為兩個子hash分割槽。例子中一共將產生6個分割槽。
第四種 列表分割槽:
這是Oracle 9i的新特性,有了這種分割槽使得我們可以方便的按照值來將資料分為更小的片斷。
例如:
drop table emp; create table emp ( empno number(4), ename varchar2(30), location varchar2(30)) partition by list (location) (partition e1 values ('北京'), partition e2 values ('上海','天津','重慶'), partition e3 values ('廣東','福建')); |
這裡說明一下,列表分割槽不能有maxvalue,當你試圖insert列表中不存在的值的時候,Oracle會拒絕這條紀錄(ORA-14400)。
怎麼樣?看出列表分割槽很有用了吧?上面列出了Oracle9i中使用分割槽的四種方法,其中的例子很簡單,真正工作中具體使用那種分割槽方法要參考你的具體需求。
注:例子中使用的e1,e2,e3,e4等是分割槽名稱,emp1,emp2,emp3,emp4等是表空間名稱
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/35489/viewspace-84614/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 分割槽Partition
- 分割槽partition知識點
- 分割槽函式Partition By的基本用法函式
- Spark學習——分割槽Partition數Spark
- Oracle Partition 分割槽詳細總結Oracle
- Kafka分割槽分配策略(Partition Assignment Strategy)Kafka
- 使用parted建立大分割槽時 mkpart Warning: The resulting partition is not properly
- 分割槽函式partition by的基本用法【轉載】函式
- MySQL全面瓦解29:使用Partition功能實現水平分割槽MySql
- Oracle查詢Interval partition分割槽表內資料Oracle
- split 分割槽的簡單研究
- Hive中靜態分割槽和動態分割槽總結Hive
- [oracle] expdp 匯出分割槽表的分割槽Oracle
- Java中實現流的分割槽Java
- Partition|Disk Utility 如何分割磁碟
- Hive的靜態分割槽與動態分割槽Hive
- Linux分割槽方案、分割槽建議Linux
- WXS與JS使用的部分割槽別JS
- Linux下磁碟分割槽工具cfdisk的使用Linux
- windows11怎麼分割槽硬碟 win11硬碟分割槽大小方法介紹Windows硬碟
- Linux中什麼是分割槽?Linux分割槽有什麼好處?Linux
- PG的非分割槽表線上轉分割槽表
- 如何讓阿三 Windows 10、11 的恢復分割槽(Recovery Partition)恢復到 “蓋茨” 模式Windows模式
- oracle分割槽表和分割槽表exchangeOracle
- PostgreSQL/LightDB 分割槽表之分割槽裁剪SQL
- Laravel Query Builder 複雜查詢案例:子查詢實現分割槽查詢 partition byLaravelUI
- Linux 分割槽擴容(根分割槽擴容,SWAP 分割槽擴容,掛載新分割槽為目錄)Linux
- SQL Server大分割槽表沒有空分割槽的情況下如何擴充套件分割槽的方法SQLServer套件
- HGDB的分割槽表實現SQL Server的分割槽檢視SQLServer
- Python中的psutil使用簡介Python
- oracle 分割槽表move和包含分割槽表的lob moveOracle
- 移動分割槽表和分割槽索引的表空間索引
- Oracle分割槽表基礎運維-07增加分割槽(2 HASH分割槽)Oracle運維
- win10分割槽使用mbr好還是gpt好_win10系統gpt分割槽和mbr分割槽的區別Win10GPT
- MySQL的分割槽(一)MySql
- MySQL的分割槽(二)MySql
- linux的分割槽方法Linux
- Flink的分割槽策略
- oracle分割槽表和非分割槽表exchangeOracle