SQL查詢功能為多資料引擎提供統一的提供者。SQL本身不會有額外的計算消耗。但是使用SQL查詢資料的過程中,表掃描、索引查詢等操作會消耗讀寫輸送量。本文介紹了SQL查詢功能的計費項目及計費樣本。
注意事項
SQL本身不會有額外的費用,但是使用SQL查詢資料過程中涉及到的表掃描、索引查詢等操作會產生費用。
使用SQL查詢資料的過程中只會產生讀輸送量消耗。
如果資料表與索引已配置了預留讀輸送量,則只有使用SQL查詢所產生的讀輸送量超出預留讀輸送量的部分才會按照按量讀輸送量進行計費。
不同的SQL複雜度涉及到的資料查詢與掃描會有較大差別,請避免使用涉及全表掃描的SQL語句,且盡量與索引配合來最大化使用資源。
計費項目
計費項目 | 計費方式 | 描述 |
按量讀輸送量 |
| 單條SQL讀輸送量是執行該SQL時調用表與索引所產生的讀輸送量總和。單位為CU。 使用SQL查詢過程中,可能消耗讀輸送量的操作如下:
|
計費樣本
假設Table Store中有一個訂單表sample_table,主鍵為user_id(String類型),屬性列包括order_id(String類型)、order_cost(Double類型)等,其中order_id和user_id均唯一。該訂單表中有1萬個使用者且每個使用者有100行資訊,總共100萬行資料,單行資料1 KB左右。
執行不同SQL語句涉及的資源類型和計量資料測算請參見下表。
SQL語句 | 涉及資源類型 | 計量資料測算 |
SELECT * FROM sample_table WHERE user_id="user1" | 資料表 | 查詢條件中的列為主鍵列,Table Store能夠直接通過資料錶快速查詢到對應user_id。 消耗的讀輸送量為100行*1 KB/4 KB=25 CU |
SELECT sum(order_cost) FROM sample_table WHERE user_id="user1" | 資料表 | 查詢條件中的列為主鍵列,Table Store能夠直接通過資料錶快速查詢到對應user_id。同時,SQL本身的計算不會有額外的讀輸送量消耗,則僅計算資料掃描部分。 消耗的讀輸送量為100行*1 KB/4 KB=25 CU |
SELECT order_cost FROM sample_table WHERE order_id="order1" | 資料表 | 查詢條件中的列為非主鍵列,如果未配合索引使用,則Table Store要通過掃描全表來查詢對應order_id。 消耗的讀輸送量為100萬行*1 KB/4 KB=25萬 CU 重要 在實際使用時,為了防止出現大量CU消耗的情況,Table Store會限制此類行為。使用時如果涉及到資料掃描的情境,建議配合索引使用來最佳化查詢。 |
資料表和索引配合使用 | 查詢條件中的列為非主鍵列,如果資料表的索引中包含了查詢條件中的列,則Table Store會自動選擇索引來查詢對應order_id。 消耗的讀輸送量為1行*1 KB/4 KB,向上取整為1 CU。 |