日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

oracle sql 分区查询语句_Oracle 分区概述

發布時間:2025/3/15 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 oracle sql 分区查询语句_Oracle 分区概述 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一. 概念

分區是將一個表或者索引物理地分解成多個更小的部分。對于訪問數據庫的應用來看,邏輯上看只有一個表或者索引,因為訪問和普通表或索引一模一樣。但物理上這個表可能被分成了數十個獨立的分區,每一個分區都是獨立的對象,可以獨自處理。

二. 如何區分數據

分區主要有利于非常大的表和索引,將一個大表或者索引分成很多獨立的小部分更容易進行處理。那么按照什么樣的規則將數據進行分區?換言之,你怎么知道這條數據放A分區,那條數據放B分區。oracle中是根據分區鍵決定的,分區鍵有可能是通過某一個函數算出來的。

三. 分區的好處

1. 提高數據的可用性

這個很容易理解,數據被分成了多個獨立的部分,假如某一分區的數據出現問題,不會影響整個數據的訪問。因為假如我這次訪問的數據不在這個問題分區,還是可以正常執行。

為了展示這種可用性的提高,我們將建立一個散列分區表,其中有兩個分區,分別在單獨的表空間中。這里將創建一個EMP表,它在EMPNO列上指定了一個分區鍵(EMPNO就是我們的分區鍵)SQL如下:

create table emp

(empno int,

ename varchar2(20)

)

partition by hash(empno)

(partition part_1 tablespace nnc_data01,

partition part_2 tablespace nnc_data02

);

insert into emp select empno, ename from scott.emp;

select * from emp partition(part_1);

select * from emp partition(part_2);

我們會看到最后兩個查詢會查到兩個分區都有數據,而且數據是隨機地分布在每個分區上,沒有什么規律。這主要采用的是散列分區方式,通過計算empno的散列值來確定將數據放在哪個分區。接著運行如下sql語句:

alter tablespace p1 offline;

select * from emp;

variable n number

exec :n := 7844;

select * from emp where empno = :n;

我們會看到最后一條查詢語句能夠執行成功,第二條查詢語句執行失敗。因為第二條查詢語句需要訪問分區p1,但是p1已經不可訪問。最后一條查詢語句只要訪問p2分區,故p1分區可以不可以訪問不會影響它的執行。

另外,分區還可以通過減少停機時間來提高可用性。例如,如果有一個100GB的表,它劃分為50個2GB的分區,這樣就能更快地從錯誤中恢復。如果某個2GB的分區遭到破壞,現在恢復的時間就只是恢復一個2GB分區所需的時間,而不是恢復一個100GB表的時間。

2. 減少管理負擔

這是因為與在一個大對象上執行操作相比,在小對象上執行同樣的操作從本質上講更為容易、速度更快,而且占用的資源也更少。

例如,假設數據庫中有一個10GB的索引。如果需要重建這個索引,而該索引未分區,你就必須將整個10GB的索引作為一個工作單元來重建。盡管可以在線地重建索引,但是要完全重建完整的10GB索引,還是需要占用大量的資源。至少需要在某處有10GB的空閑存儲空間來存放兩個索引的副本,還需要一個臨時事務日志表來記錄重建索引期間對基表所做的修改。另一方面,如果將索引本身劃分為10個1GB的分區,就可以一個接一個地單獨重建各個索引分區。現在只需要原先所需空閑空間的10%。另外請考慮以下情況:10GB索引的重建即將完成之前,如果出現系統或軟件故障會發生什么。我們所做的全部努力都會付諸東流。如果把問題分解,將索引劃分為1GB的分區,你最多只會丟掉重建工作的10%。

3. 改善語句性能

分區最后一個好處體現在改進語句(SELECT、INSERT、UPDATE、DELETE、MERGE)的性能方面。我們來看兩類語句,一種是修改信息的語句,另一種是只讀取信息的語句。

1. 并行的修改語句(DML)

修改數據庫中數據的語句有可能會執行并行DML(parallel DML,PDML)。采用PDML時,Oracle使用多個線程或進程來執行INSERT、UPDATE或DELETE, 而不是執行一個串行進程。在一個有充足I/O帶寬的多CPU主機上,對于大規模的DML操作,速度的提升可能相當顯著。在Oracle9i以前的版本中,PDML要求必須分區。如果你的表沒有分區,在先前的版本中就不能并行地執行這些操作。后續版本放開了限制。

2. 查詢性能

假如分區了,我們只需要查詢感興趣的分區,不感興趣的分區就不查了,顯然能提高查詢速度

分享到:

2012-10-30 16:34

瀏覽 811

分類:數據庫

評論

總結

以上是生活随笔為你收集整理的oracle sql 分区查询语句_Oracle 分区概述的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。