好湿?好紧?好多水好爽自慰,久久久噜久噜久久综合,成人做爰A片免费看黄冈,机机对机机30分钟无遮挡

主頁 > 知識庫 > Oracle 12CR2查詢轉換教程之cursor-duration臨時表詳解

Oracle 12CR2查詢轉換教程之cursor-duration臨時表詳解

熱門標簽:安陽外呼系統免費 400電話是不是免費申請 濟南地圖標注公司 圖像地圖標注 分布式呼叫中心 海南400電話哪里辦理 貴陽電話外呼系統哪家好 呼倫貝爾智能手機地圖標注 南寧人工智能電銷機器人費用

前言

在Oracle12C中為了物化查詢的中間結果,Oracle數據庫在查詢編譯時在內存中可能會隱式的創建一個cursor_duration臨時表。

下面話不多說了,來一起看看詳細的介紹吧

Cursor-Duration臨時表的作用

復雜查詢有時會處理相同查詢塊多次,這將會增加不必要的性能開鎖。為了避免這種問題,Oracle數據庫可以在游標生命周期內為查詢結果創建臨時表并存儲在內存中。對于有with子句查詢,星型轉換與分組集合操作的復雜操作,這種優化增強了使用物化中間結果來優化子查詢。在這種方式下,cursor-duration臨時表提高了性能并且優化了I/O。

Cursor-Duration臨時表工作原理

cursor-definition臨時表定義內置在內存中。表定義與游標相關,并且只對執行游標的會話可見。當使用cursor-duration臨時表時,數據庫將執行以下操作:

1.選擇使用cursor-duration臨時表的執行計劃

2.創建臨時表時使用唯一名

3.重寫查詢引用臨時表

4.加載數據到內存中直到沒有內存可用,在這種情次品下將在磁盤上創建臨時段

5.執行查詢,從臨時表中返回數據

6.truncate表,釋放內存與任何磁盤上的臨時段

注意,cursor-duration臨時表的元數據只要cursor在內存中就會一直存在于內存中。元數據不會存儲在數據字典中這意味著通過數據字典視圖將不能查詢到,不能顯性地刪除元數據。上面的場景依賴于可用的內存。對于特定查詢,臨時表使用PGA內存。

cursor-duration臨時表的實現類似于排序。如果沒有可用內存,那么數據庫將把數據寫入臨時段。對于cursor-duration臨時表,主要差異如下:

.在查詢結束時數據庫釋放內存與臨時段而不是當row source不現活動時釋放。

.內存中的數據仍然存儲在內存中,不像排序數據可能在內存與臨時段之間移動。

當數據庫使用cursor-duration臨時表時,關鍵字cursor duration memory會出現在執行計劃中。

cursor-duration臨時表使用場景

一個with查詢重復相同子查詢多次可能有時使用cursor-duration臨時表性能更高,下面的查詢使用一個with子句來創建三個子查詢塊:

SQL> set long 99999
SQL> set linesize 300
SQL> with
 2 q1 as (select department_id, sum(salary) sum_sal from hr.employees group by
 3 department_id),
 4 q2 as (select * from q1),
 5 q3 as (select department_id, sum_sal from q1)
 6 select * from q1
 7 union all
 8 select * from q2
 9 union all
 10 select * from q3;

DEPARTMENT_ID SUM_SAL
------------- ----------
   100  51608
   30  24900
     7000
   90  58000
   20  19000
   70  10000
   110  20308
   50  156400
   80  304500
   40  6500
   60  28800
   10  4400
   100  51608
   30  24900
     7000
   90  58000
   20  19000
   70  10000
   110  20308
   50  156400
   80  304500
   40  6500
   60  28800
   10  4400
   100  51608
   30  24900
     7000
   90  58000
   20  19000
   70  10000
   110  20308
   50  156400
   80  304500
   40  6500
   60  28800
   10  4400

36 rows selected.

下面是優化轉換后的執行計劃

SQL> select * from table(dbms_xplan.display_cursor(format=>'basic +rows +cost'));

PLAN_TABLE_OUTPUT
----------------------------------------------------------------------------------------------------
EXPLAINED SQL STATEMENT:
------------------------
with q1 as (select department_id, sum(salary) sum_sal from hr.employees
group by department_id), q2 as (select * from q1), q3 as (select
department_id, sum_sal from q1) select * from q1 union all select *
from q2 union all select * from q3

Plan hash value: 4087957524

----------------------------------------------------------------------------------------------------
| Id | Operation        | Name      | Rows | Cost (%CPU)|

PLAN_TABLE_OUTPUT
----------------------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT       |       |  |  6 (100)|
| 1 | TEMP TABLE TRANSFORMATION    |       |  |   |
| 2 | LOAD AS SELECT (CURSOR DURATION MEMORY)| SYS_TEMP_0FD9E08D2_620789C |  |   |
| 3 | HASH GROUP BY       |       | 11 | 276 (2)|
| 4 |  TABLE ACCESS FULL     | EMPLOYEES     | 100K| 273 (1)|
| 5 | UNION-ALL        |       |  |   |
| 6 | VIEW         |       | 11 |  2 (0)|
| 7 |  TABLE ACCESS FULL     | SYS_TEMP_0FD9E08D2_620789C | 11 |  2 (0)|
| 8 | VIEW         |       | 11 |  2 (0)|
| 9 |  TABLE ACCESS FULL     | SYS_TEMP_0FD9E08D2_620789C | 11 |  2 (0)|
| 10 | VIEW         |       | 11 |  2 (0)|
| 11 |  TABLE ACCESS FULL     | SYS_TEMP_0FD9E08D2_620789C | 11 |  2 (0)|
----------------------------------------------------------------------------------------------------


26 rows selected.

在上面的執行計劃中,在步驟1中的TEMP TABLE TRANSFORMATION指示數據庫使用cursor-duration臨時表來執行查詢。在步驟2中的CURSOR DURATION MEMORY指示數據庫使用內存,如果有可用內存,將結果作為臨時表SYS_TEMP_0FD9E08D2_620789C來進行存儲。如果沒有可用內存,那么數據庫將臨時數據寫入磁盤。

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。

您可能感興趣的文章:
  • Oracle 12CR2查詢轉換教程之臨時表轉換詳解
  • oracle 臨時表詳解及實例
  • 對比Oracle臨時表和SQL Server臨時表的不同點
  • Oracle 臨時表空間SQL語句的實現

標簽:遼源 許昌 合肥 郴州 滁州 南充 焦作 涼山

巨人網絡通訊聲明:本文標題《Oracle 12CR2查詢轉換教程之cursor-duration臨時表詳解》,本文關鍵詞  Oracle,12CR2,查詢,轉換,教程,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Oracle 12CR2查詢轉換教程之cursor-duration臨時表詳解》相關的同類信息!
  • 本頁收集關于Oracle 12CR2查詢轉換教程之cursor-duration臨時表詳解的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: A片毛片无遮挡全程水多| 三级伦理电影在线播放| 玩乡下黄花小处雏女| 夜恋看黄a大片| janpanese日本护士tv| 女性的隐私下边图片| 香蕉视频黄色片| 男女一边吃胸一边摸下面视频 | x9x9x9x9任意槽大象暗夜| 亚洲 中文a 在线| 皮带抽打桃子翘臀sp视频| 韩国大尺度吃奶床戏| 高级白领的私奴生活| 别拔出来让我好好爽爽| 美女被爆羞羞网站视频下载 | 公交车被强系列短篇小说| 再深点灬舒服灬太大了添A片小说| 桑植县| 嗯啊啊啊视频| 我把侄女开了苞| 老师你多久没做了爱了| 男生勃起18cm照片| 欧美 亚洲 武侠 另类 动漫| 热久久视久久精品18国产| 欧美日韩乱国产| 太深?拔出来?痛太舒服男男| 美女爆乳裸体啪啪久久精品网站| 在线观看国产区| 日韩欧美国产在线一区三上| 国模白灵1000裸体欣赏| 欧美AV无码久久精品狠狠爱浪潮| tubexxxx69| 亚洲AV欧美AV久久久爽色| 男人和女人靠逼视频| 男女被?到爽??流水电影| 91美女视频| 男女作爰视频动态图| 美女网站黄视频| 欧美精品v国产精品v日韩精品| 久久只精品99品免费久23小说| 99视频国产在线|