天天看點

雲原生資料湖分析(DLA) 支援表格存儲并發導出功能,性能大幅提升 !1. 背景介紹2. 并發導出資料(ParallelScan)簡介3.測試分析4.DLA ParallelScan 的使用及注意事項5.小結關于我們

1. 背景介紹

表格存儲(TableStore)的資料表是一種典型的 NoSQL 資料結構,可以高效地支援大規模資料的存儲和讀寫需求。表格存儲的多元索引提供了 Search 接口, 它支援所有的查詢功能,以及排序、統計聚合等分析能力。并且,執行結果也會按照指定的順序傳回。但是,在很多情況下我們更關心的是查詢性能,希望将命中的全部資料能以更快的速度傳回,而不關心整個結果集的順序。是以,DLA 接入了 TableStore 的 ParallelScan 接口,以提高資料查詢速度。

2. 并發導出資料(ParallelScan)簡介

多元索引提供了通用的查詢接口(Search)和并發導出接口(ParallelScan)。這兩個接口的功能基本上是相同的,但是 ParallelScan 接口為了提高某些方面的性能和吞吐能力舍棄了部分功能。相對于 Search 接口,ParallelScan 主要有以下一些特點:

  • 1.結果穩定

ParallelScan 任務是有狀态的,在一個 Session 請求中擷取到的結果是确定的。其執行結果由第一次發起請求時的資料狀态所決定,如果在任務執行過程中插入了新的資料或者修改了原有的資料不會對任務查詢結果造成影響。

  • 2.新增會話(Session)概念

引入會話概念,使用 SessionID 來保證查詢的結果集是穩定的。每次任務執行前首先需要通過 computeSplits 接口擷取 sessionID 和最大并發數。然後發起多個 ParallelScan 請求讀取資料,同時在請求中指定目前的 sessionID 和并發 ID。

  • 3.最大并發數

ParallelScan 支援的單請求的最大并發數由 computeSplits 接口傳回,資料越多,支援的并發數就越大。

  • 4.性能

ParallelScan 接口單并發掃描資料的性能有很大提升。當增加并發數時,性能可以繼續提高(調整并發數需要咨詢表格存儲的同學)。

  • 5.成本

ParallelScan 接口請求消耗的資源更少,是以其價格也更便宜。是以,對于大資料量的導出需求,建議使用 ParallelScan 功能。

  • 6.查詢列限制

ParallelScan 隻支援查詢多元索引中已建立的索引列,不能查詢多元索引中沒有的列,即一條 SQL 語句隻能 SELECT 多元索引中的列。

3.測試分析

3.1 測試環境

我們使用 DLA CU 版快速搭建一個 Presto 叢集,其配置資訊如下:

  • Worker 數量 5 個
  • Worker 規格 4 Core 8G

3.2 測試資料集

TPC-H 是美國交易處理效能委員會(TPC,Transaction Processing Performance Council) 組織制定的用來模拟決策支援類應用的一個測試集。是以,我們将表格存儲中的 TPC-H 資料集導入到 DLA 資料湖中進行分析處理。其中,表

lineitem

約 200G 資料,有 6 億行資料。前面提到 ParallelScan API 隻能查詢多元索引中的資料,是以我們需要先建立一個多元索引,将需要的字段添加到索引中。

3.3 測試分析

我們在測試環境下對表

lineitem

執行以下 SQL 進行查詢資料,其中

KEY

随着查詢資料量而不斷變化

select L_PARTKEY from ots_db.lineitem where L_PARTKEY < KEY           

從下圖可以清晰地看到,使用 ParallelScan API 的查詢性能是非常好的。随着查詢資料量的逐漸增加,使用 Search API 查詢的耗時劇烈增加,這是由其底層設計所造成,導出的資料越多就會變得越慢。索引查詢(Search 接口)的耗時增加非常明顯。而 ParallelScan 接口的耗時則一直比較低,并且随着導出資料量的不變增大其性能優勢也更加突出。

雲原生資料湖分析(DLA) 支援表格存儲并發導出功能,性能大幅提升 !1. 背景介紹2. 并發導出資料(ParallelScan)簡介3.測試分析4.DLA ParallelScan 的使用及注意事項5.小結關于我們

相對于普通查詢,ParallelScan API 的優勢也是比較明顯的。從下面這張圖可以看出,同等條件下普通查詢的耗時要遠大于 ParallelScan API 的查詢。細心的讀者可能會發現普通查詢的性能比較“穩定”,這是由于普通查詢每次都會掃描全量的表資料,是以無論我們導出多少資料其耗時都是基本上相等的。

雲原生資料湖分析(DLA) 支援表格存儲并發導出功能,性能大幅提升 !1. 背景介紹2. 并發導出資料(ParallelScan)簡介3.測試分析4.DLA ParallelScan 的使用及注意事項5.小結關于我們

4.DLA ParallelScan 的使用及注意事項

在 DLA 中使用ParallelScan 也是非常簡單的,隻需要在執行 SQL 時添加

ots-index-parallel-scan-mode=true

Hint 即可, 如:

/*+ots-index-parallel-scan-mode=true*/select count(L_PARTKEY) from YOUR_TABLE where L_PARTKEY < 10000           

注意:

  • 1.ParallelScan 隻能查詢多元索引中存在的字段
  • 2.ParallelScan 在導出資料量較大時效果比較明顯
  • 3.ParallelScan 預設情況下查詢出來的資料是無序的
  • 4.預設情況下不會使用 ParallelScan 模式,需要通過 Hint 來啟用

5.小結

通過以上說明和實驗,本文介紹了 DLA 查詢表格存儲的方式,并進行了性能分析和對比。 Search 接口可以快速掃描多元索引的少量資料,而 ParallelScan 比較适用于掃描多元索引的大量資料集。

關于我們

資料湖分析Data Lake Analytics簡介

歡迎大家使用雲原生資料湖分析(DLA),DLA不僅僅便宜,且快,且友善,專為阿裡雲資料湖分析方案而生

  • 支援自建、托管RDS、NoSQL、OSS(JSON、CSV、Parquet等格式)多種資料源分析
  • 支援按量 按照掃描量 的計費方式,準入門檻0元,提供的Serverless的彈性服務為按需收費,不需要購買固定的資源,完全契合業務潮汐帶來的資源波動,滿足彈性的分析需求,同時極大地降低了運維成本和使用成本
  • 平台底層托管大叢集且自動彈性,在一定資料量情況下,分析性能比自建小叢集高出400%
  • 支援一鍵 把 MySQL、PG、SqlServer、PolarDb資料庫 拖到DLA,再分析,解決原MySQL不敢分析的問題。 DLA 分析性能TPC-H 10G情況 比原MySQL 8c16g 等高出10倍,資料量越大,MySQL性能越差,在1TB資料量下,原MySQL基本跑不出來

産品文檔:

https://www.aliyun.com/product/datalakeanalytics

幫助文檔:

https://help.aliyun.com/document_detail/70378.html

MySQL&PG&SqlServer一鍵同步資料到DLA:

https://help.aliyun.com/document_detail/126559.html

新客戶1元試用:

https://common-buy.aliyun.com/?commodityCode=openanalytics_post

歡迎大家進群咨詢了解

雲原生資料湖分析(DLA) 支援表格存儲并發導出功能,性能大幅提升 !1. 背景介紹2. 并發導出資料(ParallelScan)簡介3.測試分析4.DLA ParallelScan 的使用及注意事項5.小結關于我們