[+/-]
The default uncompressed size of InnoDB data pages is 16KB. You
can use the attributes ROW_FORMAT=COMPRESSED,
KEY_BLOCK_SIZE, or both in the
CREATE TABLE and
ALTER TABLE statements to enable
table compression. Depending on the combination of option values,
InnoDB uses a page size of 1KB, 2KB, 4KB, 8KB, or 16KB for the
.ibd file of the table. (The actual compression
algorithm is not affected by the KEY_BLOCK_SIZE
value.)
Compression is applicable to tables, not to individual rows,
despite the option name ROW_FORMAT.
To create a compressed table, you might use a statement 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 typically does not
result in much compression, since the normal InnoDB page size is
16KB. This setting may still 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, “How Compression Works in InnoDB”.
All indexes of a table (including the clustered index) are
compressed using the same page size, as specified in the
CREATE TABLE or
ALTER TABLE statement. 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 statement).

User Comments
Add your own comment.