MariaDB
 sql >> Baza danych >  >> RDS >> MariaDB

Jak działa funkcja COMPRESS() w MariaDB

W MariaDB, COMPRESS() to wbudowana funkcja, która kompresuje ciąg i zwraca wynik jako ciąg binarny.

COMPRESS() funkcja wymaga, aby MariaDB została skompilowana z biblioteką kompresji, taką jak zlib. Jeśli MariaDB nie została skompilowana z taką biblioteką kompresji, COMPRESS() zwraca null .

Składnia

Składnia wygląda tak:

COMPRESS(string_to_compress)

Gdzie string_to_compress to ciąg, który chcesz skompresować.

Przykład

Oto podstawowy przykład:

SELECT
    LENGTH(REPEAT('z', 50)) AS "Uncompressed",
    LENGTH(COMPRESS(REPEAT('z', 50))) AS "Compressed";

Wynik:

+--------------+------------+
| Uncompressed | Compressed |
+--------------+------------+
|           50 |         16 |
+--------------+------------+

Tutaj użyłem LENGTH() funkcja, aby uzyskać długość w bajtach odpowiednio nieskompresowanych i skompresowanych ciągów. Użyłem REPEAT() funkcja powtarzania tej samej litery 50 razy przed jej skompresowaniem.

Oto kolejny przykład, w którym zastosowano symbol praw autorskich (© ):

SELECT
    LENGTH(REPEAT('©', 50)) AS "Uncompressed",
    LENGTH(COMPRESS(REPEAT('©', 50))) AS "Compressed";

Wynik:

+--------------+------------+
| Uncompressed | Compressed |
+--------------+------------+
|          100 |         17 |
+--------------+------------+

Symbol praw autorskich to znak dwubajtowy, a jego nieskompresowana długość jest dwukrotnie większa niż znak jednobajtowy. Jednak skompresowanie tego ciągu powtarzających się znaków dwubajtowych sprowadza go do rozmiaru podobnego do skompresowanego ciągu powtarzających się znaków jednobajtowych.

Oto taki, który używa znaku trzybajtowego:

SELECT
    LENGTH(REPEAT('อ', 50)) AS "Uncompressed",
    LENGTH(COMPRESS(REPEAT('อ', 50))) AS "Compressed";

Wynik:

+--------------+------------+
| Uncompressed | Compressed |
+--------------+------------+
|          150 |         18 |
+--------------+------------+

W tym przypadku efekt jest jeszcze większy. Powtarzany trzybajtowy ciąg znaków jest redukowany do rozmiaru podobnego do powtarzanych jedno- i dwubajtowych ciągów znaków w poprzednich przykładach.

Argumenty zerowe

Przekazywanie null zwraca null :

SELECT COMPRESS(null);

Wynik:

+----------------+
| COMPRESS(null) |
+----------------+
| NULL           |
+----------------+

Brakujący argument

Wywołanie COMPRESS() z niewłaściwą liczbą argumentów lub bez przekazania jakichkolwiek argumentów powoduje błąd:

SELECT COMPRESS();

Wynik:

ERROR 1582 (42000): Incorrect parameter count in the call to native function 'COMPRESS'

Sprawdź kompresję

Jak wspomniano, COMPRESS() funkcja wymaga, aby MariaDB została skompilowana z biblioteką kompresji, taką jak zlib. Jeśli MariaDB nie została skompilowana z taką biblioteką kompresji, COMPRESS() zwraca null .

Możesz sprawdzić have_compress zmienna systemowa, aby sprawdzić, czy biblioteka kompresji zlib jest dostępna dla serwera:

SELECT @@have_compress;

Wynik:

+-----------------+
| @@have_compress |
+-----------------+
| YES             |
+-----------------+

W tym przypadku biblioteka kompresji zlib jest dostępna dla serwera, a wynikiem jest YES .

Jeśli biblioteka kompresji zlib nie jest dostępna dla serwera, wynikiem będzie NO .


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MariaDB JSON_LOOSE() Objaśnienie

  2. MySQL vs MariaDB vs Percona Server:porównanie funkcji bezpieczeństwa

  3. Przegląd nowej bazy danych DBaaS firmy MariaDB — SkySQL

  4. Połączenia HAProxy a połączenia MySQL — co powinieneś wiedzieć

  5. Jak zainstalować i zabezpieczyć MariaDB na CentOS 8