2023.09.13

MariaDB

MariaDB Enterprise Server 10.4.31-21 GA版(リリース日:2023年9月11日)

バックポート

  • JSON_OVERLAPS()がバックポートされました。
    • JSON_OVERLAPS()関数を使用すると、2つのJSONドキュメントを比較し、共通のキーと値のペアまたは配列要素があるかどうかを判断できます。
      SELECT JSON_OVERLAPS('{"A": 1, "B": {"C":2}}', '{"A": 2, "B": {"C":2}}') AS is_overlap;
      +---------------------+
      | is_overlap          |
      +---------------------+
      | 1                   |
      +---------------------+
  • JSON_SCHEMA_VALID()がバックポートされました。
    • JSON_SCHEMA_VALID()関数は、JSON Schema Draft 2020で文書化されているように、JSONスキーマに対してJSONドキュメントを検証するために使用できます。
    • この関数を CHECK 制約で使用して、JSON ドキュメントに必須の項目が含まれている場合にのみデータベースに保存されていること、および、値が指定された範囲と長さ内にあることを確認することもできます。

注目すべき変更点

  • crashlib_password_checkプラグインのパッケージにはSELinuxポリシーが含まれており、プラグインがSELinuxで動作できるようになります。
  • オプティマイザートレースを使用すると、MAX_SEL_ARGSに達するとsel_arg_alloc_limit_hitレコードが書き込まれます。
    • MAX_SEL_ARGSは、複雑なWHERE句に対する時間やメモリを大量に消費する分析のショートカットをトリガーするオプティマイザーの制限の1つです。
    • 例:
      SELECT
        JSON_DETAILED(JSON_EXTRACT(trace, '$**.setup_range_conditions'))
        FROM information_schema.OPTIMIZER_TRACE;
      [
         [
             {
                 "sel_arg_alloc_limit_hit":
                 {
                    "alloced_sel_args": 16001
                 }
             }
         ]
      ]
  • ANALYZE FORMAT=JSONの出力にはInnoDB統計が含まれます。
    • 例:
      "table": {
         "table_name": "t1",
         ...
         "r_engine_stats": {
           "pages_accessed": integer,
           "pages_updated" : integer,
           "pages_read_count" : integer,
           "pages_read_time_ms" : double_val,
           "old_rows_read" : integer,
         },
  • スロークエリログの出力にはInnoDBエンジン情報が含まれます。
    • InnoDBエンジン情報の出力は--log-slow-verbosity=innodbで有効になります。
    • 出力例:
      # Pages_accessed: 184  Pages_read: 95  Pages_updated: 0  Undo_rows_read: 1
      # Pages_read_tim e: 17.0204  Engine_time: 248.1297
      • Engine_timeは、エンジン呼び出し内で費やされた時間(ミリ秒単位)です。
      • Page_*変数は、InnoDBストレージエンジンでサポートされています。
  • Spiderストレージエンジンでは、一部のシステム変数のデフォルト値と動作が変更されました:
    • このリリースより前:
      • これらの変数は、Spiderがデフォルトのテーブル値を使用することを示すために値 -1(デフォルト)を使用しており、この値はユーザーには表示されませんでした。
      • Spiderテーブルパラメータで値を設定できますが、システム変数が-1以外の値に設定されている場合、これらの値はシステム変数の値で上書きされます。
    • このリリースから:
      • これらのシステム変数のデフォルト値は、-1ではなく実際のデフォルトのテーブル値を反映するように更新されました。
      • テーブルパラメータによって値が設定されている場合、この値はシステムのデフォルトとSpiderシステム変数によって設定された値をオーバーライドします。
      • テーブルパラメータが設定されていない場合は、Spiderシステム変数の値が使用されます。この動作は変更されていません。

修正された問題

データ損失が発生する可能性があるもの

  • 並列レプリケーションでは、まれに、FLUSH TABLE WITH READ LOCKS、UNLOCK TABLES、STOP REPLICAのシーケンスが実行されると、レプリカ上のデータが失われることがあります。

ハングまたはクラッシュを引き起こす可能性があるもの

  • Ariaストレージエンジンでは、Aria暗号化が有効になっていて使用されているが、暗号化プラグインがロードされていない場合、サーバーがクラッシュする可能性があります。
  • Galera Clusterでは、wsrep_sst_donorとwsrep_cluster_addressが空の文字列ではなくNULLに設定されていると、サーバーがクラッシュする可能性があります。
  • optimizer_switch='optimize_join_buffer_size=off'が設定されている場合、サーバーがクラッシュする可能性があります。
  • GROUP BYおよびファイルソートのインデックスを使用してSELECTクエリを実行すると、サーバーがクラッシュする可能性があります。
  • MariaDB Connector/Cでは、mysql_list_fields()関数がビューに対して呼び出されると、サーバーがクラッシュする可能性があります。
  • Ariaストレージエンジンでは、Aria aria_sort_buffer_size設定を巨大な数値に変更してINSERT/UPDATEを実行すると、クラッシュが発生する可能性があります。
  • 並列レプリケーションでは、レプリカスレッドが強制終了されると、レプリカノードがクラッシュする可能性があります。
  • InnoDBストレージエンジンでは、slave_Parallel_modeがオプティミスティックであり、slave_Parallel_threadsが0より大きい場合、SEQUENCEがInnoDBを使用すると、ALTER SEQUENCEが順不同のbinlogエラーで失敗する可能性があります。
    • このリリースより前は、次のエラーが発生する可能性がありました:
      Last_Error: Error 'An attempt was made to binlog GTID 0-1-100 which would create an out-of-order sequence number with existing GTID 0-1-100 and gtid stric mode is enabled' on query. Default database: 'test'. Query: 'alter sequence s1 restart with 1' will be shown.
  • レプリケーションでは、セッションで gtid_seq_no が DEFAULT に設定されていると、サーバーがクラッシュする可能性があります。
  • InnoDBストレージエンジンでは、InnoDBテーブル内のBINARY(0)またはVARBINARY(0)列にインデックスが作成されると、サーバーがクラッシュする可能性があります。
  • session_track_system_variablesをグローバルに無効な値に設定すると、サーバーがクラッシュする可能性があります。
  • 古いMariaDBサーバーバージョンから新しいMariaDBサーバーバージョンへのレプリケーションは中断され、サーバーがクラッシュする可能性があります。
    • ハッシュ値の不一致は、異なるハッシュ関数の使用によって引き起こされ、明示的または暗黙的な一意のハッシュインデックスを持つテーブル内の行が、行内のデータが同じであるにもかかわらず、MariaDB Serverの異なるバージョン間では異なる行として扱われました。

予期しない動作を引き起こす可能性があるもの

  • 非バージョン管理列を含むシステムバージョン管理テーブルの場合、最初のINSERTにバージョン管理列が含まれている場合、非バージョン管理列の"on duplicate key update"により履歴レコードが生成されます。
  • Spiderストレージエンジンでは、システム変数を設定すると、テーブルパラメータとして設定された値がオーバーライドされます。
  • "pam_user_map"モジュールは、"@"文字を含むユーザー名またはグループ名を正しく処理しません。
  • 一部のUnicode照合順序では、JSON関数が誤った結果を返す可能性があります。
  • 副選択によって設定されたROW変数を含むストアドルーチンは、誤った結果を生成する可能性があります。
  • 引数が-9223372036854775808として評価されると、整数乗算、DIV、MOD、またはROUND/TRUNCATEが予期しない結果を返す可能性がありました。
  • Galera Clusterでは、TEMPORARY SEQUENCEを作成すると不整合が発生する可能性があります。
  • Galera Clusterでは、クラスターの状態はプライマリコンポーネントからのみ取得できます。
  • あるセッションでストアドルーチンが変更され、そのストアドルーチンが2番目のセッションで使用されている場合、information_schema.PARAMETERSに古いデータが含まれる可能性があります。
  • 複数のRANKウィンドウ関数を使用するクエリでは、間違った結果が生成される可能性があります。
  • < "less than"演算子を使用して文字列と接頭辞付きのBLOBキーを比較するクエリでは、間違った結果が生成されます。
  • max_recursive_iterationsに達すると、再帰的CTEの実行はエラーや警告なしで中断されます。
    • このリリース以降、max_recursive_iterationsに達すると警告が発生します:
      Warning 1931 Query execution was interrupted. The query exceeded max_recursive_iterations = 1000. The query result may be incomplete.
  • Microsoft Windowsでは、lower_case_table_names=2の場合、SHOW TABLESは正しく機能しません。
  • システムがビジー状態の場合、STOP REPLICAに時間がかかることがあります。
  • 並列レプリケーションでは、Seconds_Behind_Masterが間違った値を表示する可能性があります。
  • システムバージョン管理されたテーブルのレプリケーションでは、WITH SYSTEM VERSIONINGの親テーブルと子テーブルがあり、子テーブルに外部キー CASCADEがある場合、レプリカ上に孤立行が生成されます。
  • --forceを使用するとエラーが無視されるはずですが、mariadb-dump --forceは、「Couldn'texecute 'SHOW CREATE FUNCTION `object`':」というエラーで停止する可能性があります。
  • ColumnStoreストレージエンジンとFederatedストレージエンジンを使用すると、ANALYZEがr_rowsに対して誤った値 0を返す可能性があります。
  • ALTER TABLE .. MODIFY COLUMNは外部キー制約を破り、ダンプが復元不能になる可能性があります。
  • InnoDBストレージエンジンでは、UNIQUEキーによる3つの同時DELETEによって、予期しないデッドロックが発生する可能性があります。
  • InnoDBストレージエンジンでは、innochecksumが浮動小数点例外エラーで失敗します。
  • HashiCorpキー管理プラグインを使用すると、メモリリークが発生する可能性があります。
  • 関数 MAX()またはMIN()を引数として関数 ROUND(time)、CEILING(time)、または FLOOR(time)とともに使用すると、間違った結果が返される可能性があります。
  • トランザクションの正確なシステムバージョン管理テーブルの場合、UPDATEは予期しないエラーを返す可能性があります: ERROR 1761 (23000): Foreign key constraint for table 'xxx', record 'yyy' would lead to a duplicate entry in table 'xxx', key 'PRIMARY'
  • 生成された列でフロー制御ステートメント(IF()など)が使用された場合、Item_func::fix_fieldsでアサーション const_item_cache == trueが失敗しました。
  • 仮想列のベース列に定義された外部キー(カスケードアクションを含む)を使用したテーブルの作成は拒否されません。
    • このリリース以降、影響を受ける列の値がSET NULLやON UPDATE CASCADEなどの外部キー制約アクションによって変更される可能性がある場合、STORED生成列とCHECK制約を作成できなくなりました。
      • このリリース以降、これにより次のようなエラーが発生します:
        ERROR 1901 (HY000): Function or expression 'f_id' cannot be used in the GENERATED ALWAYS AS clause of 'v_id'
    • このリリース以降、STORED生成列を含む既存のテーブルでは、SET NULLおよびON UPDATE CASCADEは無視されます。

パフォーマンスに関連するもの

  • パーティショニングを使用すると、クエリが遅くなる可能性があります。

インターフェースの変更

  • aria_sort_buffer_sizeシステム変数の最大値が18446744073709551615から1152921504606846975に変更されました
  • aria_sort_buffer_sizeシステム変数の最小値が4096から16376に変更されました
  • ER_JSON_INVALID_VALUE_FOR_KEYWORDエラーコードが追加されました
  • ER_JSON_SCHEMA_KEYWORD_UNSUPPORTEDエラーコードが追加されました
  • ER_QUERY_EXCEEDED_ROWS_EXAMINED_LIMITエラーコードが削除されました
  • ER_QUERY_RESULT_INCOMPLETEエラーコードが追加されました
  • ER_QUERY_TIMEOUTエラーコードが削除されました
  • ER_UNUSED_1エラーコードが追加されました
  • JSON_OVERLAPS()関数が追加されました
  • JSON_SCHEMA_VALID()関数が追加されました
  • myisam_sort_buffer_sizeシステム変数の最大値が18446744073709551615から1152921504606846975に変更されました

Spiderストレージエンジン

  • spider_auto_increment_modeシステム変数のデフォルト値が-1から0に変更されました
  • spider_bgs_first_readシステム変数のデフォルト値が-1から2に変更されました
  • spider_bgs_modeシステム変数のデフォルト値が-1から0に変更されました
  • spider_bgs_second_readシステム変数のデフォルト値が-1から100に変更されました
  • spider_bka_modeシステム変数のデフォルト値が-1から1に変更されました
  • spider_bka_table_name_typeシステム変数のデフォルト値が-1から0に変更されました
  • spider_buffer_sizeシステム変数のデフォルト値が-1から16000に変更されました
  • spider_bulk_sizeシステム変数のデフォルト値が-1から16000に変更されました
  • spider_bulk_update_modeシステム変数のデフォルト値が-1から0に変更されました
  • spider_bulk_update_sizeシステム変数のデフォルト値が-1から16000に変更されました
  • spider_casual_readシステム変数のデフォルト値が-1から0に変更されました
  • spider_connect_timeoutシステム変数のデフォルト値が-1から6に変更されました
  • spider_crd_bg_modeシステム変数のデフォルト値が-1から2に変更されました
  • spider_crd_intervalシステム変数のデフォルト値が-1から51に変更されました
  • spider_crd_modeシステム変数のデフォルト値が-1から1に変更されました
  • spider_crd_syncシステム変数のデフォルト値が-1から0に変更されました
  • spider_crd_typeシステム変数のデフォルト値が-1から2に変更されました
  • spider_crd_weightシステム変数のデフォルト値が-1から2に変更されました
  • spider_delete_all_rows_typeシステム変数のデフォルト値が-1から1に変更されました
  • spider_direct_dup_insertシステム変数のデフォルト値が-1から0に変更されました
  • spider_direct_order_limitシステム変数のデフォルト値が-1から9223372036854775807に変更されました
  • spider_error_read_modeシステム変数のデフォルト値が-1から0に変更されました
  • spider_error_write_modeシステム変数のデフォルト値が-1から0に変更されました
  • spider_first_readシステム変数のデフォルト値が-1から0に変更されました
  • spider_init_sql_alloc_sizeシステム変数のデフォルト値が-1から1024に変更されました
  • spider_internal_limitシステム変数のデフォルト値が-1から9223372036854775807に変更されました
  • spider_internal_offsetシステム変数のデフォルト値が-1から0に変更されました
  • spider_internal_optimizeシステム変数のデフォルト値が-1から0に変更されました
  • spider_internal_optimize_localシステム変数のデフォルト値が-1から0に変更されました
  • spider_load_crd_at_startupシステム変数のデフォルト値が-1から1に変更されました
  • spider_load_sts_at_startupシステム変数のデフォルト値が-1から1に変更されました
  • spider_low_mem_readシステム変数のデフォルト値が-1から1に変更されました
  • spider_max_orderシステム変数のデフォルト値が-1から32767に変更されました
  • spider_multi_split_readシステム変数のデフォルト値が-1から100に変更されました
  • spider_net_read_timeoutシステム変数のデフォルト値が-1から600に変更されました
  • spider_net_write_timeoutシステム変数のデフォルト値が-1から600に変更されました
  • spider_quick_modeシステム変数のデフォルト値が-1から3に変更されました
  • spider_quick_page_byteシステム変数のデフォルト値が-1から10485760に変更されました
  • spider_quick_page_sizeシステム変数のデフォルト値が-1から1024に変更されました
  • spider_read_only_modeシステム変数のデフォルト値が-1から0に変更されました
  • spider_reset_sql_allocシステム変数のデフォルト値が-1から1に変更されました
  • spider_Second_readシステム変数のデフォルト値が-1から0に変更されました
  • spider_select_column_modeシステム変数のデフォルト値が-1から1に変更されました
  • spider_selupd_lock_modeシステム変数のデフォルト値が-1から1に変更されました
  • spider_semi_split_readシステム変数のデフォルト値が-1から2に変更されました
  • spider_semi_split_read_limitシステム変数のデフォルト値が-1から9223372036854775807に変更されました
  • spider_semi_table_lockシステム変数のデフォルト値が1から0に変更されました
  • spider_semi_table_lock_connectionシステム変数のデフォルト値が-1から1に変更されました
  • spider_skip_default_conditionシステム変数のデフォルト値が-1から0に変更されました
  • spider_skip_Parallel_searchシステム変数のデフォルト値が-1から0に変更されました
  • spider_split_readシステム変数のデフォルト値が-1から9223372036854775807に変更されました
  • spider_store_last_crdシステム変数のデフォルト値が-1から1に変更されました
  • spider_store_last_stsシステム変数のデフォルト値が-1から1に変更されました
  • spider_sts_bg_modeシステム変数のデフォルト値が-1から2に変更されました
  • spider_sts_intervalシステム変数のデフォルト値が-1から10に変更されました
  • spider_sts_modeシステム変数のデフォルト値が-1から1に変更されました
  • spider_sts_syncシステム変数のデフォルト値が-1から0に変更されました
  • spider_udf_ct_bulk_insert_intervalシステム変数のデフォルト値が-1から10に変更されました
  • spider_udf_ct_bulk_insert_rowsシステム変数のデフォルト値が-1から100に変更されました
  • spider_udf_ds_bulk_insert_rowsシステム変数のデフォルト値が-1から3000に変更されました
  • spider_udf_ds_table_loop_modeシステム変数のデフォルト値が-1から0に変更されました
  • spider_udf_ds_use_real_tableシステム変数のデフォルト値が-1から0に変更されました
  • spider_use_handlerシステム変数のデフォルト値が-1から0に変更されました
  • spider_use_table_charsetシステム変数のデフォルト値が-1から1に変更されました

プラットフォーム

エンタープライズライフサイクルに合わせて、MariaDB Enterprise Server 10.4.31-21は次のプラットフォームに提供されます:

  • CentOS 7 (x86_64)
  • Debian 10 (x86_64, ARM64)
  • Microsoft Windows (x86_64) (MariaDB Enterprise Clusterは除く)
  • Red Hat Enterprise Linux 7 (x86_64)
  • Red Hat Enterprise Linux 8 (x86_64, ARM64)
  • Rocky Linux 8 (x86_64、ARM64 Red Hat Enterprise Linux 8パッケージ)
  • SUSE Linux Enterprise Server 12 (x86_64)
  • SUSE Linux Enterprise Server 15 (x86_64, ARM64)
  • Ubuntu 20.04 (x86_64, ARM64)

MariaDB Enterprise Serverの一部のコンポーネントは、全てのプラットフォームをサポートしているわけではありません。


MariaDB Enterprise Server 10.4.31-21のリリースノート(MariaDB社ウェブサイト):
https://mariadb.com/docs/server/release-notes/mariadb-enterprise-server-10-4/10-4-31-21/


MariaDBプロダクト・サポート・サービス

MariaDB
MariaDBプロダクト・サポート・サービスは、MariaDBおよびその関連製品をご利用されているお客様へ、必要なソフトウェアや専門的なサポートなどを提供するサービスです。