[+/-]
The usual (uncompressed) size of InnoDB data pages is 16KB.
Beginning with the InnoDB Plugin, you can use the attributes
ROW_FORMAT=COMPRESSED and/or KEY_BLOCK_SIZE in the
CREATE TABLE and ALTER TABLE
commands to enable table compression.
Depending on the combination of option values, InnoDB attempts to compress each page to
1KB, 2KB, 4KB, 8KB, or 16KB.
The term KEY_BLOCK_SIZE does not refer to a “key”, but simply
specifies the size of compressed pages to use for the table.
Likewise, in the InnoDB Plugin, compression is
applicable to tables, not to individual rows, despite the option name
ROW_FORMAT.
Because the InnoDB storage engine cannot add syntax to SQL statements,
the InnoDB Plugin re-uses the clauses originally defined
for MyISAM.
To create a compressed table, you might use a command like this:
CREATE TABLEname(column1 INT PRIMARY KEY) ENGINE=InnoDB ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=4;
If you specify ROW_FORMAT=COMPRESSED but not KEY_BLOCK_SIZE, the
default compressed page size of 8KB is used.
If KEY_BLOCK_SIZE is specified, you can omit the attribute
ROW_FORMAT=COMPRESSED.
Setting KEY_BLOCK_SIZE=16 most often does
not result in much compression, since the normal InnoDB page
size is 16KB.
However, this setting may be useful for tables with
many long BLOB, VARCHAR or
TEXT columns, because such values often do
compress well, and might therefore require fewer
“overflow” pages as described in
Section 3.4.2.2, “Compressing BLOB, VARCHAR and TEXT Columns”.
Note that compression is specified on a table-by-table basis.
All indexes of a table (including the clustered index) are
compressed using the same page size, as specified on the
CREATE TABLE or ALTER TABLE command.
Table attributes such as ROW_FORMAT and KEY_BLOCK_SIZE are not part of
the CREATE INDEX syntax, and are ignored if they
are specified (although you see them in the output of the
SHOW CREATE TABLE command).
This is the User’s Guide for InnoDB Plugin 1.0.6 for MySQL 5.1, generated on March 4, 2010 (rev 673:680M).

