- Oracle Exadata性能優化
- 石云華 陳浩 饒冰
- 861字
- 2020-05-21 18:00:34
2.4 禁用存儲索引特性
有時可能會遇到這樣的情況,即某條SQL語句的結果集不是預期的結果。如果懷疑是存儲索引特性引發的SQL語句給出了錯誤的結果集,則可以嘗試關閉存儲索引特性,驗證是否該特性導致了錯誤的結果集。
可以在數據庫層面或存儲節點層面來完成存儲索引特性的啟用或禁用。
1.數據庫層面禁用存儲索引特性
存儲索引特性由數據庫中的隱含參數_kcfis_storageidx_disabled進行控制,默認值為false,表示開啟存儲索引特性;設置為true,則關閉存儲索引。具體見代碼清單2.3。
代碼清單2.3 數據庫層面開啟/關閉存儲索引特性

在開啟存儲索引特性的情況下,該SQL語句節省了40MB的IO掃描量;然后關閉存儲索引特性,再次訪問該SQL語句,發現cell physical IO bytes saved by storage index指標值未發生變化,說明存儲索引特性未起作用。
2.存儲節點層面禁用存儲索引特性
除了在數據庫層面啟用和關閉存儲索引特性外,還可以在存儲節點層面來控制存儲索引特性。存儲節點啟用或關閉存儲索引特性的具體語法如下。

下面對cellsrv.cellsrv_storidx函數中的參數進行說明,具體如下。
■ disable:關閉存儲索引特性。
■ enable:啟用存儲索引特性。
■ all|GridDiskName:指定所有的Griddisk或指定明確的Griddisk。
■ objd:對象ID,來自于dba_objects視圖中的data_object_id字段。
■ tsn:表空間ID,來自于ts$視圖中的ts#字段。
■ dbid:數據庫ID,來自于x$ksqdn視圖中的ksqdngunid字段。
注意:如果objd、tsn和dbid參數值都設置為0,則表示在指定的Griddisk或所有Griddisk上的所有存儲節點都不啟用存儲索引特性。
在存儲節點上控制存儲索引特性,具體見代碼清單2.4。
代碼清單2.4 存儲節點層面開啟/關閉存儲索引特性(1)

某條SQL語句在第一次訪問時進行了智能掃描,但由于在存儲節點的內存中未包含該SQL語句所涉及的表對象中相關字段的存儲索引信息,所以第一次訪問時cell physical IO bytes saved by storage index指標值為0。此時,存儲節點開始把相關存儲索引的信息緩存到存儲節點的內存中。第二次訪問相同的SQL語句時,cell physical IO bytes saved by storage index指標值不為0,則表示該SQL語句的存儲索引特性生效。
代碼清單2.4 存儲節點層面開啟/關閉存儲索引特性(2)

此時,在存儲節點完成關閉存儲索引特性。第三次執行該SQL語句,可以發現cell physical IO bytes saved by storage index指標值未出現增長,這說明第三次執行該SQL語句時,存儲索引特性未生效。
- Mastering Visual Studio 2017
- Mastering Selenium WebDriver
- JavaScript 網頁編程從入門到精通 (清華社"視頻大講堂"大系·網絡開發視頻大講堂)
- 64位匯編語言的編程藝術
- 云計算通俗講義(第3版)
- Android 應用案例開發大全(第3版)
- Machine Learning in Java
- C語言程序設計實訓教程與水平考試指導
- Natural Language Processing with Python Quick Start Guide
- Scala Functional Programming Patterns
- Java高級程序設計
- JavaWeb從入門到精通(視頻實戰版)
- JavaScript Mobile Application Development
- Python繪圖指南:分形與數據可視化(全彩)
- 計算機應用基礎