すべてのプロダクト
Search
ドキュメントセンター

Tablestore:SQLクエリの課金対象項目

最終更新日:Dec 28, 2024

SQLクエリ機能は、複数のデータエンジンへの統一されたアクセスインターフェースを提供します。SQLステートメントでの計算は読み取りスループットを消費しません。ただし、SQLを使用してデータをクエリする場合、テーブルスキャンやインデックスベースのクエリなどの操作は読み取りおよび書き込みスループットを消費します。このトピックでは、SQLクエリ機能の課金対象項目と課金例について説明します。

使用上の注意

  • SQLクエリ機能の使用には料金はかかりません。ただし、SQLクエリ機能を使用する場合、テーブルスキャンやインデックスベースのクエリなどの操作によって発生する料金が発生します。

  • SQLクエリ機能を使用してデータをクエリする場合、読み取りスループットのみが消費されます。

  • データテーブルとインデックスに予約済み読み取りスループットが設定されていて、SQLクエリで消費される読み取りスループットが予約済み読み取りスループットを超える場合、超過した読み取りスループットに対して従量課金制で課金されます。

  • SQLステートメントを実行してデータをクエリする場合、クエリ対象データとスキャン対象データの範囲は、SQLステートメントの複雑さによって異なります。テーブル内のすべてのデータをスキャンするSQLステートメントは使用せず、インデックスと組み合わせてSQLステートメントを使用することで、リソース使用率を最大化してください。

課金対象項目

課金対象項目

課金方法

説明

従量制読み取りスループット

  • 従量課金制

  • リソースプラン

1つのSQLステートメントを実行するときに消費される読み取りスループットは、テーブルとインデックスで特定の操作が実行されるときに消費される読み取りスループットの合計です。単位:CU

SQLステートメントを実行してデータをクエリする場合、次の操作を実行するときに読み取りスループットが消費される場合があります。

  • データテーブルに対する操作:データのスキャンとクエリ

  • セカンダリインデックスに対する操作:データのスキャンとクエリ

  • 検索インデックスに対する操作:データのクエリと計算

  • 時系列テーブルに対する操作:データのスキャンとクエリ

課金例

Tablestoreにsample_tableという名前の注文テーブルが作成されています。注文テーブルには、user_idという名前のプライマリキー列が1つと、order_idとorder_costという名前の属性列が2つあります。 user_id列とorder_id列のデータ型はString、order_cost列のデータ型はDoubleです。 order_id列とuser_id列の値は、各列内で一意です。注文テーブルには、それぞれ100行の10,000人のユーザーの情報が含まれています。注文テーブルの行の総数は100万行で、各行のサイズは約1 KBです。

次の表に、特定のSQLステートメントを実行するときに操作が実行されるリソースの種類と消費される読み取りスループットの量を示します。

SQLステートメント

リソースの種類

読み取りスループットの量

SELECT * FROM sample_table WHERE user_id="user1"

データテーブル

クエリ条件の列はプライマリキー列です。 Tablestoreは、データテーブルを使用して、user_id列を使用して指定されたクエリ条件を満たすデータをクエリできます。

消費される読み取りスループットは25 CUです(100行x 1 KB / 4 KB)。

SELECT sum(order_cost) FROM sample_table WHERE user_id="user1"

データテーブル

クエリ条件の列はプライマリキー列です。 Tablestoreは、データテーブルを使用して、user_id列を使用して指定されたクエリ条件を満たすデータをクエリできます。 SQLステートメントでの計算は読み取りスループットを消費しません。データのスキャンのみが読み取りスループットを消費します。

消費される読み取りスループットは25 CUです(100行x 1 KB / 4 KB)。

SELECT order_cost FROM sample_table WHERE order_id="order1"

データテーブル

クエリ条件の列はプライマリキー列ではありません。インデックスが使用されていない場合、Tablestoreはテーブル全体をスキャンして、order_id列を使用して指定されたクエリ条件を満たすデータをクエリします。

消費される読み取りスループットは250,000 CUです(100万行x 1 KB / 4 KB)。

重要

実際のシナリオでは、Tablestoreはデータスキャンの使用を制限して、消費されるCUの数を減らします。インデックスと組み合わせてSQLステートメントを使用することをお勧めします。これにより、データスキャンは実行されず、クエリのパフォーマンスが最適化されます。

データテーブルとインデックス

クエリ条件の列はプライマリキー列ではありません。列がデータテーブル用に作成されたインデックスに含まれている場合、Tablestoreは自動的にインデックスを使用して、order_id列を使用して指定されたクエリ条件を満たすデータをクエリします。

消費される読み取りスループットは1 CUです(1行x 1 KB / 4 KBの結果から切り上げ)。