2011年 6月 6日 はてなブックマーク -
タグ: #MySQL #InnoDB

データ圧縮の手順

データ圧縮はテーブル単位に指定します。CREATE TABLEまたはALTER TABLE文で以下のように定義します。

CREATE TABLE `text` (
  `old_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `old_text` mediumblob NOT NULL,
  `old_flags` tinyblob NOT NULL,
  PRIMARY KEY (`old_id`)
) ENGINE=InnoDB ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=8

ROW_FORMATにCOMPRESSEDを指定することで、Barracudaフォーマットの圧縮形式になります。InnoDB Pluginにおいて、ROW_FORMATは現在以下の四種類が指定できます。

  • REDUNDANT:MySQL 4.1までのフォーマットです。
  • COMPACT:MySQL 5.0以降のフォーマットです。UTF-8文字列の最適化などによって、REDUNDANTよりもデータサイズが小さくなっています。
  • DYNAMIC:InnoDB PluginのBarracudaフォーマットを用いますが、データ圧縮は行わない形式です。
  • COMPRESSED:InnoDB PluginのBarracudaフォーマットを用い、データ圧縮を行う形式です。

次のKEY_BLOCK_SIZEは、圧縮後におけるInnoDBのページサイズを指定するものです。デフォルトは8KBで、1、2、4、8、16KBから選ぶことができます。InnoDBはもともとページサイズが16KB固定になっていてこのページ単位にディスクI/Oなどのデータ管理を行っているのですが、Barracudaフォーマットの圧縮形式ではページサイズがテーブルごとに可変になっています。

MySQL InnoDB Pluginのデータ圧縮機能 - SH2の日記

入るデータサイズが小さいならKEY_BLOCK_SIZEをデフォルトの8KBから2KBにする事で、さらに圧縮効率が高まります。


11ヶ月前 | | 2011年 6月 6日 | このエントリーを含むはてなブックマーク