メインコンテンツへスキップ
見出し画像

【劔"Tsurugi" Tips集】ログデータストアのディスクの性能に注意する【運⽤Tips】

    *****
    こちらの記事は、
    Tsurugi Advent Calendar 2024(https://adventar.org/calendars/10853)
    に参加しています。

    劔"Tsurugi"関連のエンジニアが12月25日までの期間、さまざまな記事を掲載していきます。

    是非、こちらもご覧ください!
    *****

    Tsurugiはインメモリデータベースであり、全てのデータをメモリ上に保持しますが、コンピューターのシャットダウンやプロセスの終了が発⽣してもデータが失われないようにストレージにトランザクションログを記録します。

    このトランザクションログを記録するディレクトリはTsurugiの設定ファイル tsurugi.ini の [datastore]セクション内の設定パラメータ log_location に設定されています。 (デフォルトは$TSURUGI_HOME/var/data) 

    ⼀般的にDBを運⽤する際、データを記録するディレクトリは外付けのデータストレージにすることは多いでしょう。

    Tsurugiはインメモリデータベースですが、デフォルトの設定ではトランザクションログがディスクに永続化されてからコミットの応答を返すようになっているため、書き込み性能がディスクの性能に左右されることに注意してください。

    なお、Tsurugiではトランザクションをコミットした際にDB内でどこまで処理をしたらクライアントに応答を返すかを次の段階で設定することができます。

    ACCEPTTED

    ・コミット操作を受け付けたら制御を返す
    ・この状態でDBがダウンすると当該トランザクションが失われる可能性がある

    AVAILABLE

    ・コミットしたデータが他のトランザクションから⾒えるようになったら応答を返す
    ・この状態でDBがダウンすると当該トランザクションが失われる可能性がある

    STORED (デフォルト)

    ・コミットしたトランザクションがディスクに記録され、永続化に成功した状態で応答を返す
    ・この状態でDBがダウンしても当該トランザクションは失われない

    PROPAGATED

    ・コミットしたトランザクションが全てのノードに伝播した状態で応答を返す
    ・本エントリ執筆段階ではTsurugiは単ノード動作のみであるため、事実上STOREDと同等

    ディスクの性能に問題がある場合、上記設定をACCEPTTEDもしくはAVAILABLEにする (AVAILABLEを強く推奨)ことで書き込み性能を向上させることができます。

    設定変更は次の箇所で⾏います。

    ・tsurugi.ini の [sql] セクション内の設定パラメータ commit_response を変更する
     ・データベース全体に適⽤されます

    ・Iceaxeの列挙型 com.tsurugidb.iceaxe.transaction.TgCommitType に定義されている設定値を次のAPIを⽤いて指定する
     ・TsurugiTransactionManager のコンストラクタ引数に渡す
      com.tsurugidb.iceaxe.transaction.manager.TgTmSetting の commitType() メソッドで設定する
     ・TsurugiTransaction#commit() の引数に渡す

    ・Tsurugi SQLコンソール (tgsql) にてSQLの COMMIT WAIT FOR ⽂を⽤いて指定する
     ・AVAILABLEでコミットを実⾏したい場合は COMMIT WAIT FOR AVAILABLE と実⾏する


    その他の劔"Tsurugi"を使う際に役立つTips集はコチラ!

    次世代高速RDB劔"Tsurugi"は、オープンソースで公開中です。
    ぜひダウンロードしてみて、触ってみてください。

    ダウンロードはコチラから
    https://www.tsurugidb.com/

    あなたへのおすすめ