MySQL Shell 8.0  /  ...  /  MySQL Shell 8.0.20 以降の圧縮制御

このページは機械翻訳したものです。

4.3.4.1 MySQL Shell 8.0.20 以降の圧縮制御

MySQL Shell 8.0.20 から、X プロトコル 接続および クラシック MySQL プロトコル 接続の場合、MySQL Server インスタンスへの接続を管理するセッションオブジェクトを作成するたびに、その接続の圧縮が必要か、優先か、無効かを指定できます。

  • required はサーバーから圧縮接続をリクエストし、サーバーが圧縮をサポートしていないか、圧縮プロトコルで MySQL Shell と一致しない場合、接続は失敗します。

  • サーバーが圧縮をサポートしていないか、圧縮プロトコルで MySQL Shell に同意できない場合、preferred はサーバーから圧縮接続をリクエストし、圧縮されていない接続にフォールバックします。 これは、X プロトコル 接続のデフォルトです。

  • disabled は圧縮されていない接続をリクエストし、サーバーが圧縮された接続のみを許可している場合、接続は失敗します。 これは、クラシック MySQL プロトコル 接続のデフォルトです。

MySQL Shell 8.0.20 から、接続に使用できる圧縮アルゴリズムを選択することもできます。 デフォルトでは、MySQL Shell は zlib、LZ4 および zstd アルゴリズムを X プロトコル 接続用にサーバーに提案し、クラシック MySQL プロトコル 接続用に zlib および zstd アルゴリズムを提案します (LZ4 アルゴリズムはサポートしていません)。 これらのアルゴリズムの任意の組合せを指定できます。 圧縮アルゴリズムを指定する順序は、MySQL Shell がそれらを提案するプリファレンスの順序ですが、プロトコルおよびサーバー構成によっては、サーバーがこのプリファレンスの影響を受けない場合があります。

圧縮アルゴリズムまたはその組合せを指定すると、接続の圧縮が自動的にリクエストされるため、圧縮が必要か、優先か、無効かを指定するために別のパラメータを使用するかわりに、圧縮を行うことができます。 この接続圧縮制御方法では、オプション uncompressed (圧縮されていない接続を許可) を圧縮アルゴリズムのリストに追加することで、圧縮が必要か優先かを指定します。 uncompressed を含める場合は圧縮が推奨され、含めない場合は圧縮が必要です。 uncompressed を単独で渡して、圧縮が無効であることを指定することもできます。 圧縮が必要、優先または無効であることを別のパラメータで指定すると、圧縮アルゴリズムのリストで uncompressed を使用するよりも優先されます。

接続の数値圧縮レベルを指定することもできます。これは、X プロトコル 接続の圧縮アルゴリズム、または クラシック MySQL プロトコル 接続の zstd アルゴリズムにのみ適用されます。 X プロトコル 接続の場合、指定した圧縮レベルが最終的に選択されたアルゴリズムに対してサーバーで受け入れられないと、サーバーは X プラグイン での接続圧縮 にリストされている動作に従って適切な設定を選択します。 たとえば、MySQL Shell が zlib アルゴリズムの圧縮レベル 7 を要求し、サーバーの mysqlx_deflate_max_client_compression_level システム変数 (deflate、または zlib、圧縮の最大圧縮レベルを制限) がデフォルトの 5 に設定されている場合、サーバーは最大許容圧縮レベル 5 を使用します。

MySQL サーバーインスタンスがプロトコルの接続圧縮をサポートしていない場合 (MySQL 8.0.19 for X プロトコル 接続の前の場合)、または接続圧縮をサポートしているが接続アルゴリズムおよび圧縮レベルの指定をサポートしていない場合、MySQL Shell はサポートされていないパラメータを指定せずに接続を確立します。

MySQL Shell 8.0.20 からの接続の圧縮をリクエストするには、次のいずれかの方法を使用します:

  • コマンドラインから MySQL Shell を起動し、別のコマンドオプションを使用して接続パラメータを指定する場合は、--compress (-C) オプションを使用して、接続の圧縮が必要か、優先か、無効かを指定します。 例:

    shell> mysqlsh --mysqlx -u user -h localhost -C required

    --compress (-C) オプションは、以前のリリースの MySQL Shell (MySQL 8.0.14 に戻る) と互換性があり、これらのリリースのブール設定を受け入れます。 MySQL Shell 8.0.20 から、パラメータを指定せずに --compress (-C) のみを指定した場合、接続には圧縮が必要です。

    前述の X プロトコル 接続の例では、zlib、LZ4 および zstd アルゴリズムをこの優先順位でサーバーに提案しています。 圧縮アルゴリズムの代替の組合せが必要な場合は、--compression-algorithms オプションを使用して、許可されているアルゴリズムのカンマ区切りリストで文字列を指定することで、これを指定できます。 X プロトコル 接続の場合、zliblz4 および zstd を任意の組合せおよび順序で使用できます。 クラシック MySQL プロトコル 接続の場合、zlib および zstd を任意の組合せおよび順序で使用できます。 クラシック MySQL プロトコル 接続の次の例では、zstd アルゴリズムのみが許可されます:

    shell> mysqlsh --mysql -u user -h localhost -C preferred --compression-algorithms=zstd

    --compress (-C) オプションを指定せずに --compression-algorithms のみを使用して、圧縮をリクエストすることもできます。 この場合、非圧縮接続を許可する場合はアルゴリズムのリストに uncompressed を追加し、許可しない場合は省略します。 この形式の接続圧縮制御は、mysqlmysqlbinlog などの他の MySQL クライアントと互換性があります。 クラシック MySQL プロトコル 接続の次の例は、preferred が別のオプションとして指定されている (つまり、zstd アルゴリズムで圧縮を提案するが、圧縮されていない接続にフォールバックする) 前述の例と同じ効果があります:

    shell> mysqlsh --mysql -u user -h localhost --compression-algorithms=zstd,uncompressed

    --compression-level または --zstd-compression-level オプションを使用して圧縮レベルを構成できます。これらのオプションは、クラシック MySQL プロトコル 接続に対しては検証されますが、X プロトコル 接続に対しては検証されません。--compression-level では、X プロトコル 接続の場合はアルゴリズムの圧縮レベルに整数を指定し、クラシック MySQL プロトコル 接続の場合は zstd アルゴリズムにのみ整数を指定します。--zstd-compression-level では、zstd アルゴリズムの圧縮レベルに 1 から 22 の整数を指定し、mysqlmysqlbinlog などの他の MySQL クライアントと互換性があります。 たとえば、X プロトコル 接続の次の接続パラメータは、圧縮がグローバルセッションに必要であり、リクエストされた圧縮レベルが 5 の LZ4 または zstd アルゴリズムを使用する必要があることを指定します:

    shell> mysqlsh --mysqlx -u user -h localhost -C required --compression-algorithms=lz4,zstd --compression-level=5
  • URI に似た接続文字列を使用して、コマンドライン、MySQL Shell\connect コマンド、shell.connect(), shell.openSession(), mysqlx.getSession(), mysql.getSession() または mysql.getClassicSession() 関数のいずれかから接続パラメータを指定する場合は、クエリー文字列で compression パラメータを使用して、圧縮が必要か、優先か、無効かを指定します。 例:

    mysql-js> \connect user@example.com?compression=preferred
    shell> mysqlsh mysqlx://user@localhost:33060?compression=disabled

    コマンドラインオプションと同様に、compression-algorithms パラメータを使用して圧縮アルゴリズムを選択し、compression-level パラメータを使用して圧縮レベルを選択します。 (URI のような接続文字列には、zstd 固有の圧縮レベルパラメータはありません。) compression パラメータを指定せずに compression-algorithms パラメータを使用することもできます。これには、圧縮されていない接続を許可または禁止する uncompressed オプションも含まれます。 たとえば、これらの両方の接続パラメータのセットでは、圧縮は推奨されますが、圧縮されていない接続が許可され、zlib および zstd アルゴリズムが受け入れられ、圧縮レベル 4 を使用するように指定します:

    mysql-js> \connect user@example.com:33060?compression=preferred&compression-algorithms=zlib,zstd&compression-level=4
    mysql-js> \connect user@example.com:33060?compression-algorithms=zlib,zstd,uncompressed&compression-level=4
  • キーと値のペアを使用して、MySQL Shell\connect コマンド、shell.connect(), shell.openSession(), mysqlx.getSession(), mysql.getSession() または mysql.getClassicSession() 関数のいずれかで接続パラメータを指定する場合は、オプションのディクショナリで compression パラメータを使用して、圧縮が必要か、優先か、無効かを指定します。 例:

    mysql-js>  var s1=mysqlx.getSession({host: 'localhost',
                                         user: 'root',
                                         password: 'password',
                                         compression: 'required'});

    compression-algorithms パラメータを使用して圧縮アルゴリズムを選択し、compression-level パラメータを使用して、コマンドラインおよび URI のような接続文字列メソッドと同様に圧縮レベルを選択します。 (キーと値のペアの zstd 固有の圧縮レベルパラメータはありません。) compression パラメータを指定せずに compression-algorithms パラメータを使用することもできます。これには、圧縮されていない接続を許可または禁止する uncompressed オプションも含まれます。