SQL并行產生進程數量問題

有一些數據庫性能問題可能是因為同時啟動的并行進程過多造成的,特別常見于RAC節點重啟,很多時候是因為瞬間啟動了幾百個并行進程,導致OS各項指標“彪高”,后臺進程失去響應。最近遇到的一個,是因為SQL語句中寫了/*+ parallel a,8*/? ,但是在RAC的兩個節點上各啟動了512個并行進程,一共啟動了1024個并行進程,導致網絡心跳丟失。因為問題可以通過執行這個語句重現,而使用parallel_force_local=true可以workaround這個問題,所以基本可以確定是跨節點并行導致的。

拋開這個問題背后的其他因素不談,我們單來討論一下:一條SQL語句究竟會產生多少個并行進程

一條SQL語句使用的并行度受3個層面的數值影響:

1)hint中指定的并行度

select /*+ parallel(a,8) */ * from scott.emp a order by ename;

2)表的并行度,也就是表的degree:

select owner,table_name,degree from dba_tables where table_name='EMP';

OWNER????????????????????????? TABLE_NAME???????????????????? DEGREE? ?

------------------------------ ------------------------------ ----------

SCOTT????????????????????????? EMP???????????????????????????????????? 2?

3)auto DOP

單節點:auto DOP = PARALLEL_THREADS_PER_CPU x CPU_COUNT

RAC:auto DOP = PARALLEL_THREADS_PER_CPU x CPU_COUNT x INSTANCE_COUNT

他們的優先級是hint>degree>auto DOP,也就是說:

1)如果hint指定了并行度,會忽略表的degree。

2)如果hint只指定parallel,不寫具體的數字,或者表上DEGREE顯示為DEFAULT,沒有具體數值(alter table scott.emp parallel不指定具體degree數值),則會使用auto DOP。

除此之外,還有以下一些規則:

1)如果表中有group by或者其他排序操作,以上并行度×2。

2)RAC中,并行度會自動平均分配到各個節點上,比如并行度256,2個節點,則每個節點上各起128個并行進程。

“并行度>parallel_max_servers”的判斷在各個節點上進行。

3)在PARALLEL_ADAPTIVE_MULTI_USER = TRUE 的情況下,會根據系統load(當前正在使用并行的用戶數),將并行度乘以一個衰減因子。

4)如果以上并行度>parallel_max_servers能夠提供的空閑并行進程數,則最終并行度=0,也就是不并行(不使用Pnnn的進程)。

舉一些例子來更詳細的說明它:

1)如果SQL中沒有使用hint,而表上degree=1則并行度=0;

2)如果SQL中沒有使用hint,而表上degree=DEFAULT 則并行度=PARALLEL_THREADS_PER_CPU x CPU_COUNT x INSTANCE_COUNT;

3)如果SQL中沒有使用hint,而表上degree>1 則并行度=表上degree;

4)如果SQL中使用沒有數值的hint(/*+ parallel */ ),無論表上degree的值是多少,并行度= PARALLEL_THREADS_PER_CPU x CPU_COUNT x INSTANCE_COUNT;

5)如果SQL中使用帶數值的hint(/*+ parallel (a,8)*/ or /*+ parallel (a 8)*/ ),無論表上degree的值是多少,并行度= hint中的數值(8);

6)如果有排序操作,以上并行度×2;

7)并行度分配到各個RAC節點,乘以衰減因子,如果最終并行度>parallel_max_servers能夠提供的空閑并行進程數,則并行度=0;

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/77119.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/77119.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/77119.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【Vue-組件】學習筆記

目錄 <<回到導覽組件1.項目1.1.Vue Cli1.2.項目目錄1.3.運行流程1.4.組件的組成1.5.注意事項 2.組件2.1.組件注冊2.2.scoped樣式沖突2.3.data是一個函數2.4.props詳解2.5.data和prop的區別 3.組件通信3.1.父子通信3.1.1.父傳子&#xff08;props&#xff09;3.1.2.子傳父…

【Kafka基礎】單機安裝與配置指南,從零搭建環境

學習Kafka&#xff0c;掌握Kafka的單機部署是理解其分布式特性的第一步。本文將手把手帶你完成Kafka單機環境的安裝、配置及基礎驗證&#xff0c;涵蓋常見問題排查技巧。 1 環境準備 1.1 系統要求 操作系統&#xff1a;CentOS 7.9依賴組件&#xff1a;JDK 8&#xff08;Kafka …

OpenCV 圖形API(21)逐像素操作

操作系統&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 編程語言&#xff1a;C11 算法描述 在OpenCV的G-API模塊中&#xff0c;逐像素操作指的是對圖像中的每個像素單獨進行處理的操作。這些操作可以通過G-API的計算圖&#xff08;Graph …

CubeMX配置STM32VET6實現網口通信(無操作系統版-附源碼)

下面是使用CubeMX配置STM32F407VET6,實現以太網通訊(PHY芯片為LAN8720)的具體步驟總結: 一、硬件連接方式: 硬件原理圖: 使用外部晶振為PHY芯片提供時鐘。 STM32F407VET6 與 LAN8720 采用 RMII 模式連接。STM32F407VET6引腳功能(RMII)LAN8720引腳PA1ETH_REF_CLKREF_CL…

Android Compose 中獲取和使用 Context 的完整指南

在 Android Jetpack Compose 中&#xff0c;雖然大多數 UI 組件不再需要直接使用 Context&#xff0c;但有時你仍然需要訪問它來執行一些 Android 平臺特定的操作。以下是幾種在 Compose 中獲取和使用 Context 的方法&#xff1a; 1. 使用 LocalContext 這是 Compose 中最常用…

在VMware下Hadoop分布式集群環境的配置--基于Yarn模式的一個Master節點、兩個Slaver(Worker)節點的配置

你遇到的大部分ubuntu中配置hadoop的問題這里都有解決方法&#xff01;&#xff01;&#xff01;&#xff08;近10000字&#xff09; 概要 在Docker虛擬容器環境下&#xff0c;進行Hadoop-3.2.2分布式集群環境的配置與安裝&#xff0c;完成基于Yarn模式的一個Master節點、兩個…

PID燈控算法

根據代碼分析&#xff0c;以下是針對PID算法和光敏傳感器系統的優化建議&#xff0c;分為算法優化、代碼結構優化和系統級優化三部分&#xff1a; 一、PID算法優化 1. 增量式PID 輸出平滑 // 修改PID計算函數 uint16_t PID_calculation_fun(void) {if(PID_Str_Val.Tdata >…

文件映射mmap與管道文件

在用戶態申請內存&#xff0c;內存內容和磁盤內容建立一一映射 讀寫內存等價于讀寫磁盤 支持隨機訪問 簡單來說&#xff0c;把磁盤里的數據與內存的用戶態建立一一映射關系&#xff0c;讓讀寫內存等價于讀寫磁盤&#xff0c;支持隨機訪問。 管道文件&#xff1a;進程間通信機…

在 Java 中調用 ChatGPT API 并實現流式接收(Server-Sent Events, SSE)

文章目錄 簡介OkHttp 流式獲取 GPT 響應通過 SSE 流式推送前端后端代碼消息實體接口接口實現數據推送給前端 前端代碼創建 sseClient.jsvue3代碼 優化后端代碼 簡介 用過 ChatGPT 的伙伴應該想過自己通過調用ChatGPT官網提供的接口來實現一個自己的問答機器人&#xff0c;但是…

硬盤分區格式之GPT(GUID Partition Table)筆記250407

硬盤分區格式之GPT&#xff08;GUID Partition Table&#xff09;筆記250407 GPT&#xff08;GUID Partition Table&#xff09;硬盤分區格式詳解 GPT&#xff08;GUID Partition Table&#xff09;是替代傳統 MBR 的現代分區方案&#xff0c;專為 UEFI&#xff08;統一可擴展固…

Vite環境下解決跨域問題

在 Vite 開發環境中&#xff0c;可以通過配置代理來解決跨域問題。以下是具體步驟&#xff1a; 在項目根目錄下找到 vite.config.js 文件&#xff1a;如果沒有&#xff0c;則需要創建一個。配置代理&#xff1a;在 vite.config.js 文件中&#xff0c;使用 server.proxy 選項來…

交換機與ARP

交換機與 ARP&#xff08;Address Resolution Protocol&#xff0c;地址解析協議&#xff09; 的關系主要體現在 局域網&#xff08;LAN&#xff09;內設備通信的地址解析與數據幀轉發 過程中。以下是二者的核心關聯&#xff1a; 1. 基本角色 交換機&#xff1a;工作在 數據鏈…

【Spring】小白速通AOP-日志記錄Demo

這篇文章我將通過一個最常用的AOP場景-方法調用日志記錄&#xff0c;帶你徹底理解AOP的使用。例子使用Spring BootSpring AOP實現。 如果對你有幫助可以點個贊和關注。謝謝大家的支持&#xff01;&#xff01; 一、Demo實操步驟&#xff1a; 1.首先添加Maven依賴 <!-- Sp…

git功能點管理

需求&#xff1a; 功能模塊1 已經完成&#xff0c;已經提交并推送到遠程&#xff0c;準備交給測試。功能模塊2 已經完成&#xff0c;但不提交給測試&#xff0c;繼續開發。功能模塊3 正在開發中。 管理流程&#xff1a; 創建并開發功能模塊1&#xff1a; git checkout main…

QGIS實戰系列(六):進階應用篇——Python 腳本自動化與三維可視化

歡迎來到“QGIS實戰系列”的第六期!在前幾期中,我們從基礎操作到插件應用逐步提升了 QGIS 技能。這一篇,我們將邁入進階領域,探索如何用 Python 腳本實現自動化,以及如何創建三維可視化效果,讓你的 GIS 項目更高效、更立體。 第一步:Python 腳本自動化 QGIS 內置了 Py…

高德地圖 3D 渲染-區域紋理圖添加

引入-初始化地圖&#xff08;關鍵代碼&#xff09; // 初始化頁面引入高德 webapi -- index.html 文件 <script src https://webapi.amap.com/maps?v2.0&key您申請的key值></script>// 添加地圖容器 <div idcontainer ></div>// 地圖初始化應該…

ffmpeg視頻轉碼相關

ffmpeg視頻轉碼相關 簡介參數 實戰舉栗子獲取視頻時長視頻轉碼mp4文件轉為hls m3u8 ts等文件圖片轉視頻抽取視頻第一幀獲取基本信息 轉碼日志輸出詳解轉碼耗時測試 簡介 FFmpeg 是領先的多媒體框架&#xff0c;能夠解碼、編碼、 轉碼、復用、解復用、流、過濾和播放 幾乎所有人…

【ISP】HDR技術中Sub-Pixel與DOL的對比分析

一、原理對比 Sub-Pixel&#xff08;空間域HDR&#xff09; ? 核心機制&#xff1a;在單個像素內集成一大一小兩個子像素&#xff08;如LPD和SPD&#xff09;&#xff0c;利用其物理特性差異&#xff08;靈敏度、滿阱容量&#xff09;同時捕捉不同動態范圍的信號。 ? 大像素&…

Vulnhub-IMF靶機

本篇文章旨在為網絡安全滲透測試靶機教學。通過閱讀本文&#xff0c;讀者將能夠對滲透Vulnhub系列IMF靶機有一定的了解 一、信息收集階段 靶機下載地址&#xff1a;https://www.vulnhub.com/entry/imf-1,162/ 因為靶機為本地部署虛擬機網段&#xff0c;查看dhcp地址池設置。得…

Linux內核中TCP協議棧的實現:tcp_close函數的深度剖析

引言 TCP(傳輸控制協議)作為互聯網協議族中的核心協議之一,負責在不可靠的網絡層之上提供可靠的、面向連接的字節流服務。Linux內核中的TCP協議棧實現了TCP協議的全部功能,包括連接建立、數據傳輸、流量控制、擁塞控制以及連接關閉等。本文將深入分析Linux內核中tcp_close…