MariaDB
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> MariaDB

Cách hoạt động của COMPRESS () trong MariaDB

Trong MariaDB, COMPRESS() là một hàm tích hợp để nén một chuỗi và trả về kết quả là một chuỗi nhị phân.

COMPRESS() hàm yêu cầu MariaDB phải được biên dịch với một thư viện nén như zlib. Nếu MariaDB chưa được biên dịch với thư viện nén như vậy, hãy COMPRESS() trả về null .

Cú pháp

Cú pháp như sau:

COMPRESS(string_to_compress)

Nơi string_to_compress là chuỗi bạn muốn nén.

Ví dụ

Đây là một ví dụ cơ bản:

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

Kết quả:

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

Ở đây, tôi đã sử dụng LENGTH() hàm để lấy độ dài tính bằng byte của các chuỗi không nén và nén tương ứng. Tôi đã sử dụng REPEAT() chức năng lặp lại cùng một chữ cái 50 lần trước khi nén nó.

Đây là một ví dụ khác sử dụng biểu tượng bản quyền (© ):

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

Kết quả:

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

Biểu tượng bản quyền là một ký tự hai byte và độ dài không nén của nó gấp đôi kích thước của ký tự một byte. Tuy nhiên, việc nén chuỗi ký tự hai byte lặp lại này sẽ đưa nó xuống kích thước tương tự như chuỗi nén các ký tự byte đơn lặp lại.

Đây là một trong những sử dụng ký tự ba byte:

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

Kết quả:

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

Trong trường hợp này, hiệu quả thậm chí còn lớn hơn. Chuỗi ký tự ba byte lặp lại được giảm xuống kích thước tương tự với chuỗi ký tự một và hai byte lặp lại trong các ví dụ trước.

Đối số rỗng

Chuyển null trả về null :

SELECT COMPRESS(null);

Kết quả:

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

Thiếu đối số

Đang gọi COMPRESS() với số lượng đối số sai hoặc không chuyển bất kỳ đối số nào dẫn đến lỗi:

SELECT COMPRESS();

Kết quả:

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

Kiểm tra nén

Như đã đề cập, COMPRESS() hàm yêu cầu MariaDB phải được biên dịch với một thư viện nén như zlib. Nếu MariaDB chưa được biên dịch với thư viện nén như vậy, hãy COMPRESS() trả về null .

Bạn có thể kiểm tra have_compress biến hệ thống để xem liệu máy chủ có truy cập được thư viện nén zlib hay không:

SELECT @@have_compress;

Kết quả:

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

Trong trường hợp này, máy chủ có thể truy cập thư viện nén zlib và kết quả là YES .

Nếu máy chủ không thể truy cập thư viện nén zlib, kết quả sẽ là 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. Cách MAKEDATE () hoạt động trong MariaDB

  2. Phần 2:Phân loại hình ảnh với Máy chủ MariaDB và TensorFlow - Hướng dẫn

  3. Cách ATAN () hoạt động trong MariaDB

  4. Bản phát hành MariaDB AX mới với MariaDB ColumnStore 1.1.3 GA

  5. MariaDB ROWNUM () Giải thích