Spec-Zone.ru › MySQL 9.2

6.2.8 Управление сжатием соединений

Соединения с сервером могут использовать сжатие трафика между клиентом и сервером для уменьшения количества отправленных байтов по соединению. По умолчанию соединения не сжаты, но могут быть сжаты, если сервер и клиент согласятся на взаимно допустимый алгоритм сжатия.

Сжатые соединения инициализируются со стороны клиента, но влияют на нагрузку ЦП как на стороне клиента, так и на стороне сервера, поскольку обе стороны выполняют операции сжатия и распаковки. Поскольку включение сжатия снижает производительность, его преимущества проявляются в основном при низкой пропускной способности сети, когда время передачи по сети доминирует над затратами на операции сжатия и распаковки, и когда результирующие наборы данных велики.

В этом разделе описаны доступные параметры конфигурации управления сжатием и источники информации для мониторинга использования сжатия. Он применим к соединениям с классическим протоколом MySQL.

Управление сжатием применяется к соединениям с сервером клиентскими программами и серверами, участвующими в репликации source/replica или Group Replication. Управление сжатием не применяется к соединениям для FEDERATED таблиц. В последующем обсуждении “соединение клиента” — это сокращение для соединения с сервером, исходящего из любого источника, для которого поддерживается сжатие, если контекст не указывает на конкретный тип соединения.

Примечание

Соединения X Protocol с экземпляром MySQL Server поддерживают сжатие, но сжатие для соединений X Protocol работает независимо от сжатия для соединений с классическим протоколом MySQL, описанного здесь, и управляется отдельно. См. Раздел 22.5.5, «Сжатие соединений с плагином X» для получения информации о сжатии соединений X Protocol.

  • Настройка сжатия соединений

  • Настройка сжатия устаревшего соединения

  • Мониторинг сжатия соединений

Настройка сжатия соединения

Эти параметры конфигурации доступны для управления сжатием соединения:

  • Переменная системы protocol_compression_algorithms настраивает алгоритмы сжатия, которые сервер разрешает для входящих соединений.

  • Командные параметры --compression-algorithms и --zstd-compression-level настраивают разрешенные алгоритмы сжатия и уровень сжатия zstd для этих клиентских программ: mysql, mysqladmin, mysqlbinlog, mysqlcheck, mysqldump, mysqlimport, mysqlshow, mysqlslap и mysqltest. MySQL Shell также предлагает эти командные параметры.

  • Параметры MYSQL_OPT_COMPRESSION_ALGORITHMS и MYSQL_OPT_ZSTD_COMPRESSION_LEVEL для функции настраивают разрешенные алгоритмы сжатия и уровень сжатия zstd для клиентских программ, использующих MySQL C API.

  • Параметры SOURCE_COMPRESSION_ALGORITHMS и SOURCE_ZSTD_COMPRESSION_LEVEL для оператора CHANGE REPLICATION SOURCE TO настраивают разрешенные алгоритмы сжатия и уровень сжатия zstd для серверов репликации, участвующих в репликации источник/реплика.

  • Переменные системы group_replication_recovery_compression_algorithms и group_replication_recovery_zstd_compression_level настраивают разрешенные алгоритмы сжатия и уровень сжатия zstd для соединений восстановления Group Replication, когда новый член присоединяется к группе и подключается к донору.

Параметры конфигурации, позволяющие указать алгоритмы сжатия, имеют строковое значение и принимают список одного или более имен алгоритмов сжатия, разделенных запятыми в любом порядке, выбранных из следующих пунктов (регистр не учитывается):

  • zlib: Разрешить подключения, использующие алгоритм сжатия zlib.

  • zstd: Разрешить подключения, использующие алгоритм сжатия zstd.

  • uncompressed: Разрешить несжатые подключения.

Примечание

Поскольку uncompressed — это имя алгоритма, которое может быть или не быть настроено, возможно настроить MySQL, чтобы не разрешать несжатые подключения.

Примеры:

  • Чтобы настроить алгоритмы сжатия, которые сервер разрешает для входящих соединений, задайте переменную системы protocol_compression_algorithms. По умолчанию сервер разрешает все доступные алгоритмы. Чтобы явно настроить это значение при запуске, используйте эти строки в файле сервера my.cnf:

    [mysqld]
    protocol_compression_algorithms=zlib,zstd,uncompressed
    

    Чтобы установить и сохранить переменную системы protocol_compression_algorithms в этом значении во время выполнения, используйте это утверждение:

    SET PERSIST protocol_compression_algorithms='zlib,zstd,uncompressed';
    

    SET PERSIST устанавливает значение для работающего экземпляра MySQL. Он также сохраняет значение, что позволит его использовать при последующих перезапусках сервера. Чтобы изменить значение для работающего экземпляра MySQL без сохранения его для последующих перезапусков, используйте ключевое слово GLOBAL вместо PERSIST. См. Раздел 15.7.6.1, «Синтаксис SET для присваивания переменных».

  • Чтобы разрешить только входящие подключения, использующие сжатие zstd, настройте сервер при запуске следующим образом:

    [mysqld]
    protocol_compression_algorithms=zstd
    

    Или, чтобы внести изменения во время выполнения:

    SET PERSIST protocol_compression_algorithms='zstd';
    
  • Чтобы разрешить клиенту mysql инициировать подключения с zlib или uncompressed, вызовите его так:

    mysql --compression-algorithms=zlib,uncompressed
    
  • Чтобы настроить реплики на подключение к источнику с использованием соединений zlib или zstd, с уровнем сжатия 7 для zstd соединений, используйте оператор CHANGE REPLICATION SOURCE TO:

    CHANGE REPLICATION SOURCE TO
      SOURCE_COMPRESSION_ALGORITHMS = 'zlib,zstd',
      SOURCE_ZSTD_COMPRESSION_LEVEL = 7;
    

    Предполагается, что переменная системы replica_compressed_protocol отключена, по причинам, описанным в Настройка сжатия соединений устаревшего формата.

Для успешного подключения обе стороны должны согласовать взаимно разрешенный алгоритм сжатия. Процесс согласования алгоритма пытается использовать zlib, затем zstd, затем uncompressed. Если две стороны не могут найти общий алгоритм, попытка подключения завершается неудачей.

Поскольку обе стороны должны договориться об алгоритме сжатия, и поскольку uncompressed является значением алгоритма, которое необязательно разрешено, откат к несжатому подключению необязательно происходит. Например, если сервер настроен на разрешение zstd, а клиент настроен на разрешение zlib,uncompressed, клиент вообще не сможет подключиться. В этом случае ни один алгоритм не является общим для обеих сторон, поэтому попытки подключения завершаются неудачей.

Параметры конфигурации, позволяющие задавать уровень сжатия zstd, принимают целое значение от 1 до 22, при этом большие значения указывают на повышение уровня сжатия. Уровень сжатия zstd по умолчанию равен 3. Настройка уровня сжатия не влияет на подключения, которые не используют сжатие zstd.

Настраиваемый уровень сжатия zstd позволяет выбирать между меньшим объемом сетевого трафика и большей нагрузкой на ЦП или большим объемом сетевого трафика и меньшей нагрузкой на ЦП. Более высокие уровни сжатия уменьшают сетевую нагрузку, но дополнительная нагрузка на ЦП может снизить производительность сервера.

Настройка сжатия устаревших подключений

Прежде чем использовать MySQL 8.0.18, для управления сжатием подключений доступны следующие параметры конфигурации:

  • Клиентские программы поддерживают командную строку --compress, чтобы указать использование сжатия для подключения к серверу.

  • Для программ, использующих MySQL C API, включение параметра MYSQL_OPT_COMPRESS для функции указывает использование сжатия для подключения к серверу.

  • Для репликации источника/реплики включение системной переменной replica_compressed_protocol указывает использование сжатия для подключений реплики к источнику.

В каждом случае, когда указано использование сжатия, подключение использует алгоритм сжатия zlib, если обе стороны его поддерживают, иначе используется несжатое подключение.

Начиная с MySQL 8.0.18, описанные выше параметры сжатия становятся устаревшими из-за дополнительных параметров сжатия для более точного управления сжатием подключений, описанных в Настройка сжатия подключения. Исключением является MySQL Shell, где опция командной строки остается актуальной и может использоваться для запроса сжатия без выбора алгоритмов сжатия. Сведения о управлении сжатием подключений в MySQL Shell см. .

Параметры устаревшего сжатия взаимодействуют с новыми параметрами, и их семантика изменяется следующим образом:

  • Значение устаревшей опции --compress зависит от того, указана ли опция --compression-algorithms:

    • Если --compression-algorithms не указана, --compress эквивалентно указанию набора алгоритмов клиента zlib,uncompressed.

    • Если --compression-algorithms указана, --compress эквивалентно указанию набора алгоритмов zlib, а полный набор алгоритмов клиента — это объединение zlib и алгоритмов, указанных в --compression-algorithms. Например, при использовании как --compress, так и --compression-algorithms=zlib,zstd, разрешенный набор алгоритмов — это zlib плюс zlib,zstd; то есть, zlib,zstd. При использовании как --compress, так и --compression-algorithms=zstd,uncompressed, разрешенный набор алгоритмов — это zlib плюс zstd,uncompressed; то есть, zlib,zstd,uncompressed.

  • Аналогичное взаимодействие происходит между устаревшей опцией MYSQL_OPT_COMPRESS и опцией MYSQL_OPT_COMPRESSION_ALGORITHMS для функции C API.

  • Если системная переменная replica_compressed_protocol включена, она имеет приоритет над SOURCE_COMPRESSION_ALGORITHMS, и подключения к источнику используют алгоритм сжатия zlib, если это поддерживают как источник, так и реплика. Если replica_compressed_protocol отключена, применяется значение SOURCE_COMPRESSION_ALGORITHMS.

Мониторинг сжатия подключения

Статусная переменная Compression равна ON или OFF, чтобы указать, использует ли текущее подключение сжатие.

Клиент mysql \status отображает строку, которая гласит Protocol: Compressed, если для текущего подключения включено сжатие. Если этой строки нет, подключение несжатое.

Команда MySQL Shell \status отображает строку Compression:, которая гласит Disabled или Enabled, чтобы указать, сжато ли подключение.

Доступны дополнительные источники информации для мониторинга сжатия подключений:

  • Для мониторинга используемого сжатия для подключений клиентов используйте статусные переменные Compression_algorithm и Compression_level. Для текущего подключения их значения указывают соответственно алгоритм сжатия и уровень сжатия.

  • Чтобы определить, какие алгоритмы сжатия сервер настроен допускать для входящих подключений, проверьте системную переменную protocol_compression_algorithms.

  • Для подключений репликации источника/реплики доступны сконфигурированные алгоритмы сжатия и уровень сжатия из нескольких источников:

    • Таблица Performance Schema replication_connection_configuration содержит столбцы COMPRESSION_ALGORITHMS и ZSTD_COMPRESSION_LEVEL.

    • Системная таблица mysql.slave_master_info содержит столбцы Master_compression_algorithms и Master_zstd_compression_level. Если файл master.info существует, он также содержит строки для этих значений.

© 2025 Oracle
Licensed under the GPLv2 License.
https://docs.oracle.com/cd/E17952_01/mysql-9.2-en/connection-compression-control.html

Spec-Zone.ru

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