MySQL:テーブルの圧縮:myisampack
SQL (37 items)
2006年07月23日
テーブルの容量が増えてきた。圧縮できないものか。。。
MySQLでは、myisampackコマンドでテーブルを圧縮する事ができます。(圧縮後は読み取り専用テーブルになりますが)
MySQLでは、myisampackコマンドでテーブルを圧縮する事ができます。(圧縮後は読み取り専用テーブルになりますが)
方法ですが、MySQLもドキュメントが充実していますし、
>4.8.4. myisampack(MySQL 圧縮読み取り専用テーブルジェネレータ)
以下のサイトの記事も参考になります。
>MySQL の MERGE テーブルで巨大なテーブルを効率的に運用する
>[MySQL]myisampackによる圧縮
まずは、mysqlのデータディレクトリに移動し、以下のコマンド実行。(いずれも必須)
・圧縮
・インデックスの再生成
・FLUSH TABLE
圧縮後、データファイルを見ると、60%程度が圧縮されていました。
(ちなみに、PHPでシェル作って大量テーブルの圧縮を行いましたが、全て圧縮後、mysqlの再起動でディスク使用率の減少を確認できました)
特に過去のログデータなんかを持っている場合、この圧縮は必要になってくるでしょうね。
>4.8.4. myisampack(MySQL 圧縮読み取り専用テーブルジェネレータ)
以下のサイトの記事も参考になります。
>MySQL の MERGE テーブルで巨大なテーブルを効率的に運用する
>[MySQL]myisampackによる圧縮
まずは、mysqlのデータディレクトリに移動し、以下のコマンド実行。(いずれも必須)
・圧縮
myisampack -v テーブル名・インデックスの再生成
myisamchk -rq --analyze --sort-index テーブル名.MYI・FLUSH TABLE
mysqladmin flush-tables
もしくは、mysqlにログインし、
FLUSH TABLES
か、
FLUSH TABLE 圧縮したテーブル名圧縮後、データファイルを見ると、60%程度が圧縮されていました。
(ちなみに、PHPでシェル作って大量テーブルの圧縮を行いましたが、全て圧縮後、mysqlの再起動でディスク使用率の減少を確認できました)
特に過去のログデータなんかを持っている場合、この圧縮は必要になってくるでしょうね。
前の記事 次の記事
