當您使用SQL分析時,如果資料量較大,SQL普通版無法在一次查詢中完整掃描指定時間段內的所有日誌,返回的結果可能不包括所有匹配的資料,增加Shard可以提升讀寫能力,但只對新寫入的資料生效。您可以通過開啟SQL獨享版,增加計算資源,提升單次分析的資料量。本文為您介紹SQL獨享版的概念和如何開啟SQL獨享版。
前提條件
已建立Standard Logstore。具體操作,請參見建立Logstore。
已採集日誌。具體操作,請參見資料擷取。
已配置索引。具體操作,請參見配置索引。
背景資訊
Log Service中的資料必定儲存在某一個分區(Shard)。Log Service通過限制每個Shard掃描的資料量,控制Logstore、EventStore、MetricStore的讀寫資料的能力。當使用SQL分析時,如果資料量較大,Log Service可能只返回部分匹配的結果。增加Shard數量可以提升讀寫能力,但只對新寫入的資料生效,而且會導致即時消費的用戶端過多。SQL獨享版支援更強大的SQL分析能力,可以解決這一問題,典型情境包括:
分析效能要求高的情境,例如即時資料分析。
長周期的資料分析情境,例如月維度資料分析。
大規模業務的資料分析情境,例如千億行資料的分析。
通過Log Service實現多指標多維度(SQL並發數大於15個)的報表需求情境。
SQL獨享版和SQL普通版的能力對比,請參見分析概述。
計費資訊
按照查詢和分析時所使用的CPU時間計算。單位為核×小時,即1核計算資源獨享使用1小時的費用。更多資訊,請參見SQL獨享版計費案例。
隨用隨付:SQL獨享版費用=CPU時間(小時)×每小時單價
資源套件:預付計劃資源套件,換算成資源額度(CU)進行抵扣。
開啟SQL獨享版
Log Service支援如下兩種開啟方式。
單次開啟:僅當前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獨享版的費用是否可控?
Log Service通過SQL獨享版的CU數來控制SQL獨享版的費用。您可以在目標Project的概覽頁面中,配置SQL獨享版CU數,如下圖所示。
說明CU(ComputeUnit)是SQL獨享版運行過程中可以並行使用的計算核心數。
使用一次SQL獨享版的費用是多少?
在不同的資料量中執行不同的查詢和分析語句,會產生不同的SQL獨享版費用,案例如下表所示。
查詢和分析語句
資料量(行)
平均每次的費用(美元)
* | select avg(double_0) from stress_s1_mil1
40億
0.004435
* | select avg(double_0), sum(double_0), max(double_0), min(double_0), count(double_0) from stress_s1_mil1
40億
0.006504
* | select avg(double_0), sum(double_1), max(double_2), min(double_3), count(double_4) from stress_s1_mil1
40億
0.013600
* | select key_0 , avg(double_0) as pv from stress_s1_mil1 group by key_0 order by pv desc limit 1000
40億
0.011826
* | select long_0, avg(double_0) as pv from stress_s1_mil1 group by long_0 order by pv desc limit 1000
40億
0.011087
* | 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.010791
* | select avg(double_0) from stress_s1_mil1 where key_0='key_987'
40億
0.00007