概要
東京リージョンにも、Athena engine version 2が来ました。
様々な機能追加や改善が書かれていますが、やはり一番気になるのが「Performance Improvements」ですよね。輝いてます。
一覧を見ていても
- DISTINCT
- JOIN and AGGREGATE operations
- LIKE
- ORDER BY and LIMIT
を始め山ほど列挙されており、かつ期待が高まる項目ばかりで、それもう要するに「ぜんぶ凄く速くなった!」ってことですよね???
と言う訳で、自社で運用しているAthenaのクエリで早速試してみました。
設定方法
既存のワークグループであれば、ワークグループの編集項目に「Query engine version」と言う項目が増えていますので、「Manually choose an engine version now.」→「Athena engine version 2 (recommended)」を選択することでバージョンアップ可能です。
そう、激熱ポイントとして
1. ワークグループ単位での設定が可能
2. (今は)バージョン1に戻せる
という移行および検証のしやすさがあります。これは滅茶苦茶嬉しいです。
利用したデータセット
こちらの記事と同様のものをベースに複雑なクエリとなったものを利用しまましたが、Athenaを始めこの手のパフォーマンスの話は、ケースバイケースの要素が強いと考えており、参考程度でご覧ください。
使われた履歴の中から、
- order by limit xxx なしのクエリ
- order by limit xxx ありのクエリ
- パフォーマンスが遅くなりがちな難儀なテーブルを含むクエリ
という軸で実行時間を見て適当にピックアップし、バージョン1とバージョン2でそれぞれ設定されたワークグループに対して検証をしてみました。
規模としては、だいたい1億~2億レコードをスキャンすることになるテーブルをいくつかJOINしたりもしています。
結論サマリ
・スキャン量が減るケースが散見(これも嬉しい)
・order by / limit なしのクエリは今回のデータセットでは、速度は変化なし
・order by / limit ありのクエリは目に見えて速くなった
・一番難儀だったテーブルを含むクエリに非常に高い効果が出た(30秒強→20秒弱と、実に倍速近い結果に)
総じて「複雑で無茶をしていたクエリが少し安く、かなり速くなった」という そんなことが許されるのですか... という結果となりました。神か。
結果一覧集
突然のExcelですが、平均実行時間、は少ないですが3回の実行結果を取っています。
なのでバージョン2が遅くなっているように見えるものは、単に試行回数によるものと思われます。また、パーセンテージにしちゃったので見辛いですが、order by limit なしはほぼ結果変わっておらず、ありはどれも数秒以上速くなってます。
ケース10~12の改善具合がえぐいですね。
感想
実運用への適用に向けて、互換性のチェックはしていかないといけないのですが、性能面においては「逆に遅くなる」などの懸念が無い感触で、アップデートに向けて期待はあるがデメリットの無い、すなわちそれは神アップデートと言えるのではないでしょうか。
re:Invent 2020でもFINRAでAthenaを超活用している事例が紹介されておりましたが、更にAthenaが盛り上がっていけば良いな!と思いました。