説明 行はテーブルの基本単位です。行は、プライマリキー列と属性列で構成されます。プライマリキー列は各行に必須です。テーブル内の行には、同じ名前とデータ型のプライマリキー列が含まれています。属性列は各行でオプションです。テーブル内の行には、異なる属性列を含めることができます。詳細については、概要を参照してください。
使用上の注意
自動インクリメントプライマリキー列を含むテーブルからデータを読み取る場合は、自動インクリメントプライマリキー列の値を含むすべてのプライマリキー列の値をクエリしたことを確認してください。詳細については、自動インクリメントプライマリキー列の構成を参照してください。
重要 自動インクリメントプライマリキー列に値が記録されていない場合は、GetRange操作を呼び出して、最初のプライマリキー列のプライマリキー値に基づいてデータを読み取る範囲を指定できます。
単一行のデータの読み取り
GetRow操作を呼び出して、単一行のデータを読み取ることができます。この方法は、テーブルのすべてのプライマリキー列を決定でき、読み取る行数が少ないシナリオに適用できます。
単一行のデータを読み取る場合は、次の方法を使用してビジネス要件に基づいてデータをフィルタリングできます。
読み取る列を指定します。列を指定しない場合は、すべての列が返されます。
フィルタを使用して、フィルタ条件に一致するデータを取得します。詳細については、フィルタの構成を参照してください。
データテーブルで最大バージョン機能が有効になっている場合は、読み取るデータバージョンの最大数または時間範囲、または必要なバージョン番号を指定します。詳細については、データバージョンとTTLを参照してください。
GetRow操作を呼び出した後、次のいずれかの結果が返される場合があります。
一度に複数の行のデータを読み取る
BatchGetRow操作を呼び出して、1つ以上のテーブルから一度に複数の行のデータを読み取ることができます。この方法は、テーブルのすべてのプライマリキー列を決定でき、読み取る行数が多い場合、または複数のテーブルからデータを読み取るシナリオに適用できます。
BatchGetRow操作は、複数のGetRow操作で構成されます。BatchGetRow操作を呼び出す場合、各GetRow操作を構築するプロセスは、GetRow操作を呼び出す場合のGetRow操作を構築するプロセスと同じです。
一度に複数の行のデータを読み取る場合は、次の方法を使用してビジネス要件に基づいてデータをフィルタリングできます。
複数のテーブルから一度にデータを読み取ります。
BatchGetRow操作を呼び出して、一度に最大100行を読み取ることができます。
読み取る列を指定します。列を指定しない場合は、すべての列が返されます。
BatchGetRow操作では、すべての行に同じパラメータ設定が使用されます。たとえば、ColumnsToGetパラメータが[colA]に設定されている場合、colA列の値のみがすべての行から読み取られます。
フィルタを使用して、フィルタ条件に一致するデータを取得します。詳細については、フィルタの構成を参照してください。
データテーブルで最大バージョン機能が有効になっている場合は、読み取るデータバージョンの最大数または時間範囲、または必要なバージョン番号を指定します。詳細については、データバージョンとTTLを参照してください。
BatchGetRow操作を呼び出すと、各GetRow操作は個別に実行され、Tablestoreは各GetRow操作へのレスポンスを個別に返します。
プライマリキー値が指定された範囲内にあるデータを読み取る
GetRange操作を呼び出して、プライマリキー値が指定された範囲内にあるデータを読み取ることができます。この方法は、テーブルのすべてのプライマリキー列の範囲またはプライマリキー列のプレフィックスを決定できるシナリオに適用できます。
説明 Tablestoreテーブルでは、すべての行はプライマリキーでソートされます。テーブルのプライマリキーは、すべてのプライマリキー列で順番に構成されます。したがって、行は特定のプライマリキー列に基づいてソートされません。
GetRange操作は、左端一致の原則に従います。Tablestoreは、最初のプライマリキー列から最後のプライマリキー列まで順番に値を比較して、プライマリキー値が指定された範囲内にあるデータを読み取ります。たとえば、データテーブルのプライマリキーは、PK1、PK2、PK3というプライマリキー列で構成されています。データを読み取るとき、Tablestoreは最初に、行のPK1値が最初のプライマリキー列に指定された範囲内にあるかどうかを判断します。行のPK1値が範囲内にある場合、Tablestoreは、行の他のプライマリキー列の値が各プライマリキー列に指定された範囲内にあるかどうかの判断を停止し、行を返します。行のPK1値が範囲内にない場合、Tablestoreは、PK1と同じ方法で、行の他のプライマリキー列の値が各プライマリキー列に指定された範囲内にあるかどうかを判断し続けます。
プライマリキー値が指定された範囲内にあるデータを読み取る場合は、次の方法を使用してビジネス要件に基づいてデータをフィルタリングできます。
プライマリキー列のプレフィックスが指定されている場合は、データがINF_MIN型とINF_MAX型の仮想列を使用してプライマリキー列の範囲を指定するか、すべてのプライマリキー列の範囲を指定してデータを読み取ります。
重要 プライマリキー列のプレフィックスを決定できない場合は、データがINF_MIN型の開始プライマリキー列とデータがINF_MAX型の終了プライマリキー列を指定して、テーブルのすべてのプライマリキー列の範囲を決定できます。この操作はテーブル内のすべてのデータをスキャンしますが、大量の計算リソースを消費します。注意して進めてください。
範囲が広く、スキャンされた行数またはスキャンされたデータの量が上限を超えると、スキャンは停止し、読み取られた行と次の行のプライマリキーに関する情報が返されます。前回の操作が中断したところから開始するリクエストを開始し、前回の操作によって返された次の行のプライマリキーに関する情報に基づいて残りの行を読み取ることができます。
次のいずれかの条件が満たされると、GetRange操作が停止してデータが返される場合があります。
前方または後方に返すことができる行の最大数を指定します。たとえば、前方には最大5行のデータが返されるように指定します。
読み取る列を指定します。列を指定しない場合は、すべての列が返されます。
フィルタを使用して、フィルタ条件に一致するデータを取得します。詳細については、フィルタの構成を参照してください。
GetRange操作では、すべての行に同じパラメータ設定が使用されます。たとえば、ColumnsToGetパラメータが[colA]に設定されている場合、colA列の値のみがすべての行から読み取られます。
データテーブルで最大バージョン機能が有効になっている場合は、読み取るデータバージョンの最大数または時間範囲、または必要なバージョン番号を指定します。詳細については、データバージョンとTTLを参照してください。
各GetRange呼び出しはデータを1回スキャンします。GetRange操作を呼び出してスキャンするデータのサイズが大きい場合、スキャンされた行数が5,000に達するか、スキャンされたデータのサイズが4 MBに達すると、スキャンは停止します。Tablestoreは、クエリ条件を満たす残りのデータを返しません。ページング方法を使用して、クエリ条件を満たす残りのデータを取得できます。
使用方法
Tablestoreコンソールを使用したデータの読み取り
Tablestoreコンソールを使用して、単一行のデータを読み取ったり、プライマリキー値が指定された範囲内にあるデータを読み取ったりできます。
Tablestoreコンソールにログオンします。
概要ページで、管理するインスタンスを見つけて、アクション列のインスタンスの管理をクリックします。
インスタンスの詳細タブのテーブルセクションで、データを読み取るデータテーブルを見つけて、アクション列のクエリをクリックします。
データのクエリタブで、検索をクリックし、ビジネス要件に基づいて次の操作を実行します。
単一行のデータの読み取り
検索ダイアログボックスで、モードパラメータを行の取得に設定し、データをクエリするテーブルを選択します。
デフォルトでは、すべての列が返されます。読み取る属性列を指定する場合は、すべての列をオフにして、読み取る属性列の名前を入力します。
複数の属性列はコンマ(,)で区切ります。
クエリする行のプライマリキー値パラメータを構成します。
プライマリキー値の整合性と精度は、クエリ結果に影響します。
最大バージョンパラメータを構成して、返すバージョンの最大数を指定します。
OKをクリックします。
プライマリキー値が指定された範囲内にあるデータを読み取る
検索ダイアログボックスで、モードパラメータを範囲検索に設定し、データをクエリするテーブルを選択します。
デフォルトでは、すべての列が返されます。読み取る属性列を指定する場合は、すべての列をオフにして、読み取る属性列の名前を入力します。
複数の属性列はコンマ(,)で区切ります。
開始プライマリキー列と終了プライマリキー列のパラメータを構成します。
最大バージョンパラメータを構成して、返すバージョンの最大数を指定します。
シーケンスパラメータを前方検索または後方検索に設定します。
OKをクリックします。
Tablestore CLIを使用したデータの読み取り
次のコマンドを実行して、Tablestore CLIを使用してデータを読み取ることができます。
get
コマンドを実行して、単一行のデータを読み取ります。詳細については、データの操作トピックの「データの読み取り」セクションを参照してください。
次のサンプルコードは、最初のプライマリキー列の値が86で、2番目のプライマリキー列の値が6771であるデータ行を読み取る方法の例を示しています。
get --pk '["86",6771]'
scan
コマンドを実行して、プライマリキー値が指定された範囲内にあるデータを読み取ります。詳細については、データの操作トピックの「データのエクスポート」セクションを参照してください。
次のサンプルコードは、プライマリキー値が["86",7000]
から["86",6770]
の範囲内にあるデータを後方に読み取り、pid列のデータのみを返す方法の例を示しています。
scan --begin '["86",7000]' --end '["86",6770]' --backward --columns pid
Tablestore SDKを使用したデータの読み取り
Tablestore SDK for Java、Tablestore SDK for Go、Tablestore SDK for Python、Tablestore SDK for Node.js、Tablestore SDK for .NET、Tablestore SDK for PHPを使用してデータを読み取ることができます。この例では、Tablestore SDK for Javaを使用してデータを読み取ります。
単一行のデータの読み取り
データバージョンと読み取る列を指定し、フィルタまたは正規表現を使用してデータをフィルタリングできます。
行の指定された列から最新バージョンのデータを読み取る
次のサンプルコードは、データテーブルの行の指定された列から最新バージョンのデータを読み取る方法の例を示しています。
private static void getRow(SyncClient client, String pkValue) {
// プライマリキーを構築します。
PrimaryKeyBuilder primaryKeyBuilder = PrimaryKeyBuilder.createPrimaryKeyBuilder();
primaryKeyBuilder.addPrimaryKeyColumn("pk", PrimaryKeyValue.fromString(pkValue));
PrimaryKey primaryKey = primaryKeyBuilder.build();
// テーブル名とプライマリキーを指定して、データの行を読み取ります。
SingleRowQueryCriteria criteria = new SingleRowQueryCriteria("<TABLE_NAME>", primaryKey);
// MaxVersionsパラメータを1に設定して、最新バージョンのデータを読み取ります。
criteria.setMaxVersions(1);
GetRowResponse getRowResponse = client.getRow(new GetRowRequest(criteria));
Row row = getRowResponse.getRow();
System.out.println("読み取り完了。結果:");
System.out.println(row);
// 読み取る列を指定します。
criteria.addColumnsToGet("Col0");
getRowResponse = client.getRow(new GetRowRequest(criteria));
row = getRowResponse.getRow();
System.out.println("読み取り完了。結果:");
System.out.println(row);
}
フィルタを使用して、読み取られるデータをフィルタリングする
次のサンプルコードは、データテーブルの行から最新バージョンのデータを読み取り、フィルタを使用してCol0列の値に基づいてデータをフィルタリングする方法の例を示しています。
private static void getRow(SyncClient client, String pkValue) {
// プライマリキーを構築します。
PrimaryKeyBuilder primaryKeyBuilder = PrimaryKeyBuilder.createPrimaryKeyBuilder();
primaryKeyBuilder.addPrimaryKeyColumn("pk", PrimaryKeyValue.fromString(pkValue));
PrimaryKey primaryKey = primaryKeyBuilder.build();
// テーブル名とプライマリキーを指定して、データの行を読み取ります。
SingleRowQueryCriteria criteria = new SingleRowQueryCriteria("<TABLE_NAME>", primaryKey);
// MaxVersionsパラメータを1に設定して、最新バージョンのデータを読み取ります。
criteria.setMaxVersions(1);
// Col0列の値が0である行を返すようにフィルタを構成します。
SingleColumnValueFilter singleColumnValueFilter = new SingleColumnValueFilter("Col0",
SingleColumnValueFilter.CompareOperator.EQUAL, ColumnValue.fromLong(0));
// Col0列が存在しない場合、行は返されません。
singleColumnValueFilter.setPassIfMissing(false);
criteria.setFilter(singleColumnValueFilter);
GetRowResponse getRowResponse = client.getRow(new GetRowRequest(criteria));
Row row = getRowResponse.getRow();
System.out.println("読み取り完了。結果:");
System.out.println(row);
}
正規表現を使用して、読み取られるデータをフィルタリングする
次のサンプルコードは、データテーブルの行からCol1列のデータを読み取り、正規表現を使用して列内のデータをフィルタリングする方法の例を示しています。
private static void getRow(SyncClient client, String pkValue) {
// データテーブルの名前を指定します。
SingleRowQueryCriteria criteria = new SingleRowQueryCriteria("<TABLE_NAME>");
// プライマリキーを構築します。
PrimaryKey primaryKey = PrimaryKeyBuilder.createPrimaryKeyBuilder()
.addPrimaryKeyColumn("pk", PrimaryKeyValue.fromString(pkValue))
.build();
criteria.setPrimaryKey(primaryKey);
// MaxVersionsパラメータを1に設定して、最新バージョンのデータを読み取ります。
criteria.setMaxVersions(1);
// フィルタを構成します。cast<int>(regex(Col1))が100より大きい場合、行が返されます。
RegexRule regexRule = new RegexRule("t1:([0-9]+),", RegexRule.CastType.VT_INTEGER);
SingleColumnValueRegexFilter filter = new SingleColumnValueRegexFilter("Col1",
regexRule,SingleColumnValueRegexFilter.CompareOperator.GREATER_THAN, ColumnValue.fromLong(100));
criteria.setFilter(filter);
GetRowResponse getRowResponse = client.getRow(new GetRowRequest(criteria));
Row row = getRowResponse.getRow();
System.out.println("読み取り完了。結果:");
System.out.println(row);
}
一度に複数の行のデータを読み取る
次のサンプルコードは、バージョン条件、読み取る列、およびフィルタを構成して10行のデータを読み取る方法の例を示しています。
private static void batchGetRow(SyncClient client) {
// データテーブルの名前を指定します。
MultiRowQueryCriteria multiRowQueryCriteria = new MultiRowQueryCriteria("<TABLE_NAME>");
// 読み取る10行を指定します。
for (int i = 0; i < 10; i++) {
PrimaryKeyBuilder primaryKeyBuilder = PrimaryKeyBuilder.createPrimaryKeyBuilder();
primaryKeyBuilder.addPrimaryKeyColumn("pk", PrimaryKeyValue.fromString("pk" + i));
PrimaryKey primaryKey = primaryKeyBuilder.build();
multiRowQueryCriteria.addRow(primaryKey);
}
// 条件を追加します。
multiRowQueryCriteria.setMaxVersions(1);
multiRowQueryCriteria.addColumnsToGet("Col0");
multiRowQueryCriteria.addColumnsToGet("Col1");
SingleColumnValueFilter singleColumnValueFilter = new SingleColumnValueFilter("Col0",
SingleColumnValueFilter.CompareOperator.EQUAL, ColumnValue.fromLong(0));
singleColumnValueFilter.setPassIfMissing(false);
multiRowQueryCriteria.setFilter(singleColumnValueFilter);
BatchGetRowRequest batchGetRowRequest = new BatchGetRowRequest();
// BatchGetRowを使用すると、複数のテーブルからデータを読み取ることができます。各multiRowQueryCriteriaパラメータは、1つのテーブルのクエリ条件を指定します。複数のmultiRowQueryCriteriaパラメータを追加して、複数のテーブルからデータを読み取ることができます。
batchGetRowRequest.addMultiRowQueryCriteria(multiRowQueryCriteria);
BatchGetRowResponse batchGetRowResponse = client.batchGetRow(batchGetRowRequest);
System.out.println("すべての操作が成功したかどうか:" + batchGetRowResponse.isAllSucceed());
System.out.println("読み取り完了。結果:");
for (BatchGetRowResponse.RowResult rowResult : batchGetRowResponse.getSucceedRows()) {
System.out.println(rowResult.getRow());
}
if (!batchGetRowResponse.isAllSucceed()) {
for (BatchGetRowResponse.RowResult rowResult : batchGetRowResponse.getFailedRows()) {
System.out.println("失敗した行:" + batchGetRowRequest.getPrimaryKey(rowResult.getTableName(), rowResult.getIndex()));
System.out.println("失敗の原因:" + rowResult.getError());
}
/**
* createRequestForRetryメソッドを使用して、別のリクエストを構築して、失敗した行の操作を再試行できます。ここでは、再試行リクエストのみが構築されます。
* Tablestore SDKのカスタム再試行ポリシーを再試行方法として使用することをお勧めします。この機能を使用すると、バッチ操作後に失敗した行を再試行できます。再試行ポリシーを設定した後、操作を呼び出すために再試行コードを追加する必要はありません。
*/
BatchGetRowRequest retryRequest = batchGetRowRequest.createRequestForRetry(batchGetRowResponse.getFailedRows());
}
}
プライマリキー値が指定された範囲内にあるデータを読み取る
プライマリキー値が指定された範囲内にあるデータを読み取る
次のサンプルコードは、プライマリキー値が指定された範囲内にあるデータを前方方向に読み取る方法の例を示しています。レスポンスでnextStartPrimaryKeyパラメータの値が空の場合、プライマリキー値が指定された範囲内にあるすべてのデータが読み取られます。
private static void getRange(SyncClient client, String startPkValue, String endPkValue) {
// データテーブルの名前を指定します。
RangeRowQueryCriteria rangeRowQueryCriteria = new RangeRowQueryCriteria("<TABLE_NAME>");
// 開始プライマリキーを指定します。
PrimaryKeyBuilder primaryKeyBuilder = PrimaryKeyBuilder.createPrimaryKeyBuilder();
primaryKeyBuilder.addPrimaryKeyColumn("pk", PrimaryKeyValue.fromString(startPkValue));
rangeRowQueryCriteria.setInclusiveStartPrimaryKey(primaryKeyBuilder.build());
// 終了プライマリキーを指定します。
primaryKeyBuilder = PrimaryKeyBuilder.createPrimaryKeyBuilder();
primaryKeyBuilder.addPrimaryKeyColumn("pk", PrimaryKeyValue.fromString(endPkValue));
rangeRowQueryCriteria.setExclusiveEndPrimaryKey(primaryKeyBuilder.build());
rangeRowQueryCriteria.setMaxVersions(1);
System.out.println("GetRangeの結果:");
while (true) {
GetRangeResponse getRangeResponse = client.getRange(new GetRangeRequest(rangeRowQueryCriteria));
for (Row row : getRangeResponse.getRows()) {
System.out.println(row);
}
// nextStartPrimaryKeyパラメータの値がnullでない場合は、読み取り操作を続行します。
if (getRangeResponse.getNextStartPrimaryKey() != null) {
rangeRowQueryCriteria.setInclusiveStartPrimaryKey(getRangeResponse.getNextStartPrimaryKey());
} else {
break;
}
}
}
最初のプライマリキー列の値によって決定された範囲内のデータを読み取る
次のサンプルコードは、最初のプライマリキー列の値によって決定された範囲内のデータを前方方向に読み取る方法の例を示しています。2番目のプライマリキー列の開始値はINF_MIN型です。2番目のプライマリキー列の終了値はINF_MAX型です。レスポンスでnextStartPrimaryKeyパラメータの値がnullの場合、指定された範囲内のすべてのデータが読み取られます。
private static void getRange(SyncClient client, String startPkValue, String endPkValue) {
// データテーブルの名前を指定します。
RangeRowQueryCriteria rangeRowQueryCriteria = new RangeRowQueryCriteria("<TABLE_NAME>");
// 開始プライマリキーを指定します。この例では、2つのプライマリキー列が使用されます。
PrimaryKeyBuilder primaryKeyBuilder = PrimaryKeyBuilder.createPrimaryKeyBuilder();
primaryKeyBuilder.addPrimaryKeyColumn("pk1", PrimaryKeyValue.fromString(startPkValue));// 最初のプライマリキー列の値を特定の値に設定します。
primaryKeyBuilder.addPrimaryKeyColumn("pk2", PrimaryKeyValue.INF_MIN);// 2番目のプライマリキー列の値を無限に小さい値に設定します。
rangeRowQueryCriteria.setInclusiveStartPrimaryKey(primaryKeyBuilder.build());
// 終了プライマリキーを指定します。
primaryKeyBuilder = PrimaryKeyBuilder.createPrimaryKeyBuilder();
primaryKeyBuilder.addPrimaryKeyColumn("pk1", PrimaryKeyValue.fromString(endPkValue));// 最初のプライマリキー列の値を特定の値に設定します。
primaryKeyBuilder.addPrimaryKeyColumn("pk2", PrimaryKeyValue.INF_MAX);// 2番目のプライマリキー列の値を無限に大きい値に設定します。
rangeRowQueryCriteria.setExclusiveEndPrimaryKey(primaryKeyBuilder.build());
rangeRowQueryCriteria.setMaxVersions(1);
System.out.println("GetRangeの結果:");
while (true) {
GetRangeResponse getRangeResponse = client.getRange(new GetRangeRequest(rangeRowQueryCriteria));
for (Row row : getRangeResponse.getRows()) {
System.out.println(row);
}
// nextStartPrimaryKeyパラメータの値がnullでない場合は、読み取り操作を続行します。
if (getRangeResponse.getNextStartPrimaryKey() != null) {
rangeRowQueryCriteria.setInclusiveStartPrimaryKey(getRangeResponse.getNextStartPrimaryKey());
} else {
break;
}
}
}
プライマリキー値が指定された範囲内にあるデータを読み取り、正規表現を使用して指定された列のデータをフィルタリングする
次のサンプルコードは、プライマリキー値が["pk:2020-01-01.log", "pk:2021-01-01.log")
の範囲内にあるデータをCol1列から読み取り、正規表現を使用してCol1列のデータをフィルタリングする方法の例を示しています。
private static void getRange(SyncClient client) {
// データテーブルの名前を指定します。
RangeRowQueryCriteria criteria = new RangeRowQueryCriteria("<TABLE_NAME>");
// 読み取るデータのプライマリキーの範囲として["pk:2020-01-01.log", "pk:2021-01-01.log"]を指定します。範囲は左閉区間、右開区間です。
PrimaryKey pk0 = PrimaryKeyBuilder.createPrimaryKeyBuilder()
.addPrimaryKeyColumn("pk", PrimaryKeyValue.fromString("2020-01-01.log"))
.build();
PrimaryKey pk1 = PrimaryKeyBuilder.createPrimaryKeyBuilder()
.addPrimaryKeyColumn("pk", PrimaryKeyValue.fromString("2021-01-01.log"))
.build();
criteria.setInclusiveStartPrimaryKey(pk0);
criteria.setExclusiveEndPrimaryKey(pk1);
// MaxVersionsパラメータを1に設定して、最新バージョンのデータを読み取ります。
criteria.setMaxVersions(1);
// フィルタを構成します。cast<int>(regex(Col1))が100より大きい場合、行が返されます。
RegexRule regexRule = new RegexRule("t1:([0-9]+),", RegexRule.CastType.VT_INTEGER);
SingleColumnValueRegexFilter filter = new SingleColumnValueRegexFilter("Col1",
regexRule,SingleColumnValueRegexFilter.CompareOperator.GREATER_THAN,ColumnValue.fromLong(100));
criteria.setFilter(filter);
while (true) {
GetRangeResponse resp = client.getRange(new GetRangeRequest(criteria));
for (Row row : resp.getRows()) {
// 何かをする
System.out.println(row);
}
if (resp.getNextStartPrimaryKey() != null) {
criteria.setInclusiveStartPrimaryKey(resp.getNextStartPrimaryKey());
} else {
break;
}
}
}
課金
操作で消費されるキャパシティユニット(CU)数に基づいて課金されます。消費されるCUには、インスタンスタイプに基づいて、従量課金読み取りおよび書き込みCUとリザーブド読み取りおよび書き込みCUが含まれる場合があります。
読み取り操作では書き込みCUは消費されません。消費される読み取りCUの数は、呼び出す操作によって異なります。
GetRow操作で消費される読み取りCU
消費される読み取りCUの数は、次の式の計算結果から切り上げられます。消費される読み取りCUの数 = (行のすべてのプライマリキー列のデータサイズ + 実際に読み取られた属性列のデータサイズ)/4 KB。指定された行が存在しない場合、操作によって1つの読み取りCUが消費されます。
BatchGetRow操作で消費される読み取りCU
各RowInBatchGetRowRequest操作は、1つのGetRow操作と見なされます。BatchGetRow操作で消費される読み取りCUの数は、BatchGetRow操作を構成するすべてのGetRow操作で消費される読み取りCUの合計数に等しくなります。
GetRange操作で消費される読み取りCU
GetRange操作で消費される読み取りCUの数は、範囲の開始点から未読の次の行の開始点まで計算されます。GetRange操作で消費される読み取りCUの数は、次の式の計算結果から切り上げられます。消費される読み取りCUの数 = (クエリ条件を満たす行のすべてのプライマリキー列のデータサイズ + 実際に読み取られた属性列のデータサイズ)/4 KB。たとえば、クエリ条件を満たす10行が読み取られ、行のすべてのプライマリキー列のデータサイズと実際に読み取られた属性列のデータサイズの合計が330バイトの場合、消費される読み取りCUの数は、次の式の計算結果から切り上げられます。消費される読み取りCUの数 = (3.3 KB/4 KB)。この場合、GetRange操作は1つの読み取りCUを消費します。