Oracle delete資料後的釋放表空間問題的解決 --轉

ningzi82發表於2010-10-19

我們都知道資料表的龐大導而致其查詢速度的降低是水到渠成的,所以我們只有將相關的資料表的資料相應的移走,但是如果使用之後,相關的資料刪除了,但是速度沒有多大改善,憂悶了。

使用備份表再drop掉原表。的確可以解決問題。但是較麻煩,今天請教了一個Oracle高手,解決了問題。 由於Oracle delete操作是不釋放表空間的,要想提高查詢速度則必須釋放表空間。

對Oracle 9i而言,釋放表空間則需要重新分析表。

  1. analyze table itemLog compute statistics;

再進行select ,感覺的確快了很多。

另一種方法:使用exp將表匯出,drop 掉表,再imp回去。

先做個簡要筆記

今天,幫同事導資料,從開發環境導到測試環境中,發現一個查詢變的很慢。檢視執行計劃,發現居然用了全表掃描(表中大約300w條記錄),為啥不用索引呢,檢視索引狀態,一切正常。暈。

肯定是索引的問題,先分析一下表再說。

  1. analyze table ysgl_compile_reqsub compute statistics for all indexes;

正常了。

一個論壇上的帖子:

Analyze table對Oracle效能的提升

大家來討論一下這個最佳化課題

我自己碰到的一個實際情況:

一個sql語句執行要1個小時,有時候還出不了結果,但分析sql涉及的表後,然後重新執行3分鐘搞定!

真的有這樣驚人的差異?

世事無絕對,有時候你可能發現會變慢

瞭解了CBO和RBO你就知道區別了

annlyze表會增加CBO執行的效能?不一定的。

我就碰到一個語句分析後要執行30多分鐘,刪除分析後,只要30秒。

很多情況下不一定的,最好是自己從執行計劃判斷

以上的相關內容就是對Oracle delete資料後的釋放表空間問題的介紹,望你能有所收穫。

[@more@]轉自:

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/789833/viewspace-1039978/,如需轉載,請註明出處,否則將追究法律責任。

相關文章