LoginSignup
3
2

TiDB ServerlessのRU消費を計測する

Last updated at Posted at 2023-12-16

みなさん TiDB Serverless使ってますか〜?
TiDB Serverlessは従量課金となっていて、利用量とDisk利用量で課金されるようになっています。
この「利用量」がRequest Unitと呼ばれるもので、リクエスト毎にDBで消費される様々なリソース(主にCPU)に対して課金されるようになっているのです。で、このRUの計算方式ですが...

image.png

と書いてあり、分かりづらいと思います。計算するにしても、一つのクエリでどのくらいCPUを消費するか、Read/Writeリクエストを消費するかを知る必要がありますが、簡単ではありません。
ところで、最近、TiDB Serverlessに、実行したSQLのRU消費量を表示する機能ができたのでその機能について紹介していきます。

RUの計測方法

EXPLAIN ANALYZEを使う

EXPLAIN ANALYZE を使ってクエリの実行計画を表示した際に、RUも合わせて表示されます。

この値を使って特定のクエリがどれくらいのRUなのかを見積もることができます。
代表的なクエリをいくつか計測してみてベースラインとすることで、そのクエリを月何回くらい実行するかで見積もることができそうです。

RUの計算テーブルから分かる通り、実際にRUの大半を占めるのはクエリレスポンスのデータ量の多さです。
例えば、簡単なテーブルを100件返す以下のクエリのRUは1未満ですが

スクリーンショット 2023-12-04 13.54.13.png

これを1000件返すようにすると、10倍程度RUを消費します。ほぼ比例しています。
これはデータ量に応じたRUと、EgressのネットワークRUもかかっているのではないかと思われます。

スクリーンショット 2023-12-04 13.54.27.png

結果セットが小さい単純なクエリが多い方がコスト的には良いということになるかと思います。

クエリメトリクスを参照する

最近追加された機能で、SQLのメトリクスでRUが表示されるようになりました。
DiagnosisのSQL Statementから確認できます。

RUの列でソートもできるので、特定の期間でRUを多く消費しているクエリを探すことができます。
スクリーンショット 2023-12-04 13.55.42.png

さいごに

TiDB ServerlessでのRUの把握方法について記載しました。
またTiDB Serverlessは利用上限を設定できますので(これは$で設定)、RUの計算によらず一定額で利用料を抑えることができます。
RUの見積もりで概算を立てつつ、利用上限を設定して実際に運用してみて、実際の利用感を確認していくのが良いかなと思います。

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2