Oracle 12c新特性之——TABLE ACCESS BY INDEX ROWID BATCHED


Oracle12c開始,我們在獲取SQL語句的執行計划時,也會經常看到"TABLE ACCESS BY INDEX ROWID BATCHED"操作,那么,這個操作到底是什么意思呢?有什么作用呢?下面我們先看看有關該操作的官方解釋:

 

The BATCHED access shown in Step 1 means that the database retrieves a few rowids from the index, and then attempts to access rows in block order to improve the clustering and reduce the number of times that the database must access a block.

這句話的意思是說,該操作是數據庫為了從索引中獲取一些rowid,接着,試着按照塊順序存取塊中的數據行,以便用來改善聚集效果和減少對一個數據塊存取的次數。

官方解釋的意思就是這樣,但怎么理解呢?之前,當我們通過索引獲取的rowid回表獲取相應數據行時,都是讀一個rowid回表獲取一次相應數據行,然后,再讀一個rowid,再回表獲取一次相應數據行。。。,這樣一直讀取完所有所需數據。當不同rowid對應的數據行存儲在一個數據塊中時,就可能會發生對同一表數據塊的多次讀取,當一個索引的聚集因子比較低時,這也是一個必然結果,從而浪費了系統資源。Oracle 12c中該新特性,通過對rowid對應的數據塊號進行排序,然后回表讀取相應數據行,從而避免了對同一表數據塊的多次重復讀取,從而改善了SQL語句的性能,降低了資源消耗。該特性通過隱藏參數“_optimizer_batch_table_access_by_rowid”控制,默認值為true,即為開啟。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM