官术网_书友最值得收藏!

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語句時,存儲索引特性未生效。

主站蜘蛛池模板: 郧西县| 纳雍县| 忻州市| 奉贤区| 铜山县| 瑞昌市| 金昌市| 黎城县| 牡丹江市| 油尖旺区| 临沭县| 浪卡子县| 珲春市| 百色市| 武夷山市| 嘉峪关市| 贵州省| 定日县| 丽江市| 仁怀市| 屯留县| 积石山| 行唐县| 宜兰县| 阜平县| 革吉县| 航空| 四川省| 高雄县| 武隆县| 九龙城区| 理塘县| 永年县| 嫩江县| 汕头市| 北碚区| 绥芬河市| 北辰区| 聂荣县| 潮安县| 惠东县|