最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

如何對(duì) Databend 進(jìn)行基準(zhǔn)測試

2022-07-13 11:46 作者:Databend  | 我要投稿

Databend 的設(shè)計(jì)目標(biāo)之一就是保持最佳性能,為了更好觀測和評(píng)估性能,社區(qū)不光提供一套簡單的本地基準(zhǔn)測試方案,還建立了可視化的持續(xù)基準(zhǔn)測試。

本地基準(zhǔn)測試

hyperfine 是一種跨平臺(tái)的命令行基準(zhǔn)測試工具,支持預(yù)熱和參數(shù)化基準(zhǔn)測試。Databend 建議使用 hyperfine 通過 ClickHouse / MySQL 客戶端執(zhí)行基準(zhǔn)測試,本文將使用 MySQL 客戶端來介紹它。

前期準(zhǔn)備:

進(jìn)行本地基準(zhǔn)測試之前,必須完成以下幾項(xiàng)準(zhǔn)備工作:

  • 參照?Docs - Deploy Databend1?完成部署。

  • 安裝 MySQL 客戶端。

  • 根據(jù)?hyperfine - installation2?的提示安裝 hyperfine。

設(shè)計(jì)基準(zhǔn)測試套件:

根據(jù)你的數(shù)據(jù)集特征和關(guān)鍵查詢?cè)O(shè)計(jì) SQL 語句,如果需要預(yù)先加載數(shù)據(jù),請(qǐng)參考?Docs - Load Data?3?。

為方便示范,這里選用?Continuous Benchmarking - Vectorized Execution Benchmarking4?列出的 10 條語句,保存到 bench.sql 中。

使用 bash 腳本簡化流程:

下面給出一個(gè) benchmark.sh 范本,可以簡化整個(gè)基準(zhǔn)測試流程:

在這個(gè)腳本中:

  • 使用?-w/--warmup & WARMUP 在實(shí)際基準(zhǔn)測試之前運(yùn)行 3 次程序執(zhí)行來預(yù)熱。

  • 使用?-r/--runs & RUN 要求執(zhí)行 10 次基準(zhǔn)測試。

  • 允許指定 Databend MySQL 兼容服務(wù)的端口。

  • 允許指定輸入的 SQL 文件,以及輸出時(shí)的 Markdown 文件。

在使用前需要先運(yùn)行 chmod a+x ./benchmark.sh 賦予其可執(zhí)行權(quán)限。用法如下所示:

執(zhí)行基準(zhǔn)測試并獲取結(jié)果:

在這個(gè)例子中,MySQL 兼容服務(wù)的端口是 3307 ,基準(zhǔn)測試用到的 SQL 文件為 bench.sql , 預(yù)期的輸出在 databend-hyperfine.md 。

當(dāng)然,你可以根據(jù)自己的配置和需要進(jìn)行調(diào)整。

注意:下面的示例是在 AMD Ryzen 9 5900HS & 16GB RAM 配置下運(yùn)行產(chǎn)生,僅供參考。

終端中的輸出如下所示:

最終的結(jié)果會(huì)保存在 databend-hyperfine.md 中,如下所示。

持續(xù)基準(zhǔn)測試

Databend 的持續(xù)基準(zhǔn)測試由 GitHub Action + Vercel + DatabendCloud 強(qiáng)力驅(qū)動(dòng),在?datafuselabs/databend-perf?5?這個(gè) repo 中開源了源代碼和 Workflow。

基本介紹

項(xiàng)目布局:

Workflow:

持續(xù)基準(zhǔn)測試工作流定時(shí)計(jì)劃執(zhí)行,Perf Workflow 會(huì)在每天 00:25 UTC(北京時(shí)間 08:25)執(zhí)行,Reload Workflow 會(huì)在每周五 08:25 UTC(北京時(shí)間 16:25)執(zhí)行。

  1. 通過 GitHub API 獲取當(dāng)前日期和最新版本的 TAG 。

  2. 利用 perf-tool 和 DatabendCloud 進(jìn)行交互,運(yùn)行測試。

  3. 持久化性能數(shù)據(jù)到 databend-perf 這一 repo 中 。

  4. 執(zhí)行腳本處理數(shù)據(jù),使之生成前端需要的格式。

  5. 構(gòu)建前端,完成可視化。

測試套件:

databend-perf 中的測試套件分為 Query Benchmark 和 Load Benchmark 兩類,前者放在 benchmarks 目錄下,后者放在 reload 目錄下。測試用 YAML 格式定義:

metadata 中的 table 字段是必須的,且分配給每類 benchmark 的值都唯一。statements 則只需要指定 name 和 query 。

向量化執(zhí)行基準(zhǔn)測試:

定義在 benchmarks/numbers.yaml ,一組數(shù)值計(jì)算 SQL,利用 Databend 的 numbers 表函數(shù)提供百億級(jí)別的數(shù)據(jù)量。完整語句也可以在?Continuous Benchmarking - Vectorized Execution Benchmarking6?查看。

Ontime 常見分析場景基準(zhǔn)測試:

定義在 benchmarks/ontime.yaml ,一組常見的空中交通分析 SQL ,基于美國交通部公開的 OnTime 數(shù)據(jù)集,共計(jì) 202,687,654 條記錄。當(dāng)前此基準(zhǔn)測試不包含 JOIN 語句,Q5、Q6、Q7 均采用優(yōu)化后的形式。完整語句也可以在?Continuous Benchmarking - Ontime Benchmarking?7查看。

Ontime 數(shù)據(jù)集載入基準(zhǔn)測試:

定義在 reload/ontime.yaml ,同樣基于美國交通部公開的 OnTime 數(shù)據(jù)集,通過 s3 進(jìn)行 COPY INTO 。

關(guān)鍵語句:

上面 SQL 語句中的 m_ontime/?目錄即為數(shù)據(jù)集:由原來 60.8 GB 數(shù)據(jù)全部合并后,再拆分成 100 個(gè)大小相近的文件。

數(shù)據(jù)處理:

基準(zhǔn)測試得到的數(shù)據(jù)是 Json 格式的,會(huì)分類存放到 collector 這個(gè)目錄下。metadata 部分是包含表、版本、機(jī)器規(guī)格的信息;schema 部分則是對(duì)每條語句執(zhí)行情況的統(tǒng)計(jì),包括中位數(shù)、平均數(shù)等。示例:

經(jīng)由?stript/transform.go?處理,為每個(gè)查詢的對(duì)應(yīng)圖表聚合數(shù)據(jù),主要強(qiáng)調(diào)最大、最小、均值、中位數(shù)四個(gè)指標(biāo)。

示例:

可視化:

目前可視化方案采用 React + Echarts 實(shí)現(xiàn),每個(gè)圖表都對(duì)應(yīng)上面處理得到的一個(gè) Json 文件。在添加新的基準(zhǔn)測試后,無需修改前端即可展現(xiàn)新的圖表。

Graphs:?

  • 以折線圖的形式展示性能變化,并支持通過拖動(dòng)圖表下方的選擇器調(diào)整展示的時(shí)間區(qū)間。

  • 橫軸為日期,縱軸為執(zhí)行用時(shí),鼠標(biāo)懸浮到上方即可查看當(dāng)次執(zhí)行的信息。

Compare:?

  • 支持任選兩天對(duì)比執(zhí)行用時(shí)的變化,以百分比形式展示。

Status:?

  • 關(guān)注當(dāng)前最新性能測試結(jié)果中各指標(biāo)的情況,以柱型圖展示。

  • 橫軸為不同類型,縱軸為執(zhí)行用時(shí)。

后續(xù)優(yōu)化

目前?https://perf.databend.rs?為 Databend 提供了基本的持續(xù)性能監(jiān)控方案,但仍然需要關(guān)注以下幾個(gè)方向的內(nèi)容:

  • 選取更有代表性的指標(biāo):執(zhí)行次數(shù)較少(只有 10 次),可供選擇的指標(biāo)可能不夠具有代表性。例如:將次數(shù)提高到 100 次以獲取 P90 來替代當(dāng)前使用的中位數(shù)可能是比較合適的。

  • 增加性能測試場景的覆蓋:后續(xù)可以繼續(xù)新增對(duì)其他數(shù)據(jù)集和場景的性能測試,比如 ssb 、hits 。

  • 豐富性能監(jiān)控的方向:監(jiān)控 IO 和網(wǎng)絡(luò)性能表現(xiàn),對(duì)部分重點(diǎn)查詢提供額外的性能評(píng)估,比如解析 Json 的性能表現(xiàn)。

關(guān)于 Databend

Databend 是一款開源、彈性、低成本,基于對(duì)象存儲(chǔ)也可以做實(shí)時(shí)分析的新式數(shù)倉。期待您的關(guān)注,一起探索云原生數(shù)倉解決方案,打造新一代開源 Data Cloud。

  • Databend 文檔:https://databend.rs/

  • Twitter:https://twitter.com/Datafuse_Labs

  • Slack:https://datafusecloud.slack.com/

  • Wechat:Databend

  • GitHub :https://github.com/datafuselabs/databend

文章首發(fā)于公眾號(hào):Databned


Footnotes

  1. https://databend.rs/doc/deploy??

  2. https://github.com/sharkdp/hyperfine#installation??

  3. https://databend.rs/doc/load-data??

  4. https://databend.rs/doc/contributing/benchmarking#vectorized-execution-benchmarking????

  5. https://github.com/datafuselabs/databend-perf/??

  6. https://databend.rs/doc/contributing/benchmarking#vectorized-execution-benchmarking??

  7. https://databend.rs/doc/contributing/benchmarking#ontime-benchmarking??


如何對(duì) Databend 進(jìn)行基準(zhǔn)測試的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國家法律
罗山县| 香河县| 静乐县| 泽州县| 永昌县| 策勒县| 丰城市| 鹤山市| 安龙县| 绥江县| 德阳市| 普宁市| 德江县| 将乐县| 临安市| 方山县| 鄂托克前旗| 花垣县| 克山县| 榆中县| 溧水县| 奉化市| 仁化县| 县级市| 磐安县| 庐江县| 宁强县| 丹棱县| 金华市| 辽宁省| 安达市| 澎湖县| 丹棱县| 通榆县| 上饶市| 宁晋县| 南溪县| 阿巴嘎旗| 阿克| 扎兰屯市| 绩溪县|