1

我对 mysql 有点陌生,不确定压缩是如何工作的。基本上我有一个原始的 20GB 文件,我正在加载到 mysql 中。我知道当我使用 gzip 压缩它时,它通常在 2-4GB 之间。所以我的问题是,mysql 使用什么压缩(我可以更改它)吗?它仅适用于存储在表本身中的数据还是适用于文本?

这是我的桌子:

CREATE TABLE my_data (
  `ID` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `DATA` text NOT NULL,
  PRIMARY KEY (`ID`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=4;

我的理解是DATA不存储在表本身中,而只是一个指向它的引用指针。我想知道压缩是否适用于数据本身或仅适用于引用指针?

4

1 回答 1

1

来自 mysql 文档 -

“当表为压缩格式时,写入溢出页面的所有数据都被“按原样”压缩;也就是说,InnoDB 将 zlib 压缩算法应用于整个数据项。除了数据,压缩的溢出页面包含未压缩的 header 和包含页面校验和和到下一个溢出页面的链接的预告片等。因此,如果数据高度可压缩,对于较长的 BLOB、TEXT 或 VARCHAR 列可以获得非常显着的存储节省,这通常是文本数据的情况(但不是以前压缩的图像)。”

我确信压缩算法适用于数据。

于 2012-06-07T02:48:30.920 回答