oracle sql tuning 9--理解優化器訪問路徑
訪問路徑:說是是如何從資料庫中取資料,一般說來對於表的小部分資料用到索引訪問,對於訪問表的大部分資料全表掃描更有效。
在OLTP系統中,有些SQL是小的[我理解為運算元據量不大的]那些SQL,可用索引來訪問,相反在 Decision support systems中,使用分割槽表,全表掃描相關分割槽或許更好。
需要了解以下訪問路徑:
How the Query Optimizer Chooses an Access Path
Full Table Scan?
這種掃描方式過慮掉那些SELECT中不需要的資料,讀取表中所有行,當執行全表掃描的時候,表中所有在高水位標記下的塊被掃描,高水位標記暗示了表使用的空間情況.或者說空間被表中資料格式化.每一行都被檢查,以發現表中資料是不是和where條件中的相符。
當oracle執行全表掃描的時候,所有的塊被順序讀.I/O calls larger than a single block can be used to speed up the process. 參DB_FILE_MULTIBLOCK_READ_COUNT決定讀取塊的大小.使用多塊讀全表掃描將更有效。每一個塊只讀一次.
為什麼說全表掃描在訪問大資料量的時候很有效?
因為全表掃描使用比較大的IO呼叫,這種大的IO呼叫,比呼叫多個小的IO花費的代價要小些[原文:This is because full table scans can use larger I/O calls, and making fewer large I/O calls is cheaper than making many smaller calls]
那麼何時使用全表掃描呢?
1.缺少索引
如果查詢語句中沒有使用到現在的索引,就會用全表掃描.如果說索引列上使用了索引,那麼優化器也會執行全表掃描。比如:upper(index列)
2.訪問資料量很大時
當優化器認為:你要取的資料,將需要訪問表中的絕大多數塊時,它就會走全表掃描。儘管如此,通過索引來訪問往往更好.
3.足夠小的表
當表包含的塊資料小於引數DB_FILE_MULTIBLOCK_READ_COUNT 的大小,在高水位標記以下。一次IO操作就可以把表中資料讀取,這個時候全表掃描就很有效。
4. high degree of parallelism
A high degree of parallelism for a table skews the optimizer toward full table scans over range scans. Examine the DEGREE column in ALL_TABLES for the table to determine the degree of parallelism.
5.使用hint full(table 別名)強制優化器走全表掃描.
6.並行查詢的時候
當全表掃描的時候,響應時間可以通過並行這個特點來縮小。並行查詢一般應用於資料倉儲環境.
Rowid Scans?
表中第一行的ROWID指定的該行的資料檔案,塊(包含該行在塊中的位置).通過rowid來定位表中資料是最快的,因為資料庫中第一行確切的位置是指定好的。
當使用rowid方式來訪問表的時候,ORACLE先獲取SELECT語句中那些行的ROWID,通過WHERE條件或者是索引掃描,然後定位選擇的每一行.
index scans?
這種方式下,一行資料被取回,通過語句中指定的索引。為了進行索引掃描,ORACLE查詢索引列上的索引,如果語句訪問的只是索引列,那就直接讀取索引
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/15720542/viewspace-629974/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- oracle sql tuning 10 理解優化器訪問路徑OracleSQL優化
- Oracle 訪問路徑Oracle
- 檢視自動sql調優作業,最佳化sql訪問路徑SQL
- Oracle學習系列—資料庫優化—RBO訪問路徑Oracle資料庫優化
- 【優化】INDEX FULL SCAN (MIN/MAX)訪問路徑優化Index
- Oracle SQL優化之sql tuning advisorOracleSQL優化
- Oracle 單表訪問路徑Oracle
- Oracle SQL優化之sql tuning advisor(STA)OracleSQL優化
- SQL訪問路徑和表連線SQL
- Oracle 執行計劃 訪問路徑Oracle
- oracle sql tuning 8--優化全表掃描OracleSQL優化
- oracle SQL最佳化器SQL Tuning Advisor (STA)OracleSQL
- 真實世界SQL最佳化案例2_訪問路徑最佳化SQL
- zt_如何用一個表的兩個以上索引訪問表_sql tuning_sql優化索引SQL優化
- oracle sql tuning 2--調優工具OracleSQL
- PHP伺服器訪問優化PHP伺服器優化
- 在EM中使用SQL Tuning Advisor(SQL優化建議)優化SQLSQL優化
- Oracle資料庫訪問效能優化Oracle資料庫優化
- Traveller資料訪問路徑
- jenkins 修改訪問路徑Jenkins
- 【最佳化】INDEX FULL SCAN (MIN/MAX)訪問路徑Index
- 效能優化 - Oracle Tuning 總結 3 優化統計優化Oracle
- 效能優化 - Oracle Tuning 總結 1優化Oracle
- SQL效能第2篇:查詢分析和訪問路徑制定SQL
- Oracle Gateways透明閘道器訪問SQL ServerOracleGatewaySQLServer
- Oracle自帶工具sql優化集-SQL Tuning Advisor (使用心得體會)OracleSQL優化
- GitHub 訪問優化Github優化
- Oracle SQL Perfomance TuningOracleSQL
- oracle效能問題:sql語句優化OracleSQL優化
- oracle sql優化OracleSQL優化
- oracle sql 優化OracleSQL優化
- Oracle SQL最佳化之sql tuning advisor(STA)OracleSQL
- 優化關鍵渲染路徑優化
- tag標籤路徑優化優化
- Oracle Optimizer -RBO (理解Rule-based 優化器)Oracle優化
- oracle透過透明閘道器訪問sql serverOracleSQLServer
- 利用Oracle 10g SQL優化器(STA)優化語句Oracle 10gSQL優化
- 在EM中使用SQL Access Advisor(SQL訪問建議)優化SQLSQL優化