Spec-Zone.ru › MySQL Connectors 1.0

10.1 Сжатие соединений с помощью X DevAPI

Connector/J поддерживает сжатие данных для соединений X DevAPI при работе с MySQL Server 8.0.19 и более поздними версиями. Общие сведения об этой функции можно найти в . Подробности о настройке сжатия соединений для Connector/J см. в описаниях свойств соединения xdevapi.compression, xdevapi.compression-algorithms и xdevapi.compression-extensions в разделе 6.3 «Свойства конфигурации». Ниже приведено описание этой функции:

Алгоритмы сжатия, которые должны быть согласованы с сервером, и приоритет согласования могут быть указаны с помощью свойства соединения xdevapi.compression-algorithms. Оно принимает список [algorithm-name]_[operation-mode], разделенных запятыми (,). Если свойство не установлено, используется значение по умолчанию “zstd_stream,lz4_message,deflate_stream”. Приоритет согласования соответствует порядку расположения алгоритмов в списке. Явное задание пустой строки для свойства означает отключение сжатия для соединения.

Примечание

При указании алгоритмов сжатия с помощью xdevapi.compression-algorithms можно использовать псевдонимы zstd, lz4 и deflate вместо zstd_stream, lz4_message и deflate_stream соответственно.

Из всех алгоритмов сжатия, сейчас поддерживаемых MySQL Server для соединений X DevAPI, Connector/J предоставляет поддержку Deflate "из коробки"; это связано с тем, что ни один из других алгоритмов сжатия (LZ4 и zstd, пока) не поддерживается существующими JRE. Для поддержки этих алгоритмов приложение-клиент должно предоставить реализации соответствующих операций сжатия и распаковки в виде объекта OutputStream и объекта InputStream соответственно. Самый простой способ сделать это — использовать стороннюю библиотеку, например Apache Commons Compress, которая поддерживает LZ4 и zstd. Опция соединения xdevapi.compression-extensions позволяет пользователям настроить Connector/J для использования любого алгоритма сжатия, поддерживаемого MySQL Server, при условии наличия Java-реализации для этого алгоритма. Опция принимает список троек, разделенных запятыми (,), и каждая тройка, в свою очередь, содержит следующие элементы, разделенные двоеточиями (:):

  • Название алгоритма сжатия, указанное идентификатором, используемым сервером (см. ; псевдонимы, упомянутые в примечании, выше, могут быть использованы).

  • Полное имя класса, реализующего интерфейс java.io.InputStream, который будет использоваться для распаковки данных, сжатых указанным алгоритмом.

  • Полное имя класса, реализующего интерфейс java.io.OutputStream, который будет использоваться для сжатия данных с использованием указанного алгоритма.

Вот пример настройки поддержки алгоритмов lz4_message и zstd_stream с использованием библиотеки Apache Commons Compress:

String connStr = "jdbc:mysql://johndoe:secret@localhost:33060/mydb?"
    + "xdevapi.compression-extensions="
    + "lz4_message"+":" // LZ4 triplet
    + FramedLZ4CompressorInputStream.class.getName() + ":"
    + FramedLZ4CompressorOutputStream.class.getName() + ","
    + "zstd_stream"+":" // zstd triplet
    + ZstdCompressorInputStream.class.getName() + ":"
    + ZstdCompressorOutputStream.class.getName();
SessionFactory sessFact = new SessionFactory();
Session sess = sessFact.getSession(connStr);
Collection col = sess.getDefaultSchema().getCollection("myCollection");
// (...)
sess.close();
Примечание

Для Connector/J 8.0.21 и более ранних версий: Свойство соединения xdevapi.compression-extensions, описанное выше, называется xdevapi.compression-algorithm для Connector/J 8.0.21 и более ранних версий, а элементы в каждой тройке должны быть разделены запятыми (,) вместо двоеточий (:).

Переговоры об алгоритме сжатия по умолчанию производятся (xdevapi.compression=Preferred по умолчанию), если свойство соединения xdevapi.compression не установлено в значение DISABLED. Окончательный выбор алгоритма сжатия зависит от того, какие алгоритмы включены на сервере. По умолчанию, поскольку сжатие не требуется, если согласование не удается, соединение не будет сжато, но клиент все равно сможет взаимодействовать с сервером; однако, если свойство соединения xdevapi.compression установлено в REQUIRED, попытка соединения завершается ошибкой, если ни один алгоритм не может быть согласован успешно.

© 2025 Oracle
Licensed under the GPLv2 License.
https://docs.oracle.com/cd/E17952_01/connector-j-en/connector-j-connection-compression-xdevapi.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API