In MariaDB COMPRESS()
ist eine integrierte Funktion, die eine Zeichenfolge komprimiert und das Ergebnis als binäre Zeichenfolge zurückgibt.
Das COMPRESS()
Die Funktion erfordert, dass MariaDB mit einer Komprimierungsbibliothek wie zlib kompiliert wurde. Wenn MariaDB nicht mit einer solchen Komprimierungsbibliothek kompiliert wurde, COMPRESS()
gibt null
zurück .
Syntax
Die Syntax lautet wie folgt:
COMPRESS(string_to_compress)
Wobei string_to_compress
ist die Zeichenfolge, die Sie komprimieren möchten.
Beispiel
Hier ist ein einfaches Beispiel:
SELECT
LENGTH(REPEAT('z', 50)) AS "Uncompressed",
LENGTH(COMPRESS(REPEAT('z', 50))) AS "Compressed";
Ergebnis:
+--------------+------------+ | Uncompressed | Compressed | +--------------+------------+ | 50 | 16 | +--------------+------------+
Hier habe ich die LENGTH()
verwendet -Funktion, um die Länge in Bytes der unkomprimierten bzw. komprimierten Zeichenfolgen abzurufen. Ich habe den REPEAT()
verwendet Funktion, denselben Buchstaben 50 Mal zu wiederholen, bevor er komprimiert wird.
Hier ist ein weiteres Beispiel, das das Copyright-Symbol (©
):
SELECT
LENGTH(REPEAT('©', 50)) AS "Uncompressed",
LENGTH(COMPRESS(REPEAT('©', 50))) AS "Compressed";
Ergebnis:
+--------------+------------+ | Uncompressed | Compressed | +--------------+------------+ | 100 | 17 | +--------------+------------+
Das Copyright-Symbol ist ein Zwei-Byte-Zeichen, und seine unkomprimierte Länge ist doppelt so groß wie ein Ein-Byte-Zeichen. Das Komprimieren dieser Zeichenfolge aus wiederholten Zwei-Byte-Zeichen bringt sie jedoch auf eine ähnliche Größe wie die komprimierte Zeichenfolge aus wiederholten Ein-Byte-Zeichen.
Hier ist einer, der ein Drei-Byte-Zeichen verwendet:
SELECT
LENGTH(REPEAT('อ', 50)) AS "Uncompressed",
LENGTH(COMPRESS(REPEAT('อ', 50))) AS "Compressed";
Ergebnis:
+--------------+------------+ | Uncompressed | Compressed | +--------------+------------+ | 150 | 18 | +--------------+------------+
In diesem Fall ist der Effekt sogar noch größer. Die wiederholte 3-Byte-Zeichenfolge wird auf eine ähnliche Größe reduziert wie die wiederholten 1- und 2-Byte-Zeichenfolgen in den vorherigen Beispielen.
Null-Argumente
Übergabe von null
gibt null
zurück :
SELECT COMPRESS(null);
Ergebnis:
+----------------+ | COMPRESS(null) | +----------------+ | NULL | +----------------+
Fehlendes Argument
Aufruf von COMPRESS()
mit der falschen Anzahl von Argumenten oder ohne Übergabe von Argumenten führt zu einem Fehler:
SELECT COMPRESS();
Ergebnis:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'COMPRESS'
Auf Komprimierung prüfen
Wie bereits erwähnt, die COMPRESS()
Die Funktion erfordert, dass MariaDB mit einer Komprimierungsbibliothek wie zlib kompiliert wurde. Wenn MariaDB nicht mit einer solchen Komprimierungsbibliothek kompiliert wurde, COMPRESS()
gibt null
zurück .
Sie können den have_compress
überprüfen Systemvariable, um zu sehen, ob der Server auf die zlib-Komprimierungsbibliothek zugreifen kann:
SELECT @@have_compress;
Ergebnis:
+-----------------+ | @@have_compress | +-----------------+ | YES | +-----------------+
In diesem Fall ist die zlib-Komprimierungsbibliothek für den Server zugänglich und das Ergebnis ist YES
.
Wenn der Server nicht auf die zlib-Komprimierungsbibliothek zugreifen kann, wäre das Ergebnis NO
.