調用BatchGetRow介面批量讀取一個表或多個表中的若干行資料。

BatchGetRow操作可視為多個GetRow操作的集合,各個操作獨立執行,獨立返回結果,獨立計算服務能力單元。

與執行大量的GetRow操作相比,使用BatchGetRow操作可以有效減少請求的回應時間,提高資料的讀取速率。

請求訊息結構

message BatchGetRowRequest {
    repeated TableInBatchGetRowRequest tables = 1;
}           
參數類型是否必需描述
tablesrepeated TableInBatchGetRowRequest指定了需要要讀取的行資訊。

如果tables中出現了下述情況,則操作整體失敗,返回錯誤。

  • tables中任一表不存在。
  • tables中任一表名不符合命名規則和資料類型
  • tables中任一行未指定主鍵、主鍵名稱不符合規範或者主鍵類型不正確。
  • tables中任一表的columns_to_get內的列名不符合命名規則和資料類型
  • tables中包含同名的表。
  • 所有tables中RowInBatchGetRowRequest的總個數超過100個。
  • tables中任一表中不包含任何RowInBatchGetRowRequest。
  • tables中任一表的columns_to_get超過128列。

響應訊息結構

说明 BatchGetRow操作可能會在行層級部分失敗,此時返回的HTTP狀態代碼仍為200。應用程式必須對RowInBatchGetRowResponse中的error進行檢查確認每一行的執行結果,並進行相應的處理。
message BatchGetRowResponse {
    repeated TableInBatchGetRowResponse tables = 1;
}          
參數類型描述
tablesrepeated TableInBatchGetRowResponse對應每個table下讀取到的資料。

響應訊息中TableInBatchGetRowResponse對象的順序與BatchGetRowRequest中的TableInBatchGetRowRequest對象的順序相同;每個TableInBatchGetRowResponse下的RowInBatchGetRowResponse對象的順序與TableInBatchGetRowRequest下的RowInBatchGetRowRequest相同。

如果某行不存在或者某行在指定的columns_to_get中沒有資料,仍然會在TableInBatchGetRowResponse中有一條對應的RowInBatchGetRowResponse,但其row下的primary_key_columns和attribute_columns將為空白。

如果某行讀取失敗,則該行所對應的RowInBatchGetRowResponse中is_ok將為false,此時row將為空白。

使用SDK

您可以使用如下語言的SDK批量讀取資料。

服務能力單元消耗

  • 如果本次操作整體失敗,則不消耗任何服務能力單元。
  • 如果請求逾時,結果未定義,則服務能力單元有可能被消耗,也可能未被消耗。
  • 其他情況將每個RowInBatchGetRowRequest視為一個GetRow操作獨立計算讀服務能力單元。更多資訊,請參見GetRow服務能力單元消耗