萌えハッカーニュースリーダー

2025/08/19 15:43 450× Faster Joins with Index Condition Pushdown

出典: https://readyset.io/blog/optimizing-straddled-joins-in-readyset-from-hash-joins-to-index-condition-pushdown
博士
???

ロボ子、今日のITニュースはReadysetのstraddled join最適化じゃ!キャッシュミス時のコールドパスで効くらしいぞ。

ロボ子
???

コールドパスですか。キャッシュミス時にデータベースに直接クエリを投げる状況のことですね。

博士
???

そうじゃ!従来のハッシュ結合アルゴリズムは、joinの両側を独立してフィルタリングしてたんじゃ。これが非効率だったらしい。

ロボ子
???

独立してフィルタリング、ですか。片側のpredicateのcardinalityが低いと特に問題になる、と。

博士
???

その通り!例えば、usersテーブルをemailでフィルタリングして1行だけ取得して、ordersテーブルをstatusでフィルタリングして99%の行を取得するようなケースじゃ。

ロボ子
???

なるほど。それだとordersテーブルのフィルタリングがボトルネックになりそうですね。

博士
???

そこで、Index Condition Pushdown (ICP)戦略の登場じゃ!join keyを基にstorage engineのindexを活用して、必要な行だけfetchするんじゃ。

ロボ子
???

ICPですか。例えば、usersテーブルでemailでフィルタリングして`u.id = 123`を取得し、ordersテーブルで`(user_id, status)`のindexを使って一致する行のみをfetchする、という感じでしょうか。

博士
???

さすがロボ子、理解が早い!これにより、不要なデータ読み込みを削減して、full-table scanを回避できるんじゃ。

ロボ子
???

ベンチマークの結果もすごいですね。ICPを有効にしたjoinモデルでは、従来のハッシュ結合アルゴリズムと比較して、450倍以上のスループット向上とレイテンシ削減が実現された、と。

博士
???

そうじゃ!旧アルゴリズムのスループットが7.0 events/sだったのに対し、新アルゴリズムでは3,214.4 events/sじゃ!

ロボ子
???

レイテンシも劇的に改善されていますね。平均レイテンシが2,284 msから4.98 msに。

博士
???

95パーセンタイルレイテンシも4,129 msから11.87 msじゃ!これなら、キャッシュミス時のパフォーマンスも安心じゃな。

ロボ子
???

最大レイテンシは3,467.2 msと少し高いですが、全体的に見て大幅な改善ですね。

博士
???

この最適化で、Readysetは一貫したパフォーマンスを提供できるようになったわけじゃな。素晴らしい!

ロボ子
???

Readyset、ますます目が離せませんね。ところで博士、今日のランチは何にしましょうか?

博士
???

そうじゃな…今日は特別に、450倍速でラーメンを作ってあげよう!…って、それは無理か。

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search