MariaDB
 sql >> база данни >  >> RDS >> MariaDB

Как работи COMPRESS() в MariaDB

В MariaDB, COMPRESS() е вградена функция, която компресира низ и връща резултата като двоичен низ.

COMPRESS() функцията изисква MariaDB да е компилиран с библиотека за компресия като zlib. Ако MariaDB не е компилиран с такава библиотека за компресия, COMPRESS() връща null .

Синтаксис

Синтаксисът е така:

COMPRESS(string_to_compress)

Където string_to_compress е низът, който искате да компресирате.

Пример

Ето един основен пример:

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

Резултат:

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

Тук използвах LENGTH() функция за получаване на дължината в байтове съответно на некомпресирания и компресиран низ. Използвах REPEAT() функция за повторение на една и съща буква 50 пъти, преди да я компресирате.

Ето още един пример, който използва символа за авторско право (© ):

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

Резултат:

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

Символът за авторско право е двубайтов знак и неговата некомпресирана дължина е два пъти по-голяма от размера на еднобайтов знак. Компресирането на този низ от повтарящи се двубайтови знаци обаче го намалява до размер, подобен на компресирания низ от повтарящи се еднобайтови знаци.

Ето един, който използва трибайтов знак:

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

Резултат:

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

В този случай ефектът е още по-голям. Повтарящият се низ от три байта знаци е намален до подобен размер на повтарящия се низ от един и два байта в предишните примери.

Нулеви аргументи

Предаването на null връща null :

SELECT COMPRESS(null);

Резултат:

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

Липсващ аргумент

Извикване на COMPRESS() с грешен брой аргументи или без подаване на аргументи води до грешка:

SELECT COMPRESS();

Резултат:

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

Проверете за компресия

Както споменахме, COMPRESS() функцията изисква MariaDB да е компилиран с библиотека за компресия като zlib. Ако MariaDB не е компилиран с такава библиотека за компресия, COMPRESS() връща null .

Можете да проверите have_compress системна променлива, за да видите дали библиотеката за компресиране на zlib е достъпна за сървъра:

SELECT @@have_compress;

Резултат:

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

В този случай библиотеката за компресиране на zlib е достъпна за сървъра и резултатът е YES .

Ако библиотеката за компресиране на zlib не е достъпна за сървъра, резултатът ще бъде 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

  2. Как да надстроите MariaDB 5.5 до MariaDB 10.1 на CentOS/RHEL 7 и Debian системи

  3. 6 често срещани сценария за неуспехи за MySQL и MariaDB и как да ги поправите

  4. Как да идентифицираме проблеми с производителността на MySQL с бавни заявки

  5. MySQL репликация с ProxySQL на WHM/cPanel сървъри:Част втора