MySQLメモ。
読み取り専用で良いDBは myisampack で圧縮することにより、
検索を高速化できます。
ついでに必要なディスク領域も小さくなります。
このmyisampack、使い方は若干の癖がありました。
圧縮手順は以下のとおりです。
(1) myisampack %対象テーブルのファイルパス%(拡張子MYIは省略可能)
(2) myisamchk -rq %対象テーブルのファイルパス%(拡張子MYIは省略可能)
(3) mysqladmin -u %ユーザ名% -p flush-tables
(1)で、実際にデータが圧縮されます。
(2)で、インデックスを再作成します。これを忘れると、データが見れないようです。
(3)で、mysqlldが作成したテーブルを参照するようになります。
上記を見てのとおり、手動で行う場合は一つ一つテーブルを指定する必要があり、
膨大な数のテーブルを持つDBの場合、圧縮するのは一苦労です。
(私は自動で行う簡単なユーティリティをC#でこしらえて対応しました)
で、上記圧縮をしてしまうと冒頭で触れたとおり読み取り専用のDBになります。
一部データの修正(update, delete)を行いたい場合は、
一度圧縮を解除する必要があります。
以下のように myisamchk で圧縮解除できます。
myisamchk --unpack %対象テーブルのファイルパス%(拡張子MYIは省略可能)
圧縮の効果ですが、数百MB〜1GB程で体感できるだけの効果を得られました。
利用用途は限定されますが、お勧めです。
(SQL文が下手くそなだけって噂もありますが・・・)
【参考文献(ページ)】
http://dev.mysql.com/doc/mysql/ja/myisampack.html
http://dev.mysql.com/doc/mysql/ja/insert-speed.html
http://naoya.dyndns.org/~naoya/mt/archives/001565.html
2006年02月23日
この記事へのコメント
コメントを書く
この記事へのトラックバックURL
http://blog.seesaa.jp/tb/13653537
※言及リンクのないトラックバックは受信されません。
この記事へのトラックバック
http://blog.seesaa.jp/tb/13653537
※言及リンクのないトラックバックは受信されません。
この記事へのトラックバック


