top
Loading...
5.9.5.5.myisamchk內存使用
5.9.5.5. myisamchk內存使用

當你運行myisamchk時內存分配重要.MYIsamchk使用的內存大小不能超過用-O選項指定的。如果你想對每一個大表使用myisamchk,你必須首先確定你想使用多少內存。修復時可以使用的 默認值只有3MB。使用更大的內存,可以讓myisamchk工作得更快一些。例如,如果有大于32MBRAM,可以使用如下所示選項(除了你可以指定的其它選項)

shell> myisamchk -O sort=16M -O key=16M -O read=1M -O write=1M ...

對于大多數情況,使用-O sort=16M應該足夠了。

應記住myisamchk使用TMPDIR中的臨時文件。如果TMPDIR指向內存文件系統,你可能很容易得到內存溢出的錯誤。如果發生,設定TMPDIR指向有更多空間的文件系統目錄并且重啟myisamchk

修復時myisamchk也需要大量硬盤空間:

·         將數據文件大小擴大一倍(原文件和復制文件)。如果你用--quick修復則不需要該空間;在這種情況下,只重新創建了索引文件。在文件系統上需要的空間與原數據文件相同!(創建的復制文件位于原文件所在目錄)

·         代替舊索引文件的新索引文件所占空間。修復工作一開始,就對舊索引文件進行了刪減,因此你通常會忽略該空間。在文件系統上需要的該空間與原數據文件相同!

·         當使用--recover---sort-recover(但不使用--safe-recover)時,需要排序緩沖區空間。需要的空間為:

·                (largest_key + row_pointer_length) * number_of_rows * 2

可以用myisamchk -dv tbl_name檢查鍵值和row_pointer_length的長度。在臨時目錄分配該空間(TMPDIR--tmpdir=path指定)

如果在修復過程中出現硬盤空間問題,可以試試用--safe-recover代替--recover

作者:mysql.com
來源:http://dev.mysql.com/doc/refman/5.1/zh/database-administration.html
北斗有巢氏 有巢氏北斗