中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

Orcle怎么增強并行語句隊列

發布時間:2022-10-21 14:48:34 來源:億速云 閱讀:144 作者:iii 欄目:關系型數據庫

這篇文章主要介紹“Orcle怎么增強并行語句隊列”的相關知識,小編通過實際案例向大家展示操作過程,操作方法簡單快捷,實用性強,希望這篇“Orcle怎么增強并行語句隊列”文章能幫助大家解決問題。

1 說明

Enhancing parallel statement queuing provides more flexibility to address business requirements for mission-critical environments.

增強并行語句隊列提供了更多的靈活性,以滿足任務關鍵環境的業務需求。

When the parameter PARALLEL_DEGREE_POLICY is set to AUTO, Oracle Database queues SQL statements that require parallel execution if the necessary number of parallel execution server processes are not available. After the necessary resources become available, the SQL statement is dequeued and allowed to execute. The default dequeue order is a simple first in, first out queue based on the time a statement was issued.

  • 1.解析SQL并自動決定DOP(degree of parallelism)

  • 2.檢查是否有足夠的并行資源(PARALLEL_SERVERS_TARGET當前環境默認值16)–不能超過PARALLEL_MAX_SERVERS大小

  • a.如果有(可用并行資源大于當前SQL所需的),并且前面沒有正在執行的SQL,那么就會執行該SQL

  • b.如果沒有(可用并行資源小于當前SQL所需的),則會排隊等待有足夠的資源來執行該SQL。

如果發生語句排隊等待現象,那么會以等待事件:resmgr:pq queued表現出來。

2 使用hint管理Parallel Statement Queuing

在PARALLEL_DEGREE_POLICY 為AUTO情況下,使用NO_STATEMENT_QUEUING 和STATEMENT_QUEUING來影響語句是否使用Parallel Statement Queuing隊列。

2.1 NO_STATEMENT_QUEUING

使用NO_STATEMENT_QUEUING會使語句繞過parallel statement queue。但是這可能會超過PARALLEL_SERVERS_TARGET指定的最大并行執行數。

如:

SELECT /*+ NO_STATEMENT_QUEUING */ last_name, department_name
  FROM employees e, departments d
  WHERE e.department_id = d.department_id;

2.2 STATEMENT_QUEUING

STATEMENT_QUEUING HINT讓SQL語句使用parallel statement queue,但是只有在可以在并行進程足夠的時才運行。在啟用隊列之前,可用的并行執行服務器的數量等于在使用的并行執行服務器數量和系統中允許的最大數量之間的差,是有PARALLEL_SERVERS_TARGET參數定義的。

如:

SELECT /*+ STATEMENT_QUEUING */ last_name, department_name
  FROM employees e, departments d
  WHERE e.department_id = d.department_id;

3 PARALLEL_SERVERS_TARGET設置

PARALLEL_SERVERS_TARGET參數默認值不是固定不變的,而是有公式計算而來的。

公式:PARALLEL_THREADS_PER_CPU * CPU_COUNT * concurrent_parallel_users * 2

如:當前我的環境

PARALLEL_THREADS_PER_CPU = 2

SQL> show parameter PARALLEL_THREADS_PER_CPU
NAME       TYPE VALUE
------------------------------------ ----------------------
parallel_threads_per_cpu       integer  2


CPU_COUNT = 1

SQL> show parameter CPU_COUNT
NAME       TYPE VALUE
------------------------------------ ----------------------
cpu_count      integer  1

concurrent_parallel_users參數值分為三種情況:

  • 1.如果設置了MEMORY_TARGET或SGA_TARGET,那么concurrent_parallel_users=4

  • 2.如果沒有設置MEMORY_TARGET或SGA_TARGET,并且也設置了PGA_AGGREGATE_TARGE的大小,那么concurrent_parallel_users=2

  • 3.如果沒有設置PGA_AGGREGATE_TARGE的大小,那么concurrent_parallel_users=1

當前環境:屬于第一種情況,設置了MEMORY_TARGET,因為沒有設置PGA_AGGREGATE_TARGET。所以不滿足第二章情況

SQL> show parameter MEMORY_TARGET
NAME       TYPE     VALUE
------------------------------------ ---------------------- ------------------------------
memory_target      big integer      1G

SQL> show parameter SGA_TARGET
NAME       TYPE     VALUE
------------------------------------ ---------------------- ------------------------------
sga_target       big integer      0

SQL> show parameter PGA_AGGREGATE_TARGET
NAME       TYPE     VALUE
------------------------------------ ---------------------- ------------------------------
pga_aggregate_target       big integer      0

SQL> show parameter PARALLEL_SERVERS_TARGET
NAME       TYPE     VALUE
------------------------------------ ---------------------- ------------------------------
parallel_servers_target      integer      16

所以,PARALLEL_SERVERS_TARGET= 2 * 1 *4 * 2 = 16,和查詢出來的結果一致。

3.1 修改參數值

只能在CDB中的system級別修改,大小0到PARALLEL_MAX_SERVERS之間,重啟生效

SQL> alter system set parallel_servers_target = 17 scope = spfile;
System altered.

SQL> startup force
ORACLE instance started.

Total System Global Area 1073741824 bytes
Fixed Size      8801008 bytes
Variable Size  1023411472 bytes
Database Buffers     37748736 bytes
Redo Buffers      3780608 bytes
Database mounted.
Database opened.

SQL> show parameter PARALLEL_SERVERS_TARGET
NAME       TYPE     VALUE
------------------------------------ ---------------------- ------------------------------
parallel_servers_target      integer      17

關于“Orcle怎么增強并行語句隊列”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識,可以關注億速云行業資訊頻道,小編每天都會為大家更新不同的知識點。

向AI問一下細節

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

AI

富锦市| 子长县| 焦作市| 宣威市| 龙陵县| 安化县| 新巴尔虎右旗| 桐柏县| 读书| 金华市| 乡城县| 长岛县| 织金县| 抚松县| 宁远县| 汉阴县| 新竹县| 临西县| 兴国县| 黄冈市| 沙坪坝区| 商洛市| 拜泉县| 都匀市| 玛多县| 平凉市| 澄江县| 石阡县| 凤阳县| 凤台县| 建瓯市| 克什克腾旗| 长岭县| 霍城县| 慈利县| 兴安盟| 安龙县| 玛纳斯县| 会理县| 兴隆县| 桐城市|