SQL查询功能为多数据引擎提供统一的访问接口。SQL本身不会有额外的计算消耗。但是使用SQL查询数据的过程中,表扫描、索引查询等操作会消耗读写吞吐量。本文介绍了SQL查询功能的计费项及计费示例。
注意事项
SQL本身不会有额外的费用,但是使用SQL查询数据过程中涉及到的表扫描、索引查询等操作会产生费用。
使用SQL查询数据的过程中只会产生读吞吐量消耗。
如果数据表与索引已配置了预留读吞吐量,则只有使用SQL查询所产生的读吞吐量超出预留读吞吐量的部分才会按照按量读吞吐量进行计费。
不同的SQL复杂度涉及到的数据查询与扫描会有较大差别,请避免使用涉及全表扫描的SQL语句,且尽量与索引配合来最大化使用资源。
计费项
计费项 | 计费方式 | 描述 |
按量读吞吐量 |
| 单条SQL读吞吐量是执行该SQL时调用表与索引所产生的读吞吐量总和。单位为CU。 使用SQL查询过程中,可能消耗读吞吐量的操作如下:
|
计费示例
假设表格存储中有一个订单表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" | 数据表 | 查询条件中的列为主键列,表格存储能够直接通过数据表快速查询到对应user_id。 消耗的读吞吐量为100行*1 KB/4 KB=25 CU |
SELECT sum(order_cost) FROM sample_table WHERE user_id="user1" | 数据表 | 查询条件中的列为主键列,表格存储能够直接通过数据表快速查询到对应user_id。同时,SQL本身的计算不会有额外的读吞吐量消耗,则仅计算数据扫描部分。 消耗的读吞吐量为100行*1 KB/4 KB=25 CU |
SELECT order_cost FROM sample_table WHERE order_id="order1" | 数据表 | 查询条件中的列为非主键列,如果未配合索引使用,则表格存储要通过扫描全表来查询对应order_id。 消耗的读吞吐量为100万行*1 KB/4 KB=25万 CU 重要 在实际使用时,为了防止出现大量CU消耗的情况,表格存储会限制此类行为。使用时如果涉及到数据扫描的场景,建议配合索引使用来优化查询。 |
数据表和索引配合使用 | 查询条件中的列为非主键列,如果数据表的索引中包含了查询条件中的列,则表格存储会自动选择索引来查询对应order_id。 消耗的读吞吐量为1行*1 KB/4 KB,向上取整为1 CU。 |