alms.dev

Aidemy の開発者ブログです。

Azure Cosmos DB 更新 - 低速なクエリを 67% 削減に成功

f:id:aidemy-blog:20210913112308p:plain

低速なクエリを 67% 削減

更新内容

2021年7月14日、Alms で利用しているデータベース Azure Cosmos DB (mongo API) (以降、Cosmos DB) の API バージョンを 3.2 -> 3.6 にバージョンアップしました。その結果、処理に2秒以上を要している低速なクエリを 67% 削減することに成功しました。

背景

利用者数の増加に伴いより多くのデータを短時間で取得することが必要となりました。Cosmos DB には すべてのデータベース操作に必要なコストを抽象化した、要求ユニット (RU) が存在しますが、ver 3.2 ではコレクション毎の RU 上限は最大 10,000RUという縛りがあります。

RU 上限 10,000 の制限をなくし API レスポンス速度の向上などを狙い、バージョン 3.2 -> 3.6 にバージョンアップを行いました。

※ こちらの記事 によると, 3.2 でも RU 上限は上げられるように見えますが、実行すると内部エラーが発生しうまく動作しませんでした。

効果

RU 上限を増加する事により、一度に取得するデータ数を増加することができ、結果として API レスポンス速度を向上させることができました。

また、バージョンが上がった事により内部のクエリパフォーマンスが向上し、低速クエリ(2s以上)の頻度が1/3に減少しました。

f:id:aidemy-blog:20210910173548p:plain

<図1 データベースバージョンアップ前後のCosmos DB レイテンシ>
測定項目  改善後  改善前
低速クエリ頻度 [%]   0.017 0.051
低速クエリ回数 [回] 26 97
総クエリ回数 [千回] 156 189
測定期間[日] 7 7