當您使用SQL分析時,如果數據量較大,SQL普通版無法在一次查詢中完整掃描指定時間段內的所有日志,返回的結果可能不包括所有匹配的數據,增加Shard可以提升讀寫能力,但只對新寫入的數據生效。您可以通過開啟SQL獨享版,增加計算資源,提升單次分析的數據量。本文為您介紹SQL獨享版的概念和如何開啟SQL獨享版。
前提條件
已創建Standard Logstore。具體操作,請參見創建Logstore。
已采集日志。具體操作,請參見數據采集。
已配置索引。具體操作,請參見配置索引。
背景信息
日志服務中的數據必定保存在某一個分區(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獨享版
登錄日志服務控制臺。
在Project列表區域,單擊目標Project。
在控制臺左側,單擊日志存儲,在日志庫列表中單擊目標Logstore。
單擊圖標。
默認開啟SQL獨享版
登錄日志服務控制臺。
在Project列表區域,單擊目標Project。
單擊圖標。
將鼠標懸浮在SQL獨享版CU數上,然后單擊設置。
在編輯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