技術專欄
Informix資料庫重組改善系統效能 | Informix資料庫重組改善系統效能 |
|
|
|
| 作者 傅凱文/庫柏資訊 | ||||
| 2007/05/23, 週三 | ||||
|
這篇文章介紹 Informix Dynamic Server 資料重組對系統效能的影響和資料重組的流程步驟。
前言 使用過 Microsoft Windows 系列作業系統的人,一定聽過「磁碟重組」(disk defragment) 或是使用過作業系統裡內建的「磁碟重組工具」(Disk Defragmenter)。 到底什麼是磁碟重組呢? 為什麼電腦磁碟會需要重組呢? 系統在將資料寫入磁碟時並無法確保資料可以寫在連續的磁碟空間上;而磁碟上的資料分散各處會降低系統的整體效能。資料在分散的情況下,要讀寫資料時,電腦必須反覆搜尋散落在硬碟上的資料片段,把分散的片段連起來,這時系統回應時間就會大幅度地拉長。 Windows 系列作業系統提供了一公用程式「磁碟重組工具」,可以分析本機磁碟區並合併分散的檔案及資料夾,讓每個檔案及資料夾都能儘量各自佔據磁碟區上單一且連續的空間。若檔案或資料夾可以緊密地儲存在一起而沒有被分割,讀取及寫入磁碟的速度就會加快;藉由合併檔案及資料夾,磁碟重組工具也可以合併磁碟區的可用空間,減少新檔案形成分散的情況。合併分散檔案及資料夾的過程即稱作磁碟重組。 Informix 資料重組 IBM Informix® Dynamic Server (以下簡稱 IDS) 資料庫的磁碟管理功能劃分磁碟以 extents 形式建構及存在,它亦有類似資料分散存在的問題。 當一個 table 的資料不斷增加,同一個 table 的 extents 一定會出現類似檔案區塊般分散在磁碟各處的現象。早期建構的 table 因使用原始容積量 (default extent size),而造成 extents 細小而數量龐大。這樣細小而數量龐大的 extents 使 IDS 必須反覆搜尋散落在硬碟上的 extents ,把分散的片段連起來以成就大量讀取,這時 IDS 系統回應時間就會大幅度地拉長。為暫時解決這個問題,可以透過指令調整之後 extent 的大小,減慢 extent 塊數增加的速度。
new_extent_size 的單位為 Kilobytes (KB) 。 但是 ALTER TABLE 指令並不能解決先前已經配置的 extents 做調整。為增進 IDS 資料庫的磁碟管理功能,資料庫管理人員 (DBA) 必須定期針對成長快速的table做「IDS資料重組」,在執行 IDS 資料重組後將徹底根治細小而數量龐大 extents 的問題;在多數的情況下,對資料庫存取的效能也會增加。那要如何執行「IDS 資料重組」呢? 所謂的「IDS 資料重組」,是指 table level 的 extents 能連續擺放在一起。重組的步驟如下: Informix 資料重組步驟 1.首先為了確保不會有其他人繼續存取此 table ,先將此 table 更名為另一個新名字。 2.根據原 table schema ,推算出目前此 table 的容量。此容量值加上 table 的成長率,即為新 table 的 first extent 大小。(舉例來說, table A 的一筆資料為 1.5 KB ,目前 table A 有一萬筆資料,所以目前 table A 的容量就有 15 MB 。但是為了讓 table A 能繼續長大,可以將 first extent 設為 18~20 MB。
3.使用 table schema 加上剛才算出來的 first extent 大小來建立新的 table first_extent_size 和 next_extent_size 的單位皆為 Kilobytes (KB)。 4 透過 INSERT INTO ... SELECT ... 的方式,將原本 table 的資料複製一份到新建立的 table中。
5. 最後將新建立的 table 更名回原 table 的名字,就可以讓使用者繼續使用了。 經驗分享 所以當一 table 的 extents 塊數接近上限值時,為了不影響資料後續的新增,強烈建議儘快安排時間做資料重組的動作。在一般的情況下,定期針對各 tables 做資料重組的動作為資料庫管理人員的責任。為了讓系統效能可以明顯提升,針對平常讀寫次數最頻繁的 table 先做重組,會是一個理想的選擇。 結論 正如先前步驟所提到,這種重組做法最大的缺點就是必須限制使用者暫時不存取該 table 。IBM 線上的文件有提到使用 UNLOAD/LOAD 的工具複製資料,這種做法在特殊的編碼資料時有可能會影響資料的正確性;所以還是建議使用 INSERT INTO ... SELECT ... 的方式。在 IDS 中,對 table 的 extents 的塊數有一定的上限制。一般來說,超過 210 個 extents 的時候有可能會無法再配置新的 extent 給該 table ,將會導致資料無法繼續新增。 (註:在 AIX 機器上的 extents 塊數上限為 450 左右。) 參考資料 - 磁碟重組工具概觀 - IBM Informix Dynamic Server Performance Guide (本文屬庫柏資訊所有,未經同意,請勿轉載!)
|
||||
| 最後更新 ( 2007/06/27, 週三 ) | ||||
| < 前一個 | 下一個 > |
|---|



