91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Oracle并行查詢介紹以及測試效果

發布時間:2021-07-16 00:35:13 來源:億速云 閱讀:4943 作者:chen 欄目:大數據

這篇文章主要講解了“Oracle并行查詢介紹以及測試效果”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“Oracle并行查詢介紹以及測試效果”吧!

并行概念

所謂并行執行,是指能夠將一個大型串行任務(任何DML,一般的DDL)物理的劃分為叫多個小的部分,這些較小的部分可以同時得到處理。

何時使用并行執行:
1、必須有一個非常大的任務

2、必須有充足的資源(CPU,I/O,MEMORY)

并行查詢

并行查詢允許將一個SQL SELECT 語句劃分為多個較小的查詢,每個查詢并發的運行。最后將每個較小查詢得到的結果組合起來,得到最終結果。

啟動并行查詢幾種方式:
1、在查詢中使用一個hint提示:

select /*+ parallel(4)  */  count(*)  from test_a ;---指定一個并行度為4的并行查詢。
2、利用alter table修改表:

alter table test_a parallel 4;--告訴oracle,在創建這個表的執行計劃時,使用并行度4。

數據測試

昨天自己在PL/SQL里面自己做了一下測試,我們先看看,我的數據庫表里tskuplu表有24548條記錄。

首先我先用正常查詢的方法,查詢所有的出來后發現是103秒,如圖:

Oracle并行查詢介紹以及測試效果

然后我再用并行查詢的方法,設置為3進程后查詢,耗時85秒。如圖:

Oracle并行查詢介紹以及測試效果

到這時我瞬間覺得一下子節省了接近18秒的時候,覺得真不錯,不過我后來又用普通查詢再查一次的時候,也是80多秒,瞬間心情不好了。為了再驗證一下并行查詢,今天我又開始進行了一下測試。

我們今天先運行并行查詢看看效果,79秒。

Oracle并行查詢介紹以及測試效果

然后再執行了一下普通的查詢,結果時間也差不多,這里我就沒放圖,在想這個并行查詢是不是沒有執行的原因 ,于是我們就改了下另一種方式,把表結構修改了下,

Oracle并行查詢介紹以及測試效果

通過上面修改了表的自動并行查詢方法,我們直接用普通查詢看看查詢的效果,結果是97秒

Oracle并行查詢介紹以及測試效果

通過v$px_process查詢后發現并行也已經執行了,但是結果并不令人滿意。

Oracle并行查詢介紹以及測試效果

結論

通過上面的測試,我覺得可能我的測試機器也有一定的問題,所以來說并行查詢并沒有對查詢有實質性的提高,本來我覺得如果有實質性的提高,那樣我接下來要做的程序中可以考慮用并行查詢提出所有,再通過緩存處理,現在來看,還是用自己寫的分頁查詢來實現比較合適。

總結一下并行查詢的常見問題(摘自網上)

1、看看并行選件是否安裝
Select * FROM V$OPTION
where parameter like 'Parallel%';
看看
Parallel execution是不是TRUE


2、如果是TRUE,執行語句后查看
select * from V$pq_sesstat;
where name like '%Parallelized';

如果Queries Parallelized>>0就說明是執行了并行


3、可以強制使用PARALLEL,和CPU數量無關,不過在單個CPU下使用并行沒有什么好處
alter session force parallel query;


4、你是怎么知道語句沒有使用PARALLEL?
如果你用EXPLAIN ,那么有兩個腳本看執行計劃UTLXPLS.UTLXPLP前一個是看串行計劃的,后一個才能看到并行計劃,如果你使用SET AUTOTRACE,那么你如果看到P->S,那么說明計劃已經是并行的了。

1.與并行查詢有關的參數有哪些?

parallel_adaptive_multi_user boolean 
啟用或禁用一個自適應算法,旨在提高使用并行執行方式的多用戶環境的性能。通過按系統負荷自動降低請求的并行度,在啟動查詢時實現此功能。當 PARALLEL_AUTOMATIC_TUNING = TRUE 時,其效果最佳。 
TRUE | FALSE 如果 PARALLEL_AUTOMATIC_TUNING = TRUE,則該值為 TRUE;否則為 FALSE 

parallel_automatic_tuning boolean 
如果設置為 TRUE,Oracle 將為控制并行執行的參數確定默認值。除了設置該參數外,你還必須為系統中的表設置并行性。 TRUE | FALSE FALSE 

parallel_execution_message_size integer 
指定并行執行 (并行查詢、PDML、并行恢復和復制) 消息的大小。如果值大于 2048 或 4096,就需要更大的共享池。如果 PARALLEL_AUTOMATIC_TUNING =TRUE,將在大存儲池之外指定消息緩沖區。 
2148 - 無窮大。 如果 PARALLEL_AUTOMATIC_TUNING 為 FALSE,通常值為 2148;如果PARALLEL_AUTOMATIC_TUNING 為 TRUE ,則值為 4096 (根據操作系統而定)。

parallel_max_servers integer 
指定一個例程的并行執行服務器或并行恢復進程的最大數量。如果需要,例程啟動時分配的查詢服務器的數量將增加到該數量。 
0 -256 由 CPU_COUNT, PARALLEL_AUTOMATIC_TUNING 和 PARALLEL_ADAPTIVE_MULTI_USER 確定 

parallel_min_percent integer 
指定并行執行要求的線程的最小百分比。設置該參數,可以確保并行執行在沒有可用的恰當查詢從屬時,會顯示一個錯誤消息,并且該查詢會因此而不予執行。

parallel_min_servers integer 
指定為并行執行啟動例程后,Oracle 創建的查詢服務器進程的最小數量。 
0 - PARALLEL_MAX_SERVERS。

parallel_threads_per_cpu integer 
說明一個 CPU 在并行執行過程中可處理的進程或線程的數量,并優化并行自適應算法和負載均衡算法。如果計算機在執行一個典型查詢時有超負荷的跡象,應減小該數值 
任何非零值。 根據操作系統而定 (通常為 2) 

2.當前時刻有那些并行查詢在跑?
14:13:46 SQL> desc v$px_session
名稱 是否為空? 類型
----------------------------------------- -------- ------------------
SADDR RAW(4)
SID NUMBER
SERIAL# NUMBER
QCSID NUMBER
QCSERIAL# NUMBER
QCINST_ID NUMBER
SERVER_GROUP NUMBER
SERVER_SET NUMBER
SERVER# NUMBER
DEGREE NUMBER
REQ_DEGREE NUMBER

3.怎么才能讓查詢有并行執行?
如果建表時指定了并行度,例:
Create TABLE LI2.PAR_T
(
a VARCHAR2 (5)
)
PARALLEL 5;
那么對該表做全表掃描時就會并行
14:26:05 SQL> set autot on
14:26:11 SQL> select * from par_t;
未選定行
已用時間: 00: 00: 00.02
Execution Plan
----------------------------------------------------------
0 Select STATEMENT Optimizer=CHOOSE (Cost=1 Card=82 Bytes=328)
1 0 TABLE ACCESS* (FULL) OF 'PAR_T' (Cost=1 Card=82 Bytes=328) :Q6000

1 PARALLEL_TO_SERIAL Select /*+ NO_EXPAND ROWID(A1) */ A1."A" FRO
M "PAR_T" PX_GRANULE(0, BLOCK_RANGE,
如果該表沒有指定并行度,可以在查詢時用hint 實現,例:
select /*+ full(t) parallel(t,5) */ * from your_table t where ...;

4.為什么本該并行執行的查詢沒有并行執行呢?
系統的并行度由parallel_max_servers 決定,如果它的并行度為5.如果有一個并行度為5的查詢在跑,那么系統在這條查詢運行完成前是不能再跑并行查詢的,該并行查詢將會以非并行方式運行.

5如果有并行度低于系統最大并行數的查詢在跑,那接下來的并行查詢會怎么跑呢?
When you specify parallel degree 4 oracle tries to allocate 4 producer slaves and 4 consumer slaves. The producers can feed any of the consumers. 
If there are only 2 slaves available then we use these. 
If there is only 1 slave available then we go serial 
If there are none available then we use serial. 
If parallel_min_percent is set then we error ora 12827 instead of using a lower number of slaves or going serial

6.設定parallel_max_servers 多大為好?
在多CPU的環境中,一般把CPU-1或CPU的數量做個最大并行數,因為并行查詢運行時還需要一個進程協調各并行進程.對于單CPU沒什么好說的.

7.并行查詢能提高系統的性能嗎?
并行查詢運行時,很容易會使機器運行在高負荷下,令系統對其它事務的處理時間大大加長.并行查詢一般適合在非業務高峰值人工執行,并不適合在程序中指定運行并行查詢.
PINNER:
并行不等于快速,僅僅是適合在數據倉庫環境,低業務請求與低并發操作的時候
典型的OLTP系統,如果我們的系統,是絕對不允許并行查詢出現的。

感謝各位的閱讀,以上就是“Oracle并行查詢介紹以及測試效果”的內容了,經過本文的學習后,相信大家對Oracle并行查詢介紹以及測試效果這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

渭源县| 长顺县| 武山县| 璧山县| 三都| 和静县| 华宁县| 邓州市| 文登市| 河间市| 华阴市| 武汉市| 安远县| 平果县| 扬州市| 都安| 墨脱县| 德兴市| 英吉沙县| 桐城市| 万州区| 五河县| 渝中区| 凌源市| 龙口市| 城步| 始兴县| 广元市| 丰镇市| 灵璧县| 家居| 壤塘县| 都安| 茂名市| 扶绥县| 图木舒克市| 深水埗区| 定州市| 辽阳市| 青州市| 民县|