MySQL COMPRESS vs PHP gzcompress

compression, mysql, performance, php

Solution

The two methods are more or less the same thing, in fact you can mix them: compress in php and uncompress in MySQL and vice versa.

To compress in MySQL:

INSERT INTO table (data) VALUE(COMPRESS(data));

To compress in PHP:

$compressed_data = "\x1f\x8b\x08\x00".gzcompress($uncompressed_data);

To uncompress in MySQL:

SELECT UNCOMPRESS(data) FROM table;

To uncompress in PHP:

$uncompressed_data = gzuncompress(substr($compressed_data, 4));

Another option is to use MySQL table compression.

It only require configuration and then it is transparent.

Problem

I am developing a PHP application where large amounts of text needs to be stored in a MySQL database. Have come across PHP's `gzcompress` and MySQL's `COMPRESS` functions as possible ways of reducing the stored data size. What is the difference, if any, between these two functions? (My current thoughts are `gzcompress` seems more flexible in that it allows the compression level to be specified, whereas `COMPRESS` may be a bit simpler to implement and better decoupling? Performance is also a big consideration.)

Original source