>進入 在MySQL數據庫中,數據表數以百計,數據庫管理員不可能有這么多的時間和精力去依次檢查表的有效性,所以他們急需要一種工具,能夠對相關的數據表進行體檢,以判斷表是否存在一些問題。這就好像我們每" />
歡迎進入Linux社區論壇,與200萬技術人員互動交流 >>進入 在MySQL數據庫中,數據表數以百計,數據庫管理員不可能有這么多的時間和精力去依次檢查表的有效性,所以他們急需要一種工具,能夠對相關的數據表進行體檢,以判斷表是否存在一些問題。這就好像我們每
歡迎進入Linux社區論壇,與200萬技術人員互動交流 >>進入
在MySQL數據庫中,數據表數以百計,數據庫管理員不可能有這么多的時間和精力去依次檢查表的有效性,所以他們急需要一種工具,能夠對相關的數據表進行體檢,以判斷表是否存在一些問題。這就好像我們每年都需要體檢一樣,發現小問題,即時進行修復,以免到時候病入膏肓。在這里為大家推薦的工具是Myisamchk,使用這個工具來對數據表進行不定期的檢查。在使用這個工具時,筆者要強調一下相關的注意事項以及使用技巧。
一、大表要增加內存的容量
Myisamchk工具的使用效率主要跟表的大小有關。如果數據表比較大,則其運行的速度就會比較慢。在這種情況下,數據庫管理員可能需奧調整內存的配置。
通常情況下,-O參數決定Myisamchk工具運行時所能夠使用的內存大小。當運行Myisamchk時內存分配給其使用的空間不能夠超過這個參數所指定的大小。如果數據庫管理員需要對每一個大表使用Myisamchk工具時,往往需要首先確定這個數據表的大小,并依此判斷所需要占用內存的大小。默認情況下,恢復時可以采用的內存大小只有3M.對于大表來說,這點內存是不夠的。此時數據庫管理員可以調整內存的大小,讓Myisamchk工具運行的更快一點。
如果有需要的話,可以使用-O參數將內存調整為合適的大小。如-O sort=8M等等。一般情況下,這個值設置為16M即可。不需要太大,否則的話,會影響其它作業的運行??傊谶\行Myisamchk工具之前,數據庫管理員先需要評估一下數據庫中各個數據表的大小。如果有比較大的數據表,可以先將其過濾出來(如通過通配符等形式)。然后再調整內存的大小,并單獨對這些大表進行檢查。這是提高Myisamchk運行效率的一個不錯的辦法。
二、利用Myisamchk工具恢復數據時需要大量的硬盤空間
在使用Myisamchk檢查數據表時,如果發現某些表存在問題,還可以使用Myisamchk這個工具對其進行恢復。不過在恢復時,需要先確保有足夠的硬盤空間。否則的話,就可能導致數據表恢復失敗。
通常情況下,所需要使用的硬盤空間是數據表的一倍大小。即如果需要對2G的數據表進行恢復,那么所需要的剩余空間至少應該還有2G.即需要將數據文件大小擴大為原來的一倍。如果硬盤空間不足,該怎么辦呢?此時數據庫管理員可以考慮使用―quick選項。使用這個選項之后,進行修復時就不需要這么多的空間。不過需要注意,此時數據庫系統只是創建了索引文件。
在某些情況下,在修復時需要重新創建索引文件。此時代替舊索引文件的新索引文件也需要占用一定的磁盤空間。雖然說在修復工作一開始的時候,數據庫系統就會對就索引文件進行刪減。但是為了安全起見,筆者還是建議為其保留足夠的硬盤空間。并且在文件系統上所需要的這個存儲空間的大小與原數據文件是相同的。
另外在使用Myisamchk這個工具時,數據庫管理員可能會使用―Recover選項。如果數據庫管理員采用這個選項的話,那么就可以修復幾乎所有一切的問題。不過注意這里有一個關鍵字幾乎。這也就是說,大部分數據表問題都可以通過這個選項來解決。但是也有一些例外。如當遇到唯一的鍵不唯一等問題時,即時采用這個選項也是沒有辦法。一般情況下,數據庫管理員在恢復工作時可以先試用這個選項。當系統報告這個選項不可用時,再嘗試使用另外的恢復方式。不過需要注意的是,使用這個選項時需要用到排序緩沖區空間。大致大小一般為數據的2倍。
綜上所述,在利用Myisamchk這個工具對表進行恢復操作時,需要保證其有足夠的磁盤空間。筆者的建議時,至少要有兩倍以上的數據文件大小的磁盤空間。
[1] [2]
聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com