Tsurugi 1.4.0 をリリースしました。

概要

Tsurugi 1.4.0では、RTX並列スキャン (RTX使用時のテーブルデータの並列読み出し) 機能が正式機能へと昇格しました。これにより、特にメニーコアマシン環境上でのテーブル全件取得や広範囲検索のSELECT文において大幅な性能向上を実現します。

また、 AlmaLinux および Rocky Linux (Red Hat Enterprise Linux 派生ディストリビューション) に試験的に対応し、より多様なLinux環境でTsurugiを利用することが可能となりました。

その他、SQL関数の追加やドキュメンテーションコメント機能、クライアントAPIやCLIの機能改善を行っています。また、本バージョンではいくつかの重要な不具合修正や細かな改善を行っています。

前バージョンを利用するすべてのユーザーは本バージョンへのアップグレードを強く推奨します。

機能追加と改善

  • SQL

    • 以下の文字列関数に対応
      • LOWER
      • UPPER
      • POSITION
      • CHAR_LENGTH
      • SUBSTR
    • 以下の算術関数に対応
      • ABS
      • MOD
      • FLOOR
      • CEIL
    • テーブル・カラム定義に対するドキュメンテーションコメントの追加
      • CREATE TABLE 文などに対してドキュメンテーションコメント (/** ... */) を付与して実行すると、この内容をテーブル・カラムの付帯情報として登録します。
      • 登録されたドキュメンテーションコメントは各種クライアントAPIや tgsql  \show table コマンドなどで取得することができます。
      • ドキュメンテーションコメント記述例
        /**
        * Example table.
        */
        CREATE TABLE example (
            /** The key column. */
            k INT PRIMARY KEY,
            /** The value column. default: '' */
            v VARCHAR(*) DEFAULT ''
        );
      • tgsql によるドキュメンテーションコメント表示例
        tgsql> \show table example
        ...
        tableName='example'
        description='Example table.'
        (0) k: INT NOT NULL /** The key column. */
        (1) v: VARCHAR(*) NULL /** The value column. default: '' */
    • ドキュメンテーションコメントの詳細については、以下のドキュメントを参照してください。
  • Transaction

    • RTX並列スキャン (RTX使用時のテーブルデータの並列読み出し)
      • RTX(Read Only Transaction)指定のトランザクションにおいて、SQL実行エンジン上でクエリー実行時のスキャン処理を分割し並列に実行することで、主にテーブルを全件取得したり広範囲に検索するSELECT文の実行を高速化します。
      • 本機能はバージョン1.2.0より試験的機能として提供していましたが、今回のバージョンで以下の改善を行った上で正式機能として昇格しました。
        • 並列処理制御の最適化が行われ、大幅にスケーラビリティが向上しました。特にメニーコアマシン上で並列数を多く設定した場合の性能が大きく改善されました。
        • スキャンのデータ分割処理の最適化が行われ、より効果的かつ安定したスキャンの分割が行えるようになりました。これにより性能の速度向上と安定性の双方が向上しています。
        • その他、データ整合性に関する重要な不具合を修正しています。
      • 本機能はデフォルトで有効となるよう変更されました。
        • 並列数の設定は従来通り scan_default_parallel を使用します。デフォルトの設定値は 4 です。マシンのCPU数が多い場合などではより大きな値を設定することで性能向上が期待できます。環境に応じて適切な値に変更してください。
        • バージョン1.2.0から提供していた、本機能を有効にするためのサーバ設定 dev_rtx_parallel_scan は廃止されました。なお scan_default_parallel  0 に指定することで、本機能を無効にすることが出来ます。
      • RTX並列スキャンの詳細については、以下のドキュメントを参照してください。
  • Client

    • tgsql  \show table コマンドにおいて、以下の情報が表示されるよう対応
      • カラムのデータ型に対するサイズや精度に関する情報
      • カラムに対する NOT NULL 制約の有無
      • テーブル・カラムのドキュメンテーションコメント
    • BLOBパスマッピングAPIの追加
      • BLOB特権モード上でクライアントとサーバ間でBLOBファイルの交換を行う際、ファイルパスを自動的に変換する機能、及びその変換ルールを指定するAPIを追加しました。
      • 詳細については、以下のドキュメントを参照してください。
    • Tsubakuro, Iceaxe でResultSetに対するタイムアウト指定機能を追加
    • Tsubakuro, Iceaxe 利用時のサーバリソースの解放時の挙動を改善
    • Tsubakuro/Rust 0.2.0: Tsurugi 1.4.0 に対応、およびいくつかのAPI追加と改善
  • Distribution

    • 対応OSの追加
      • 本バージョンでは、試験的機能として以下のOSに対応しました。
        • AlmaLinux 9.5
        • Rocky Linux 9.5
      • 上記のOSが標準のパッケージマネージャとして採用している dnf を使用してTsurugiのインストールに必要となるライブラリをインストールするスクリプトを併せて提供しました。インストールの手順については、以下のドキュメントを参照してください。
      • また、以下のOSについては試験的サポートから正式対応に昇格しました。
        • Ubuntu 24.04
      • 対応OSの一覧については、以下のドキュメントを参照してください。
    • 対応C++ツールチェーン(C++コンパイラ)の追加
      • 本バージョンでは、試験的機能として Clang によるTsurugiのビルド/インストールに対応しました。
      • 上記のAlmaLinux, および Rocky Linux においては、Clangを使用したインストールを推奨しています。
    • Tsurugiインストール実行時にコンパイラオプション -march=native (インストール環境に対して検出されたCPUのアーキテクチャに最適化されたコードを生成するオプション) をデフォルトで指定するよう変更。
      • Tsurugi Dockerイメージにはこのオプションは指定されていません。

バグ修正

  • SQL

    • EXPLAIN文にマルチバイト文字などの一部文字を含む場合に実行エラーになる
  • Endpoint

    • IPC接続で稀にResultSetの内容が正しく取得できずデータが欠損することがある
  • Transaction

    • RTXスキャン並列使用時に、SELECT文の実行結果が不正になることがある
    • 実行中のトランザクションを別スレッドから操作した場合に異常な動作となることがある
  • Client

    • tgsql のスクリプトモードでクエリーがエラーになってもコマンドが正常終了する。

アップグレードについて

本バージョンではトランザクションログのフォーマットバージョンが変更されています。バージョン 1.3.0 で利用していたトランザクションログを利用してバージョン 1.4.0 を起動すると、トランザクションログのフォーマットバージョンが自動でアップデートされます。

これにより、バージョン 1.4.0 で起動したトランザクションログはバージョン 1.3.0 では利用できなくなります。また、バージョン 1.4.0 以降で作成したバックアップを バージョン 1.3.0 で復元することもできなくなりますのでご注意ください。

その他、旧バージョンからのアップグレード手順については、以下のドキュメントを参照してください。

その他

本バージョンにおける変更内容の一覧は、以下のChangelogを参照してください。

本バージョンに対する既知の問題、および本バージョンにて修正された問題の補足情報については、以下のリンクを参照してください。