成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

詳解Oracle數據庫硬解析、軟解析、軟軟解析聯系與區別

數據庫 其他數據庫
Oracle數據庫硬解析和軟解析有相同的一步,而軟軟解析與硬解析、軟解析完全不一樣。下面,我們一起來看一下。

Oracle數據庫硬解析和軟解析有相同的一步,而軟軟解析與硬解析、軟解析完全不一樣。

一、sql解析

這里我們先簡單sql語句執行步驟:

  • 語法檢查(syntax check)
  • 語義檢查(symantic check): 對象是否存在,是否有權限。
  • sql解析(parse): 利用內部算法對sql進行解析,生成解析樹及執行計劃。
  • 執行sql,返回結果(execute and return)

首先了解一下sql解析時用到的內存結構——shared pool。

shared pool是一塊內存池,里邊又被分成了很多小的區塊,每個塊有他們的作用:

  • free (空閑)
  • library cache (庫緩存,緩存sql語句以及sql所對應的執行計劃)
  • row cache (字典緩存——庫里有多少表,多少用戶,多少個列,列的名字,列的數據類型,每個表多大等等都屬于數據庫自身信息。)

一個sql 語句,進入到數據庫后,server process 會拿著sql語句到shared pool中的library cache 里邊去找,看sql語句以前是否有執行過。也就是在library cache 里面看有沒有這條sql語句以及sql語句所對應的執行計劃。(此過程是通過對傳遞進來的SQL語句使用HASH函數運算得出HASH值,與共享池中現有語句的HASH值進行比較看是否一一對應。現有數據庫中SQL語句的HASH值我們可以通過訪問vsql、vsql、vsqlarea、v$sqltext等數據字典中的HASH_VALUE列查詢得出。)

二、涉及解析的概念

1. 硬解析

硬解析(Hard Parse)是指Oracle在執行目標SQL時,在庫緩存(Library Cache)中找不到可以重用的解析樹和執行計劃,而不得不從頭開始解析目標SQL并生成相應的父游標(Parent Cursor)和子游標(Child Cursor)的過程。

硬解析實際上有兩種類型:一種是在庫緩存中找不到匹配的父游標(Parent Cursor),此時Oracle會從頭開始解析目標SQL,新生成一個父游標和一個子游標,并把它們掛在對應的HashBucket中;另外一種是找到了匹配的父游標但未找到匹配的子游標,此時Oracle也會從頭開始解析該目標SQL,新生成一個子游標,并把這個子游標掛在對應的父游標下。

硬解析過程:

  • 語法、語義及權限檢查;
  • 查詢轉換(通過應用各種不同的轉換技巧,會生成語義上等同的新的SQL語句,如count(1)會轉為count(*));
  • 根據統計信息生成執行計劃(找出成本最低的路徑,這一步比較耗時);
  • 將游標信息(執行計劃)保存到庫緩存。

2. 軟解析

軟解析(Soft Parse)是指Oracle在執行目標SQL時,在Library Cache中找到了匹配的父游標(Parent Cursor)和子游標(Child Cursor),并將存儲在子游標中的解析樹和執行計劃直接拿過來重用而無須從頭開始解析的過程。

軟解析過程:

  • 語法、語義及權限檢查;
  • 將整條SQL hash后從庫緩存中執行計劃。

軟解析對比硬解析省了三個步驟。

3. 軟軟解析

軟軟解析(Soft Soft Parse)是指若參數SESSION_CACHED_CURSORS的值大于0,并且該會話游標所對應的目標SQL解析和執行的次數超過3次,則此時該會話游標會被直接緩存在當前會話的PGA中的。若該SQL再次執行的時候,則只需要對其進行語法分析、權限對象分析之后就可以直接從當前會話的PGA中將之前緩存的匹配會話游標直接拿過來用就可以了,這就是軟軟解析。

軟軟解析過程:

要完全理解軟軟解析先要理解游標的概念,當執行SQL時,首先要打開游標,執行完成后,要關閉游標,游標可以理解為SQL語句的一個句柄。

在執行軟軟解析之前,首先要進行軟解析,MOS上說執行3次的SQL語句會把游標緩存到PGA,這個游標一直開著,當再有相同的SQL執行時,則跳過解析的所有過程直接去取執行計劃。

三、實驗:

1. 環境準備:

  1. drop table test purge; 
  2. alter system flush shared_pool; 
  3. create table test as select * from dba_objects where 1<>1; 
  4. exec dbms_stats.gather_table_stats(ownname => 'sys',tabname => 'test'); 

詳解oracle數據庫硬解析、軟解析、軟軟解析聯系與區別

2. 硬解析

  1. select * from test where object_id=20
  2. select * from test where object_id=30
  3. select * from test where object_id=40
  4. select * from test where object_id=50

詳解oracle數據庫硬解析、軟解析、軟軟解析聯系與區別

3. 軟解析

  1. var oid number; 
  2. exec :oid:=20
  3. select * from test where object_id=:oid; 
  4. exec :oid:=30
  5. select * from test where object_id=:oid; 
  6. exec :oid:=40
  7. select * from test where object_id=:oid; 
  8. exec :oid:=50
  9. select * from test where object_id=:oid; 

詳解oracle數據庫硬解析、軟解析、軟軟解析聯系與區別

4. 軟軟解析

  1. begin 
  2.  for i in 1..4  
  3.  loop 
  4.  execute immediate 'select * from test where object_id=:i' using i; 
  5.  end loop; 
  6.  end; 

詳解oracle數據庫硬解析、軟解析、軟軟解析聯系與區別

5. 統計

  1. select sql_text,s.PARSE_CALLS,loads,executions from v$sql s where sql_text like 'select * from test where object_id%' order by 1,2,3,4; 

詳解oracle數據庫硬解析、軟解析、軟軟解析聯系與區別

可以看到軟解析與軟軟解析相比,軟軟解析只是解析一次。

字段解釋:

  • PARSE_CALLS 解析的次數
  • LOADS 硬解析的次數
  • EXECUTIONS 執行的次數

 

責任編輯:趙寧寧 來源: 今日頭條
相關推薦

2010-04-06 11:30:09

Oracle 數據庫

2010-07-30 14:26:21

FlexFlash

2013-01-22 09:44:57

OpenStackKVM

2011-03-07 15:54:30

2010-04-01 17:06:57

Oracle數據庫

2009-02-03 09:04:51

Oracle數據庫Oracle安全策略Oracle備份

2009-09-09 11:27:30

Oracle數據庫服務

2010-04-16 12:29:13

Oracle數據庫遠程

2009-08-11 17:30:46

2010-05-13 14:14:45

2011-05-26 09:08:31

Oracle數據庫

2011-08-30 14:38:50

QT數據庫

2011-03-25 09:37:17

2010-04-22 12:56:48

Oracle數據庫

2011-03-02 17:09:20

2011-03-17 17:06:38

數據庫發展方向

2010-04-02 13:46:30

Oracle數據導出

2025-01-22 08:19:34

2011-08-02 15:04:49

2011-08-22 14:50:20

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲精品福利视频 | 久久影院一区 | 日本亚洲精品成人欧美一区 | 中文字幕成人av | 97色在线观看免费视频 | 久久亚洲国产 | 国产午夜精品一区二区三区四区 | 免费在线观看一区二区 | 粉嫩一区二区三区国产精品 | 亚av在线 | 国产精品精品视频一区二区三区 | 色综合久久88色综合天天 | 伊人久麻豆社区 | 欧美男人天堂 | 久久91视频 | 福利视频网站 | 日韩欧美中文字幕在线观看 | 亚洲国产精久久久久久久 | 一区二区三区欧美大片 | 一级在线 | 欧美一级黄色片在线观看 | 精品国产精品 | 欧美男人天堂 | 蜜桃av人人夜夜澡人人爽 | 久久精品亚洲国产奇米99 | 青青草这里只有精品 | 91亚洲国产成人久久精品网站 | 国产一区二区三区在线免费 | 视频精品一区二区三区 | 久久手机在线视频 | 99国产精品99久久久久久粉嫩 | 欧美一级黄带 | 中文字幕观看 | 91高清视频在线 | 精品在线一区二区三区 | 久久伊人操 | 国产精品视频在线播放 | 欧美一区二区三区在线看 | 亚洲国产一区二区三区在线观看 | 国产在线观看一区二区三区 | 手机在线一区二区三区 |