COMPRESS() - Compressing Data

Q

How to compress data using the COMPRESS() function?

✍: FYIcenter.com

A

COMPRESS(str) is a MySQL built-in function that compresses a given byte string using the default LZ77 compression algorithm. For example:

SET @str = 'FYIcenter.com,FYIcenter.com,FYIcenter.com,FYIcenter.com';
SET @bin = COMPRESS(@str);

SELECT LENGTH(@str) AS StrSize, LENGTH(@bin) AS BinSize, HEX(@bin);
  -- +---------+---------+------------------------------------------------------------+
  -- | StrSize | BinSize | HEX(@bin)                                                  |
  -- +---------+---------+------------------------------------------------------------+
  -- |      55 |      29 | 37000000789C738BF44C4ECD2B492DD24BCECFD57123960700279D13DD |
  -- +---------+---------+------------------------------------------------------------+

Note that the compression rate depends on the byte sequence pattern of the input data. For example:

SET @str = REPEAT('a', 1000);
SET @bin = COMPRESS(@str);

SELECT LENGTH(@str), LENGTH(@bin), LENGTH(@bin)/LENGTH(@str);
  -- +--------------+--------------+---------------------------+
  -- | LENGTH(@str) | LENGTH(@bin) | LENGTH(@bin)/LENGTH(@str) |
  -- +--------------+--------------+---------------------------+
  -- |         1000 |           21 |                    0.0210 |
  -- +--------------+--------------+---------------------------+

SET @str = RANDOM_BYTES(1000);
SET @bin = COMPRESS(@str);

SELECT LENGTH(@str), LENGTH(@bin), LENGTH(@bin)/LENGTH(@str);
  -- +--------------+--------------+---------------------------+
  -- | LENGTH(@str) | LENGTH(@bin) | LENGTH(@bin)/LENGTH(@str) |
  -- +--------------+--------------+---------------------------+
  -- |         1000 |         1015 |                    1.0150 |
  -- +--------------+--------------+---------------------------+

Reference information of the COMPRESS() function:

COMPRESS(str): bin
  Compresses a given byte string using the default LZ77 compression algorithm.

Arguments, return value and availability:
  str: Required. The byte string to be compressed.
  bin: Return value. The compressed byte string.
  Available since MySQL 4.1.

Related MySQL functions:

 

CRC32() - Cyclic Redundancy Check 32-Bit

AES_ENCRYPT() - AES Data Encryption

MySQL Functions for Encryption and Compression

⇑⇑ MySQL Function References

2023-12-15, 1386🔥, 0💬