查看dba_tables數據字典時,可以發現有“DEGREE”字段,這個字段表示的就是數據表的并行度。這個參數的設置,關系著數據庫的I/O,以及sql的執行效率。
成都創新互聯專注為客戶提供全方位的互聯網綜合服務,包含不限于網站建設、網站制作、廣河網絡推廣、微信小程序開發、廣河網絡營銷、廣河企業策劃、廣河品牌公關、搜索引擎seo、人物專訪、企業宣傳片、企業代運營等,從售前售中售后,我們都將竭誠為您服務,您的肯定,是我們最大的嘉獎;成都創新互聯為所有大學生創業者提供廣河建站搭建服務,24小時服務熱線:18980820575,官方網址:m.newbst.com
并行度的優點就是能夠最大限度的利用機器的多個cpu資源,是多個cpu同時工作,從而達到提高數據庫工作效率的目的。在系統空閑時間,使用并行是個不錯的選擇,但是好東西總是相對而言,沒有絕對的好壞,不當的使用,同樣會引起數據庫的新的問題產生。
1、 此參數的大小設置
orcl@ SCOTT select table_name,degree from user_tables;
TABLE_NAME DEGREE
------------------------------ --------------------
T1 1
TAB_REGISTER 1
EMP 1
EMP_BAK 1
SALGRADE 1
BONUS 1
DEPT 1
LETTER_USER 1
T2 1
BASE_LOG 1
T 1
通過上例的例子大家可以觀察,此參數的默認值為1,這個數值,我們認為的增加,當設置表的并行度非常高的時候,sql優化器將可能對表進行全表掃描,引起 Direct Path Read 等待 。
在使用并行查詢前需要慎重考慮, 因為并行查詢盡管能提高程序的響應時間, 但是會
消耗比較多的資源。 對于低配置的數據庫服務器需要慎重。 此外, 需要確認并行度的設置要與 IO 系統的配置相符(建議并行度為 2~4 * CPU 數) 。
2、 并行度的修改
alter table t parallel(degree 1);------直接指定表的并行度
alter table t parallel; ----------設置表的并行度為default
3、 如何在sql語句中使用表的并行度,并選擇合適的并行等級
示例:使用并行查詢的執行計劃
并行度為4
orcl@ SCOTT SELECT /*+ PARALLEL(4) */
2 MAX(sal),
3 AVG(comm)
4 FROM emp,dept
5 WHERE emp.deptno=dept.deptno
6 GROUP BY 1
判斷并行度
合適的并行度DOP對于良好的并行性能很關鍵。Oracle會按如下方式設定DOP:
1、如果指定或請求了并行執行,但是沒有指定DOP,默認DOP會設置為該系統上CPU內核數量的兩倍。對于RAC系統,DOP值會是整個集群內核數量的兩倍。默認值是由配置參數“PARALLEL_ THREADS_PER_CPU”控制的。
2、對于Oracle 11g R2之后的版本,如果“ PARALLEL_DEGREE_POLICY”被設置為“AUTO”,Oracle將根據被執行的運行性質和涉及對象的大小自動調整DOP值。
3、如果“PARALLEL_ADAPTIVE_MULTI_USER”被設置為“TRUE”,Oracle將基于該系統的整個負載調整DOP。當系統承受更重的負載時,DOP值將會減少。
4、在Oracle 11g或者更高版本中,如果“PARALLEL_IO_CAP ”被設置為TRUE,Oracle將把DOP限制為IO子系統可以支持的值。這些IO子系統限制可以通過“DBMS_RESOURCE_ MANAGER.CALIBRATE_IO”存儲過程計算。
5、DOP可以被指定到表或者索引一級,可以通過在“CREATE TABLE”,“CREATE INDEX”,“ALTER TABLE”或者“ALTER INDEX”中使用“PARALLEL ”從句來實現。
6、“PARALLEL ”關鍵字可以被用來指定某個查詢中指定表的DOP。
7、不管任何其它設置,DOP不能超過“PARALLEL_MAX_SERVERS”可以支持的數量。對于大部分SQL語句,服務器數量需要是請求DOP的兩倍。
數據庫表空間的大小?
SQLselect tablespace_name,sum(bytes)/1024/1024 from dba_data_files
group by tablespace_name;
TABLESPACE_NAME SUM(BYTES)/1024/1024
一般表數據量比較大(超過100萬)時,可以使用parallel強制啟動并行度來提升查詢速度
用法:/*+parallel(table_short_name,cash_number)*/
可以加到insert、delete、update、select的后面來使用
比如:select /*+paralle(t,32)*/ from table t;?table_short_name使用別名,Parallel后面的數字,越大,執行效率越高,一般用8,10,12,16,32。不過,數值越大,占用的資源也會相對增大。如果在查詢where后的條件有加索引查詢效率會大大提高。
建索引時,我們為了建索引快,會加上并行,加上并行之后,此列索引就會是并行了。訪問有并行度的索引時,CBO可能可能會考慮并行執行,這可能會引發一些問題,如在服務器資源緊張的時候用并行會引起更加嚴重的爭用。當使用并行后,需要把并行度改回來。\x0d\x0aSQL drop table test purge;\x0d\x0aSQL create table test as select * from dba_objects;\x0d\x0aSQL create index ind_t_object_id on test(object_id) parallel 4 ;\x0d\x0aSQL select s.degree\x0d\x0afrom dba_indexes s\x0d\x0awhere s.index_name = upper('ind_t_object_id');\x0d\x0aDEGREE\x0d\x0a----------------------------------------\x0d\x0a4\x0d\x0a\x0d\x0aSQL alter index ind_t_object_id noparallel;\x0d\x0a\x0d\x0aSQL select s.degree\x0d\x0afrom dba_indexes s\x0d\x0awhere s.index_name = upper('ind_t_object_id');\x0d\x0aDEGREE\x0d\x0a----------------------------------------\x0d\x0a1
直接用hint即可。例如:
select /*+parallel(o2)*/* from t_objects o
其中o為要開啟并行的表的別名,2為并行度。
不過不一定會提升效率,一般查詢中使用parallel的情景如下:
需要大量的 表的掃描、連接或者分區索引掃描。
聚合操作(計數)。
當前題目:如何查oracle并行度 oracle表的并行度
文章出自:http://m.newbst.com/article10/hjhido.html
成都網站建設公司_創新互聯,為您提供域名注冊、面包屑導航、網站設計、網站導航、做網站、品牌網站設計
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯