Oracle 索引維護

來源:互聯網
上載者:User

一、索引的分析

根據ORACLE文檔所描述,如下情況要考慮重建索引

1. analyze index your_index_name validate structure;

2. 查詢索引片段:

select name,del_lf_rows, lf_rows, round((del_lf_rows/(lf_rows+0.0000000001))*100)

frag_pct from index_stats

一般如果該索引的frag_pct>10%,那麼就需要rebuild index

當然analyze index your_index_name validate structure除了可以分析素因是否需要重建外,還可以讓還能獲得其他有用資訊,能讓瞭解當前索引的大小結構高度等等,以確定最佳化方案。還要特別留意另一個知識點:“該命令將會導致鎖!”而且操作大表,該命令執行時間會相當長,會導致生產因此掛起一堆處理該表的進程!


二、索引問題

這裡要注意索引有一個不利的地方,就是索引一定會影響DML的效能,往不帶索引表中插入值的速度和帶索引的表中插入的速度相比,不帶索引的表的插入速度一定更快,原因很明顯,DML語句要進行維護索引的開銷,所以會慢,這無須做實驗就能證明了。另外隨著索引的不斷增大,維護的開銷將越來越大,如果一張表的索引數量再一增多,開銷將會進一步增大!


三:控制索引數量

生產中要嚴格控制索引的數量,避免某些更新頻繁的表更新的效能太低影響了系統的正常運行,如何控制索引的數量呢?

1、首先可以執行如下命令擷取需要監控的索引的語句,然後執行提取出來的語句

select 'alter index '||owner||'.'||index_name||' monitoring usage;'

from dba_indexes

where table_owner='BILL'

2、保證上面提取的語句執行過後,通過一段時間的觀察,查看下列語句得出索引使用的情況,擷取那些索引不常用的資訊

select io.name index_name, t.name table_name,

decode(bitand(i.flags, 65536), 0, 'NO', 'YES') monitoring,

decode(bitand(ou.flags, 1), 0, 'NO', 'YES') used,

ou.start_monitoring start_monitoring,

ou.end_monitoring end_monitoring

from sys.obj$ io, sys.obj$ t, sys.ind$ i, sys.object_usage ou

where io.owner# = (select user# from sys.user$ where name='&使用者名稱')

and i.obj# = ou.obj#

and io.obj# = ou.obj#

and t.obj# = i.bo#

3、觀察第2步查詢出來的結果,刪除不常使用的索引,控制索引的數量。

對此大家應該掌握了如何觀察和控制索引的方法,希望大家能熟悉並經常在工作中應用。


4.在匯入匯出中最好禁用索引和nologging

使用EXP/IMP工具進行資料移轉時,可以考慮對索引進行兩種方式控制以提高EXP/IMP的速度。

1、就是不使用索引,等資料移轉過來後,在新的資料庫中手動建立自己需要的索引,畢竟資料更重要,索引可以慢慢建,選擇性的建。這樣就在EXP的選項中設定INDEXES=N,這樣加快了匯出的速度也加快的匯入的速度。

2、在IMP的時候選擇INDEXFILE參數,讓索引先組建檔案,先不要匯入資料庫中,等資料全部匯入庫後再建選擇性的從INDEXFILE中建索引,即便把INDEXFILE的索引全部建到新庫中,大資料移轉時,分步操作的速度也更快。


本文出自 “無雙城” 部落格,請務必保留此出處http://929044991.blog.51cto.com/1758347/1303884

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.