Dans MariaDB, COMPRESS()
est une fonction intégrée qui compresse une chaîne et renvoie le résultat sous forme de chaîne binaire.
Le COMPRESS()
nécessite que MariaDB ait été compilée avec une bibliothèque de compression telle que zlib. Si MariaDB n'a pas été compilé avec une telle bibliothèque de compression, COMPRESS()
renvoie null
.
Syntaxe
La syntaxe ressemble à ceci :
COMPRESS(string_to_compress)
Où string_to_compress
est la chaîne que vous souhaitez compresser.
Exemple
Voici un exemple de base :
SELECT
LENGTH(REPEAT('z', 50)) AS "Uncompressed",
LENGTH(COMPRESS(REPEAT('z', 50))) AS "Compressed";
Résultat :
+--------------+------------+ | Uncompressed | Compressed | +--------------+------------+ | 50 | 16 | +--------------+------------+
Ici, j'ai utilisé le LENGTH()
fonction pour obtenir la longueur en octets des chaînes non compressées et compressées respectivement. J'ai utilisé le REPEAT()
fonction pour répéter la même lettre 50 fois avant de la compresser.
Voici un autre exemple qui utilise le symbole de copyright (©
):
SELECT
LENGTH(REPEAT('©', 50)) AS "Uncompressed",
LENGTH(COMPRESS(REPEAT('©', 50))) AS "Compressed";
Résultat :
+--------------+------------+ | Uncompressed | Compressed | +--------------+------------+ | 100 | 17 | +--------------+------------+
Le symbole de copyright est un caractère à deux octets, et sa longueur non compressée est deux fois la taille d'un caractère à un octet. Cependant, la compression de cette chaîne de caractères répétés sur deux octets la ramène à une taille similaire à la chaîne compressée de caractères répétés sur un octet.
En voici une qui utilise un caractère à trois octets :
SELECT
LENGTH(REPEAT('อ', 50)) AS "Uncompressed",
LENGTH(COMPRESS(REPEAT('อ', 50))) AS "Compressed";
Résultat :
+--------------+------------+ | Uncompressed | Compressed | +--------------+------------+ | 150 | 18 | +--------------+------------+
Dans ce cas, l'effet est encore plus grand. La chaîne de caractères répétée sur trois octets est réduite à une taille similaire aux chaînes de caractères répétées sur un et deux octets dans les exemples précédents.
Arguments nuls
Passer null
renvoie null
:
SELECT COMPRESS(null);
Résultat :
+----------------+ | COMPRESS(null) | +----------------+ | NULL | +----------------+
Argument manquant
Appel de COMPRESS()
avec le mauvais nombre d'arguments, ou sans passage d'arguments, une erreur se produit :
SELECT COMPRESS();
Résultat :
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'COMPRESS'
Vérifier la compression
Comme mentionné, le COMPRESS()
nécessite que MariaDB ait été compilée avec une bibliothèque de compression telle que zlib. Si MariaDB n'a pas été compilé avec une telle bibliothèque de compression, COMPRESS()
renvoie null
.
Vous pouvez vérifier le have_compress
variable système pour voir si la bibliothèque de compression zlib est accessible ou non au serveur :
SELECT @@have_compress;
Résultat :
+-----------------+ | @@have_compress | +-----------------+ | YES | +-----------------+
Dans ce cas, la bibliothèque de compression zlib est accessible au serveur, et le résultat est YES
.
Si la bibliothèque de compression zlib n'est pas accessible au serveur, le résultat serait NO
.