MySQL的MyISAM存儲引擎修復及修改最大文件大小

 前兩天生產庫上出現了一個不大不小的故障,關於MySQL 的存儲引擎問題。數據庫

這個故障所涉及到的是MySQL 4.1.20的版本MyISAM存儲引擎,一張1千多萬的表。ide

故障現象:日誌

在作簡單的SELECT查詢的時候沒有問題,可是作鏈接查詢或者其餘複雜查詢的時候就報錯了:具體的錯誤代碼因爲時間的問題被遺忘了。在系統日誌中記錄的錯誤以下圖:blog

從錯誤信息中能夠猜到了大概:存儲引擎出了問題。get

進到相應的數據庫目錄下,查看一下數據文件大小,有4G大小,這就不奇怪了.it

MySQL 4版本的數據庫建立的表默認最大文件大小就是4G 也就是說那個表滿了,沒法在插入數據了。其實版本4是支持超過4G數據文件大小的,須要在建立表的時候加上這麼一句話: MAX_ROWS=1000000000 AVG_ROW_LENGTH=15000 。table

執行myisamchk -dvv    表名字顯示屬性信息: class

而後更改表的最大文件大小file

alter table  table_name  MAX_ROWS=1000000000 AVG_ROW_LENGTH=15000;im

執行這個修改時間比較長,大約在幾個小時。

檢查修改結果:

其中:Datafile length   4095052564  =4G

  Max datafile length  281474976710654  就遠遠超過G這個單位了。

MySQL 版本5默認已經支持 Max datafile length  281474976710654  就不用在建立表的時候添加MAX_ROWS=1000000000 AVG_ROW_LENGTH=15000 參數了。

相關文章
相關標籤/搜索