开启SQL独享版

当您使用SQL分析时,如果数据量较大,SQL普通版无法在一次查询中完整扫描指定时间段内的所有日志,返回的结果可能不包括所有匹配的数据,增加Shard可以提升读写能力,但只对新写入的数据生效。您可以通过开启SQL独享版,增加计算资源,提升单次分析的数据量。本文为您介绍SQL独享版的概念和如何开启SQL独享版。

前提条件

背景信息

日志服务中的数据必定保存在某一个分区(Shard)。日志服务通过限制每个Shard扫描的数据量,控制Logstore、EventStore、MetricStore的读写数据的能力。当使用SQL分析时,如果数据量较大,日志服务可能只返回部分匹配的结果。增加Shard数量可以提升读写能力,但只对新写入的数据生效,而且会导致实时消费的客户端过多。SQL独享版支持更强大的SQL分析能力,可以解决这一问题,典型场景包括:

  • 分析性能要求高的场景,例如实时数据分析。

  • 长周期的数据分析场景,例如月维度的数据分析。

  • 大规模业务的数据分析场景,例如千亿行数据的分析。

  • 通过日志服务实现多指标多维度(SQL并发数大于15个)的报表需求场景。

SQL独享版和SQL普通版的能力对比,请参见分析概述

计费信息

按照查询和分析时所使用的CPU时间计算。单位为核×小时,即1核计算资源独享使用1小时的费用。更多信息,请参见SQL独享版计费案例

  • 按量付费:SQL独享版费用=CPU时间(小时)×每小时单价

  • 资源包:新版资源包(预付计划2.0),换算成资源额度(CU)进行抵扣。

开启SQL独享版

日志服务支持如下两种开启方式。

  • 单次开启:仅当前Logstore下的查询和分析操作,使用SQL独享版。

  • 默认开启:当前Project下的所有查询和分析操作(包括告警、仪表盘等),都使用SQL独享版。

单次开启SQL独享版

  1. 登录日志服务控制台

  2. 在Project列表区域,单击目标Project。

    image

  3. 在控制台左侧,单击日志存储,在日志库列表中单击目标Logstore。

    image

  4. 单击SQL独享版图标。

    image.png

默认开启SQL独享版

  1. 登录日志服务控制台

  2. 在Project列表区域,单击目标Project。

    image

  3. 单击项目概览图标。

    image.png

  4. 将鼠标悬浮在SQL独享版CU数上,然后单击设置

    SQL独享版

  5. 编辑SQL独享版CU数面板中,打开是否默认开启的开关,然后单击确定

SDK示例

常见问题

  • 如何通过API开启SQL独享版?

    您可以在GetLogs接口中,通过powerSql参数或query参数开启SQL独享版。更多信息,请参见GetLogs

  • 如何获取CPU时间?

    执行查询和分析操作后,将鼠标悬浮在分析结果上,查看CPU时间,如下图所示。计费

  • SQL独享版的费用是否可控?

    日志服务通过SQL独享版的CU数来控制SQL独享版的费用。您可以在目标Project的概览页面中,配置SQL独享版CU数,如下图所示。

    说明

    CU(ComputeUnit)是SQL独享版运行过程中可以并行使用的计算核数。

    核数

  • 使用一次SQL独享版的费用是多少?

    在不同的数据量中执行不同的查询和分析语句,会产生不同的SQL独享版费用,案例如下表所示。

    查询和分析语句

    数据量(行)

    平均每次的费用(

    * | select avg(double_0) from stress_s1_mil1

    40亿

    0.030

    * | select avg(double_0), sum(double_0), max(double_0), min(double_0), count(double_0) from stress_s1_mil1

    40亿

    0.044

    * | select avg(double_0), sum(double_1), max(double_2), min(double_3), count(double_4) from stress_s1_mil1

    40亿

    0.092

    * | select key_0 , avg(double_0) as pv from stress_s1_mil1 group by key_0 order by pv desc limit 1000

    40亿

    0.080

    * | select long_0, avg(double_0) as pv from stress_s1_mil1 group by long_0 order by pv desc limit 1000

    40亿

    0.075

    * | select long_0, long_1, avg(double_0) as pv from stress_s1_mil1 group by long_0,long_1 order by pv desc limit 1000

    3亿

    0.073

    * | select avg(double_0) from stress_s1_mil1 where key_0='key_987'

    40亿

    0.0005