0

信息:我正在为学校图书馆开发一个 PHP 脚本。PHP 脚本将在 localhost (XAMPP) 上运行,它不会对 Internet 开放。

我试过什么?

  CREATE TABLE IF NOT EXISTS `books` (
  `Id` int(11) DEFAULT NULL,
  `url` varchar(255) DEFAULT NULL,
  `title` varchar(255) DEFAULT NULL,
  `description` varchar(255) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1 ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=8;

数据库的总大小为 100 GB。100 GB 是这个项目的大数据量。事实上,10 GB - 20 GB 会很棒。

a-) 有没有办法在将文本数据存储到 mysql 之前对其进行压缩?我想让它变成 20 GB b-) 我愿意将数据存储到一个文件中。如果文件存储使我的数据大小达到 20 GB,那对我来说会很棒。有没有办法实现它?

4

1 回答 1

5

您可以使用 MySQL COMPRESS()函数来压缩数据以进行存储,并在检索结果时使用UNCOMPRESS() 。这会导致插入该列的数据被压缩。

或者,您可以在插入 MySQL 之前在 PHP 端压缩数据。为此,使用压缩的函数 / 或gzdeflate用于压缩的函数/ (与 MySQL 函数使用的相同)。使用这些要求 PHP 构建时带有 zlib 支持 ( )。gzinflategzipgzcompressgzuncompresszlib--with-zlib

这些有多大用处取决于数据库为何如此之大。如果是因为您有数亿条记录,而具有大列的记录较少,那么压缩某些值不太可能产生太大影响。如果您有大量数据,您只会看到数据库大小的减少。从表结构的外观来看,没有需要大量存储的列。

有关ROW_FORMAT=COMPRESSED其作用及其含义的更多信息,请参阅InnoDB Compression Usage

于 2012-09-21T19:18:51.777 回答