压缩大型文本数据以便与PHP应用程序一起使用

Par*_*san 0 mysql sql

信息:我正在为学校的图书馆开发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;
Run Code Online (Sandbox Code Playgroud)

数据库的总大小为100 GB。此项目的大数据量为100 GB。实际上,10 GB-20 GB会很棒。

a-)有没有一种方法可以在将文本数据存储在mysql中之前对其进行压缩?我想将其设置为20 GB b-)我愿意将数据存储到文件中。如果文件存储使我的数据大小为20 GB,那对我来说将非常好。有办法做到吗?

dre*_*010 5

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

另外,您可以在插入MySQL之前在PHP端压缩数据。为了做到这一点,则各功能gzdeflate/ gzinflate使用gzip压缩或功能gzcompress/ gzuncompress其使用zlib压缩(其是相同的,MySQL的函数使用)。使用这些要求PHP必须使用zlib支持(--with-zlib)构建。

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

有关ROW_FORMAT=COMPRESSED功能及其含义的更多信息,请参见InnoDB压缩用法