轉(zhuǎn)帖|使用教程|編輯:鮑佳佳|2021-03-09 10:49:29.300|閱讀 202 次
概述:每隔一段時間,我們就需要在Oracle中重新生成索引,因為隨著時間的推移,索引變得支離破碎。 這會導(dǎo)致它們的性能以及擴(kuò)展的數(shù)據(jù)庫查詢性能下降。 因此,不時地重新生成索引會非常有益。在今天的博客中,我們將學(xué)習(xí)建立索引的頻率以及如何確定何時需要重新生成索引。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
每隔一段時間,我們就需要在Oracle中重新生成索引,因為隨著時間的推移,索引變得支離破碎。 這會導(dǎo)致它們的性能以及擴(kuò)展的數(shù)據(jù)庫查詢性能下降。 因此,不時地重新生成索引會非常有益。 話雖如此,索引不應(yīng)該經(jīng)常重新生成,因為這是一項資源密集型任務(wù)。 更糟糕的是,當(dāng)重新生成索引時,鎖將被放置在索引上,從而阻止任何人在重新生成期間訪問它。 任何嘗試訪問此索引以返回所需結(jié)果的查詢都將被暫時阻止,直到重新生成完成。
在今天的博客中,我們將學(xué)習(xí)建立索引的頻率以及如何確定何時需要重新生成索引。
重新生成搜索引擎的頻率
如引言中所述,重新生成索引既耗費(fèi)資源又是阻塞任務(wù)。 這兩方面的考慮使它成為脫機(jī)活動的理想選擇,該活動可在訪問數(shù)據(jù)庫的用戶盡可能少的情況下運(yùn)行。 通常,這意味著在計劃的維護(hù)時段內(nèi)。
針對何時以及多長時間重新生成一次索引,制定一個全面的計劃實(shí)際上是不可行的。 這些決定在很大程度上取決于您使用的數(shù)據(jù)類型以及所使用的索引和查詢。 考慮到這一點(diǎn),這里有一些有關(guān)何時重新生成索引的準(zhǔn)則:
如果索引迅速碎片化,并且您有一個夜間維護(hù)窗口,除所有其他維護(hù)任務(wù)之外,該窗口還允許您運(yùn)行“重新生成索引”任務(wù),那么請務(wù)必繼續(xù)。
如果您無法每晚重新生成索引,則應(yīng)至少每周執(zhí)行一次。 如果等待時間超過一周,則由于浪費(fèi)的空白空間和邏輯碎片而產(chǎn)生的負(fù)面影響,可能會損害SQL Server的性能。
如果沒有至少每周一次執(zhí)行此任務(wù)的維護(hù)窗口,那么您需要密切注意索引的運(yùn)行情況。
確定是否需要重新生成索引
在Oracle中,您可以使用ANALYZE INDEX VALIDATE STRUCTURE命令來了解索引的當(dāng)前狀態(tài)。 以下是INDEX_STATS表的一些示例輸出:
SQL> ANALYZE INDEX IDX_GAM_ACCT VALIDATE STRUCTURE; Statement processed. SQL> SELECT name, height,lf_rows,lf_blks,del_lf_rows FROM INDEX_STATS; NAME HEIGHT LF_ROWS LF_BLKS DEL_LF_ROW ------------- ----------- ---------- ---------- ---------- DX_GAM_ACCT 2 1 3 6 1 row selected.
有兩個經(jīng)驗法則可以幫助確定是否需要重新生成索引:
重新生成索引
在Oracle中,您可以使用Alter Index Rebuild命令來重新生成索引。 它重新生成空間索引或分區(qū)索引的指定分區(qū)。
ALTER INDEX REBUILD命令具有以下幾種形式:
ALTER INDEX [schema.]index REBUILD [PARAMETERS ('rebuild_params [physical_storage_params]' ) ] [{ NOPARALLEL | PARALLEL [ integer ] }] ;
或者
ALTER INDEX [schema.]index REBUILD [PARAMETERS ('rebuild_params [physical_storage_params]' ) ] [{ NOPARALLEL | PARALLEL [ integer ] }] ;
或者
ALTER INDEX [schema.]index REBUILD PARTITION partition [PARAMETERS ('rebuild_params [physical_storage_params]' ) ];
處理無法使用的索引
Navicat for Oracle的維護(hù)索引工具提供了兩個有用的選項來處理無法使用的索引:
重新創(chuàng)建一個現(xiàn)有索引或其分區(qū)或子分區(qū)之一。 如果索引標(biāo)記為不可用,則重新生成成功將標(biāo)記為可用。
使索引不可用。 在使用無法使用的索引之前,必須對其進(jìn)行重新生成,刪除或重新創(chuàng)建。
總結(jié)
在今天的博客中,我們了解了建立索引的頻率以及如何確定何時需要重新生成索引。
如果您想了解有關(guān)Navicat for Oracle的更多信息,請訪問產(chǎn)品頁面。
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉(zhuǎn)載自: