日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

oracle的java路径,oracle学习----访问路径

發布時間:2025/4/5 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 oracle的java路径,oracle学习----访问路径 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

什么是訪問路徑?表掃描數據的時候使用了什么方式,這個方式就是訪問路徑

1.全表掃描

TABLE ACCESS FULL 全表掃描,多塊讀,等待事件:db file scattered read

如果是并行全表掃描,等待事件: direct path read

11g 有個新特征,在進行全表掃描的時候也會產生 direct path read

在OLTP環境中要通過 10949 event 禁止該新特征

在OLAP環境中可以不用禁止

如果表上面有大量的行遷鏈接,會是單塊讀 等待事件表現為db file sequential read

如果表上面發生了一個大事物,全表掃描會從UNDO讀取前鏡像,也會是單塊讀

HINT: FULL(表名/別名)

等待事件:db file scattered read 在SGA中

等待事件:direct path read 在PGA中

禁用oracle11g的新特性,有兩種方法

a.event 10949設置后,可以禁用direct path read。

開啟

SQL> ALTER session SET EVENTS '10949 TRACE NAME CONTEXT FOREVER';

禁用

SQL> ALTER session SET EVENTS '10949 TRACE NAME CONTEXT off';

b.通過設置隱含參數_serial_direct_read來設置是否啟用direct path read

禁用

SQL>alter session set "_serial_direct_read"=never;

開啟(默認)

SQL> alter session set "_serial_direct_read"=auto;

2.索引唯一掃描

INDEX UNIQUE SCAN 索引唯一掃描。單塊讀 只可能發生在unique index/primary key 等值查找

等待事件:db file sequential read 但是你幾乎看不到,因為只讀一條數據

HINT 無需指定,有索引會自動走INDEX UNIQUE SCAN

索引唯一掃描在不回表的時候訪問幾個索引塊?

索引高度這么多個塊。

select * from t where id=10;返回一行數據,要掃描多少個塊?

索引高度+1(在不發生行遷移連接的情況下)

索引高度+2(發生行遷移連接的情況)

3.索引范圍掃描

INDEX RANGE SCAN 索引范圍掃描。單塊讀 發生在對unique index/primary key 進行范圍查找,

對non-unique index進行等值查找,范圍查找

等待事件:db file sequential read 如果你監控某個SQL出現大量該等待事件,

有可能執行計劃就有問題

HINT: INDEX(表名/別名 索引名)

在索引唯一掃描中很難捕獲等待事件,因為只返回一條數據,單塊讀的時間為12ms,索引唯一掃描掃描索引高度這么多個塊,返回一條數據

的時間小于1s,1s這個閾值是記錄等待時間的要求,所以不會記錄等待事件,這個閾值是ash的響應時間,什么是ash呢?

ASH以V$SESSION為基礎,每秒采樣一次,記錄活動會話等待的事件。不活動的會話不會采樣,采樣工作由新引入的后臺進程MMNL來完成。

那么在索引范圍掃描中怎么能看見db file sequential read等待事件呢?

12ms*100等于1.2s超過了ash的閾值,就可以記錄等待事件

100單塊讀,每個塊包含1000條數據,就是10w條數據,也就是說通過索引范圍掃描返回超過10w條數據時就會出現等待時間。

監控一個sql的等待事件

select (sysdate-logon_time)*24*60 minutes,username,machine,program,action,

status,inst_id,sid,serial#,event,p1,p2,p3,

row_wait_obj# obj#,row_wait_file# file#,row_wait_block# block#,sql_id,sql_child_number from gv$session where sql_id='XXX';

4.索引跳躍掃描

INDEX SKIP SCAN 索引跳躍掃描。單塊讀 只可能發生在組合索引上,引導列(組合索引第一列)沒有包

含在where條件中,并且引導列基數很低。INDEX SKIP SCAN

一般來說只會返回少量數據,如果返回大量數據,說明該執

行計劃可能有問題,也就是說索引建立不對。

等待事件:db file sequential read

HINT: INDEX_SS(表名/別名 索引名)

5.索引全掃描

INDEX FULL SCAN 索引全掃描。單塊讀 。它掃描的結果是有序的,因為索引是有序的。它通常發生在

下面幾種情況(注意:即使SQL滿足以下情況 不一定會走索引全掃描)

a. SQL語句有order by選項,并且order by 的列都包含

在索引中,并且order by 后列順序必須和索引列順序一致。

b. 在進行SORT MERGE JOIN的時候,如果要查詢的列通過索

引就能獲得,那就不必進行全表掃描了,另外也避免了排

序,因為INDEX FULL SCAN返回的結果已經排序。

c. 當查詢中有GROUP BY,并且GROUP BY 的列包含在索引中。

等待事件:db file sequential read

HINT: INDEX(表名/別名 索引名)

索引全表掃描會掃描blevel+leaf個塊

6.索引快速掃描

INDEX FAST FULL SCAN 索引快速全掃描。多塊讀 。當SQL要查詢的數據能夠完全從索引中獲得,那么

Oracle就不會走全表掃描了,就會走索引快速全

掃描。索引快速全掃描類似全表掃描,它可以多塊

讀,并且可以并行掃描。

等待事件:db file scattered read

HINT:INDEX_FFS(表名/別名 索引名)

總結

以上是生活随笔為你收集整理的oracle的java路径,oracle学习----访问路径的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。