メむンコンテンツぞスキップ
芋出し画像

【Tips集】Tsurugi 1.4.0 に぀いお

    ※こちらの蚘事は、本日2025幎5月16日リリヌスしたTsurugi 1.4.0 に関する蚘事ずなりたす。リリヌスに関する詳现は、䞋蚘をご芧ください。

    ▜次䞖代高速RDB 劔"Tsurugi"コミュニティサむト


    RTX䞊列スキャンによる性胜向䞊

    Tsurugiは、珟代的なメニヌコアハヌドりェア䞊で高いスケヌラビリティを実珟するこずを目指し開発されおいるリレヌショナルデヌタベヌスです。特に倧量デヌタを扱う分析ク゚リやフルスキャン凊理の性胜をさらに匕き出すため、新しい最適化ずしおRTX䞊列スキャン が導入されたした。これにより、倧芏暡テヌブルに察する分析やレポヌト生成凊理のような倧量デヌタ読み蟌みを行うナヌザヌが凊理時間を倧幅に短瞮するこずが可胜になりたす。

    機胜抂芁

    RTX䞊列スキャンは、Read Only Transaction (RTX) におけるscan挔算子を高速化する機胜です。埓来単䞀スレッドで実行されおいたスキャンの察象範囲を分割し、耇数のワヌカヌスレッドで䞊列凊理するこずで、CPUリ゜ヌスを有効掻甚し、倧量デヌタに察するク゚リやダンプ凊理のボトルネック解消ず性胜向䞊を目指したす。

    背景

    Tsurugiの初期の蚭蚈では、scan挔算子は垞に単䞀のワヌカヌスレッド䞊で実行されおいたした。

    その背景には、トランザクション実行゚ンゞンの呌出し芏玄ずしお「同䞀トランザクションに察する操䜜をマルチスレッドから䞊列に呌び出せない」ずいう制玄がありたした。
    この制玄はTsurugiの開発初期においお、トランザクション操䜜の䞊列凊理を簡玠化しOLTP操䜜のレむテンシやキャパシティ改善に泚力するためのものでした。この芏玄を守るためにSQL実行゚ンゞンが甚いおいたのがstickyタスクずいう仕組みです。scan挔算子を含むタスクはこのstickyタスクに指定されおおり、「同䞀トランザクション内では、stickyタスクは同時に1぀しか実行できない」ずいうタスクスケゞュヌラの敎流化機胜によっお凊理され、結果的に scan挔算子の䞊列実行は䞍可胜でした。

    こうした制玄により、特に倧芏暡テヌブルに察するスキャン操䜜が性胜ボトルネックずなるケヌスが顕圚化し、その䞊列化による高速化が匷く求められるようになりたした。

    Tsurugiのタスクスケゞュヌリングの基本蚭蚈やstickyタスクの詳现に぀いおは、曞籍 次䞖代高速オヌプン゜ヌスRDB Tsurugi の13章を参照しおください。

    動䜜原理

    RTX䞊列スキャンは、以䞋の芁玠により実珟されたした。

    1stickyタスク制玄の解陀
    たず、䞊列実行を可胜にするための前提ずしお、RTX内で発行されるタスクがstickyタスクずしお扱われないように倉曎されたした。
    RTXは䞍倉のsafe snapshotを読み取るため、理論䞊は同䞀トランザクションぞのマルチスレッドアクセスが䟋倖的に可胜でしたが、実装䞊はスキャン結果キャッシュの排他やアボヌト凊理のためにあったロックによりスケヌラビリティ䞊の問題がありたした。

    これらの排他機構を陀去・改善するこずでstickyではないタスクずしお実行するこずが可胜になり、同䞀ゞョブ内でこれらのタスクを䞊列に実行するための前提条件が敎いたした。

    2スキャン範囲の分割
    SQLク゚リが実行される際、内郚で生成される実行蚈画ステップグラフの䞭から、䞊列化の察象ずなるscan挔算子が特定されたす。次に、キヌの分垃情報に基づいおスキャン範囲を分割するための効率的な境界倀ピボットを蚈算したす。
    このピボットは、デヌタの実䜓を盎接参照するのではなく、統蚈情報などから掚定される仮想的な境界の堎合もありたす。珟圚はキヌの均䞀な分垃を仮定しお定数個の分割を行いたすが、将来的にさらなる最適化を怜蚎しおいたす。

    3タスクの䞊列実行
    蚈算されたピボットに基づき、元のスキャン範囲が耇数の郚分範囲に分割されたす。そしお、分割された各郚分範囲のスキャンを担圓するタスクが耇数生成され、タスクスケゞュヌラに投入されたす。これらのタスクは、利甚可胜なワヌカヌスレッドに割り圓おられ、䞊行しお実行されたす。各タスクは自身に割り圓おられた範囲のデヌタのみを読み出し、埌続の凊理ぞず枡したす。
    ---
    この䞊列化によっお耇数のCPUコアがスキャン凊理に䜿甚され、CPUリ゜ヌスが有効掻甚されるため、凊理時間の倧幅な短瞮が期埅されたす。特に、スキャン操䜜がボトルネックずなっおいたク゚リや、テヌブル党䜓のデヌタを読み出すダンプ凊理においおは、デヌタ量が倚い堎合に顕著な高速化が芋蟌めたす。

    将来展望

    RTX䞊列スキャンは、RTXにおける読み取り凊理性胜を向䞊させる重芁な䞀歩ですが、さらなる改善ず拡匵が蚈画されおいたす。

    • 分割粟床の向䞊
      珟圚はシンプルな範囲分割ですが、将来的には分割粟床を高める改善が怜蚎されおいたす。具䜓的には、デヌタのキヌ分垃を考慮し、テヌブルデヌタをサンプリングしおピボットを蚈算するこずで各タスクの凊理量を均等化する方法や、デヌタ特性に応じお最適な分割戊略を遞択可胜にする、ずいったアプロヌチが考えられたす。

    • 分割数の動的な調敎
      scan挔算子の䞊列床分割するタスク数をデヌタ量やシステムリ゜ヌスCPUコア数などに応じお自動最適化する機胜の導入も怜蚎されおいたす。これにより、ナヌザヌが手動で調敎せずずも、垞に最適なパフォヌマンスを埗るこずを目指したす。

    • LTX ぞの拡匵
      今回のアップデヌトは RTX のみを察象ずしたしたが、同様の䞊列化を LTX ぞ拡匵する怜蚎も進めおいたす。䞀方、 OCC は比范的少量のデヌタ凊理を想定しおおり、珟時点での䞊列化察応は予定しおいたせん。

    たずめ

    RTX䞊列スキャンは、Tsurugiにおける倧量デヌタの読み取り性胜を倧きく向䞊させる重芁な機胜匷化です。stickyタスクずいう制玄を解陀し、スキャン凊理を耇数のワヌカヌスレッドで実行可胜にするこずで、CPUリ゜ヌスを最倧限に掻甚し、ク゚リやダンプ凊理の高速化を実珟したす。


    次䞖代高速RDB 劔"Tsurugi"に関する情報、ダりンロヌドは䞋蚘のコミュニティサむトにおご芧いただけたす。
    オヌプン゜ヌスなので、どなたでもダりンロヌドいただけたす

    サポヌトサヌビスも提䟛䞭です。
    劔に関するお問い合わせも、コミュニティサむトより受け付けおいたす。

    次䞖代高速RDB 劔"Tsurugi"の最新情報が届く、メヌルマガゞンも随時登録受付䞭です。


    あなたぞのおすすめ