<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      parallel index

      select * from tablename tb
      為提高查詢效率,可使用一下方法:
      (1)并行查詢:/*+ parallel(tb,32) * /

      select /*+ parallel(tb,32) */ count(*) from leo1 tb;

      (2)強制走索引:/*+ index(tb, indexname) */

      select /*+ parallel(tb, idx_tb$clear) */ count(*) from leo1 tb;

      一、Hint
      /* */在Oracle中是hint

      Hint 使用規則及注意事項
      1、hint 其實是一種注釋,如果目標 SQL 的文本出現了 hint,則優化器會選擇 hint 的執行計劃,而不會考慮最優的執行計劃,但前提是這個 HINT 是可選的執行計劃之一。

      2、hint 的用法:必須緊隨關鍵字 select、insert、update,delete 后,hint 中第一個星號和加號之間不能有空格,一般寫法 /*+ gather_plan_statistics */,如果有兩個 hint,用空格隔開。hint 中指定具體對象時,不能帶上該對象所在 schema 的名稱。即使該 sql 文本中已經有對應的 schema的名稱。

      在 hint 中指定具體表名時,如果該表在對應 sql 文本中有別名,則應該使用該表的別名。oracle 數據庫中的query block 是指一個語義上完整的查詢語句,hint 生效范圍僅限于它本身所在的 query block。如果一個語句有子查詢,那么主查詢的 hint 只能作用于主查詢,如果想讓 Hint 作用于子查詢,那么 hint 要加在子查詢上。

      舉例:/*+ full(table_name)*/ 表示查詢表table_name時強制使用全表掃描,強制表掃描也是避免使用索引的一個方法

      SQL>Select /*+full(a)*/ * from t a; -- 使用 hint
      SQL>Select /*+full(t) */ * from t a; --不使用 hint,失效
      AI運行代碼
      sql
      參考資料:Oracle Hint 語法詳解-CSDN博客

      二、強制走索引:/*+ index(tb, indexname) */
      Oracle性能分析8:使用索引_oracle parallel index-CSDN博客

      三、并行查詢:/*+ parallel(tb,32) * /
      3.1 并行概念
      并行執行(parallel execution)是Oracle企業版才有的特性(標準版中沒有這個特性),指能夠將一個大型串行任務(任何DML,或者一般的DDL)物理地劃分為多個較小的部分,這些較小的部分可以同時得到處理。

      并行包括:

      并行查詢:這是指能使用多個操作系統進程或線程來執行一個查詢。Oracle會發現能并行執行的操作(如全表掃描或大規模排序),并創建一個查詢計劃來實現)。
      并行DML(PDML):這在本質上與并行查詢很相似,但是PDML主要是使用并行處理來執行修改(INSERT、UPDATE、DELETE和MERGE)。
      并行DDL:并行DDL是指Oracle能并行地執行大規模的DDL操作。例如,索引重建、創建一個新索引、數據加載以及大表的重組等都可以使用并行處理。
      并行恢復:這是指數據庫能并行地執行實例(甚至介質)恢復,以減少從故障恢復所需的時間。
      過程并行化:這是指能并行地運行所開發的代碼。
      3.2 何時使用并行
      在應用并行執行之前,需要保證以下兩點成立:

      必須有一個非常大的任務,如對50GB數據進行全面掃描。
      必須有足夠的可用資源(CPU、I/O、內存)。在并行全面掃描50GB數據之前,你要確保有足夠的空閑CPU(以容納并行進程),還要有足夠的I/O通道。
      如果只有一個小任務(通常OLTP系統中執行的查詢就是這種典型的小任務),或者你的可用資源不足(這也是OLTP系統中很典型的情況),其中CPU和I/O資源通常已經得到最大限度的使用,那就根本不用考慮并行執行。

      如果一個任務只需要幾秒(或更短時間)就能串行地完成,引入并行執行后,相關的管理開銷可能會讓整個過程花費更長的時間。

      舉例如,寫一頁文檔若12個人來寫,需要開會分段等,可能并不如一個人來寫更快。而如果寫1200頁,12個人寫需要的時間只為原來的1/12,就算分配任務可能也就1/12,還是比一個人寫要快多了。

      3.3 并行查詢
      并行查詢允許將一個SQL SELECT語句劃分為多個較小的查詢,每個部分的查詢并發地運行,然后會將各個部分的結果組合起來,提供最終的答案。

      在并行進程和掃描文件之間并不存在1對1映射,可以多個進程掃描同一個文件。

      各個并行進程可稱為并行執行服務器(parallel execution server),有時也稱為并行查詢(parallel query,PQ)從屬進程。各個并行執行服務器都是單獨的會話,就像是專業服務器進程一樣連接數據庫。每個并行執行服務器分別負責掃描表中一個部分(各個部分都不重疊),匯總其結果子集,將其輸出發回給協調服務器(即原始會話的服務器進程),它再將這些子結果匯總為最終答案。

      在默認情況下,Oracle是不啟用并行查詢的。啟用并行查詢有多種方法,可以直接在查詢中使用一個提示,或者修改表要求考慮并行執行路徑等。

      3.3.1 并行查詢方法
      1.暗示hints式 臨時有效 >>> 常用

      select /*+ parallel(leo1, 2) */ count(*) from leo1;

      2.alter table對象式, 直接修改對象屬性 長期有效

      alter table leo1 parallel 4; 定義leo1表并行度為4

      3.alter session會話式,會話生命周期有效

      alter session force parallel query parallel 4; 強制定義并行度為4

      4.并行DDL式,會話生命周期有效

      并行查詢和并行DDL可以無障礙使用并行,如果想使用并行DML,就需要啟動會話DML并行功能

      alter session enable parallel dml;

      對于前兩種方式,若省略num則Oracle將自動根據負載確定并行度。并行度要隨著系統上工作負載的增減而變化。如果有充足的空閑資源,并行度會上升;如果可用資源有限,并行度則會下降。這樣就不會為機器強加一個固定的并行度。利用這種方法,允許Oracle動態地增加或減少查詢所需的并發資源量。

      參加:Oracle并行詳解_oracle 并行-CSDN博客

      3.3.2 parallel-hints式語法
      /*+parallel(table_short_name,cash_number)*/

      /*+ parallel(leo1,2) parallel(leo2,2) parallel(leo3,2) ……*/ 后面同理延續

      select /*+parallel(table_name num)*/ count(*) from table_name;

      -- 多表關聯時多表并行:
      select /*+parallel(tb1,num1) parallel(tb2,num2)*/ count(*) from table_name1 tb1, table_name2 tb2;
      AI運行代碼
      sql
      3.3.3 使用前需考慮&確認點
      3.3.3.1考慮點
      基于并行查詢要啟動并行進程、分配任務與系統資源、合并結果集,都是比較消耗硬件資源的,優化時通常在邏輯上沒有明顯進步空間才使用硬件優化方式,故啟用Parallel前應該考慮:
      1、當前數據庫設備有充足硬件資源;
      2、查詢表的數據量很大,超過一千萬,可通過改變Parallel明顯提高效率;
      3、系統的當前負載較低,執行任務時不影響其它業務的使用。

      3.3.3.2 確認點
      使用前我們需要看我們的電腦有幾個cpu,并且每個cpu能夠并行的線程數。

      并行度:就是oracle在進行并行處理時,會啟動幾個并行服務進程來同時處理數據,注意看看數據需要幾步處理,每一步都啟n個進程而不是只啟n個進程

      并行度設定:一般來講一個CPU內核可以支撐一個并行度,一臺多核服務器中通常采用CPU核數50%來設定并行度,余下的CPU處理其他程序

      并行度與硬件關系密切,同樣并行度在不同硬件上體現的效果是截然不同的

      并行度與并發數關系:總并行數=并行度*并發數,當并行度確立后,并發數越多總并行數越高

      參見資料:[轉]Oracle 并行原理與示例總結

      查看Oracle能利用的最大并行度:
      SQL> show parameters cpu
      NAME TYPE VALUE
      ------------------------------------ ----------- ------------------------------
      cpu_count integer 80
      parallel_threads_per_cpu integer 2
      resource_manager_cpu_allocation integer 80
      AI運行代碼
      sql
      1.cpu_count表示cpu數
      2.parallel_threads_per_cpu表示每個cpu允許的并行進程數
      3.default情況下,并行數為cpu_count*parallel_threads_per_cpu
      ————————————————
      版權聲明:本文為CSDN博主「猿藝」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
      原文鏈接:https://blog.csdn.net/m0_52561535/article/details/141459660

      posted @ 2025-09-22 13:42  shu'sblog  閱讀(20)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 免费久久人人香蕉av| 亚洲精品久久久久国色天香| 色欲av亚洲一区无码少妇| 人妻丰满熟妇av无码区| 久久这里只有精品首页| 国产成人永久免费av在线 | 色综合久久婷婷88| 少妇人妻系列无码专区视频| 国产精品女人毛片在线看| 成人国产精品中文字幕| 国产明星精品无码AV换脸 | 久青草精品视频在线观看| 亚洲国产成人精品女人久久久| 日本人妻巨大乳挤奶水免费| 色翁荡熄又大又硬又粗又视频| 国产一区二区不卡在线视频| 依依成人精品视频在线观看| 国产永久免费高清在线观看| 日本乱码在线看亚洲乱码| 亚洲天堂伊人久久a成人| 国产精品自拍中文字幕| 秋霞av鲁丝片一区二区| 国产精品黄色精品黄色大片| 人妻av无码系列一区二区三区| 无码国模国产在线观看免费| 久久久久人妻精品一区三寸 | 色av综合av综合无码网站| 国产一区二区三区我不卡| 亚洲一区二区精品偷拍| 成人国产片视频在线观看| 国产色悠悠视频在线观看| 狠狠色噜噜狠狠狠狠av不卡| 国产在线国偷精品产拍| 铜鼓县| 欧洲中文字幕国产精品| 美女自卫慰黄网站| 国产精品国产精品偷麻豆| 亚洲AV永久纯肉无码精品动漫| 无码人妻斩一区二区三区| 精品无码国产日韩制服丝袜| 国产精品亚洲二区在线播放|