GreatSQL TPC-H 性能測試報告正式發佈!

来源:https://www.cnblogs.com/greatsql/p/18039042
-Advertisement-
Play Games

GreatSQL TPC-H 性能測試報告 - (2024 年 2 月28日) 完整性能測試報告:https://greatsql.cn/docs/8032-25/user-manual/10-optimze/3-3-benchmark-greatsql-tpch-report.html 1、概述 ...


file

GreatSQL TPC-H 性能測試報告 - (2024 年 2 月28日)

完整性能測試報告:https://greatsql.cn/docs/8032-25/user-manual/10-optimze/3-3-benchmark-greatsql-tpch-report.html

1、概述

本次測試針對GreatSQL資料庫基於標準 TPC-H 場景的測試。

TPC-H(商業智能計算測試)是美國交易處理效能委員會(TPC,TransactionProcessing Performance Council)組織制定的用來模擬決策支持類應用的一個測試集。目前,學術界和工業界普遍採用 TPC-H 來評價決策支持技術方面應用的性能。這種商業測試可以全方位評測系統的整體商業計算綜合能力,對廠商的要求更高,同時也具有普遍的商業實用意義,目前在銀行信貸分析和信用卡分析、電信運營分析、稅收分析、煙草行業決策分析中都有廣泛的應用,TPC-H 查詢包含八張數據表和 22 條複雜 SQL 查詢,大多數查詢包含多表聯接(JOIN)、子查詢和聚合查詢等。

GreatSQL資料庫是一款開源免費資料庫,可在普通硬體上滿足金融級應用場景,具有高可用高性能高相容高安全等特性,可作為MySQL或Percona Server for MySQL的理想可選替換。

2、測試環境

配置 備註
操作系統 OS:CentOS Linux release 7.9.2009 (Core)
內核:3.10.0-1160.el7.x86_64
CPU Intel(R) Xeon(R) Gold 6238 CPU @ 2.10GHz * 4
記憶體 251G
磁碟 INTEL SSDPE2KE032T8
資料庫 GreatSQL 8.0.32-25, Release 25, Revision 79f57097e3f

提示:在下麵運行TPC-H測試時,設置了Rapid引擎最大可使用的記憶體及線程數。

greatsql> SET GLOBAL rapid_memory_limit = 68719476736;
greatsql> SET GLOBAL rapid_worker_threads = 32;

3、測試表結構和數據量

各表數據量對比:

表名 TPC-H SF100數據量 TPC-H SF300數據量 備註
region 5 5 地區信息
nation 25 25 國家表
supplier 1000000 3000000 供應商信息
part 20000000 60000000 零件表
customer 15000000 45000000 消費者表
partsupp 80000000 240000000 配件供應表
orders 150000000 450000000 訂單表
lineitem 600037902 1799989091 訂單明細表

Rapid引擎表空間壓縮率:

庫名 InnoDB表空間文件總大小 Rapid引擎表空間總大小 壓縮率
TPC-H SF100 184570593436 28728373248 6.42
TPC-H SF300 591644573888 74334864443 7.96

各表結構關係如下圖所示:

file

4、測試結果

GreatSQL 8.0.32-25中,採用全新的Rapid存儲引擎,使得其在TPC-H性能測試中表現大大優於此前的其他版本,也大大優於MySQL社區版、Percona Server MySQL、MariaDB等資料庫。

在TPC-H SF100場景下,運行完全部22個TPC-H查詢SQL總耗時為79.28秒。在TPC-H SF300場景下,運行完全部22個TPC-H查詢SQL總耗時為386.195秒

每條SQL詳細耗時如下:

TPC-H Query GreatSQL TPC-H SF100(32C64G)耗時(秒) GreatSQL TPC-H SF300(32C64G)耗時(秒)
Q1 1.184 3.537
Q2 0.924 3.865
Q3 1.324 4.167
Q4 3.678 22.712
Q5 1.287 4.119
Q6 0.344 0.959
Q7 5.48 50.217
Q8 1.13 3.534
Q9 7.311 31.872
Q10 2.885 15.301
Q11 0.477 0.921
Q12 0.799 2.294
Q13 3.758 10.997
Q14 0.966 2.471
Q15 2.831 11.898
Q16 1.194 3.487
Q17 8.537 27.523
Q18 13.007 108.237
Q19 1.892 4.046
Q20 4.21 10.668
Q21 11.965 60.084
Q22 2.513 3.286
總耗時 77.696 386.195

GreatSQL SF100 vs SF300(32C64G)對比示意圖如下

file

5、測試步驟

5.1 安裝 GreatSQL

請參考GreatSQL手冊內容:安裝指南 ➥https://greatsql.cn/docs/8032-25/user-manual/4-install-guide/0-install-guide.html 完成GreatSQL安裝。

5.2 生成 TPC-H 測試數據

請參考GreatSQL手冊內容:TPC-H性能測試 ➥https://greatsql.cn/docs/8032-25/user-manual/10-optimze/3-2-benchmark-tpch.html 完成TPC-H工具編譯安裝。

運行 TPC-H dbgen 工具,生成數據文件,一共會生成 8 個表對應的 tbl 數據文件,例如:

$ ./dbgen -vf -s 100
...

$ ls -l *tbl
-rw-r--r-- 1 root root  2463490271 Sep 26 09:20 customer.tbl
-rw-r--r-- 1 root root 79579694556 Sep 26 09:20 lineitem.tbl
-rw-r--r-- 1 root root        2224 Sep 26 09:20 nation.tbl
-rw-r--r-- 1 root root 17793116301 Sep 26 09:20 orders.tbl
-rw-r--r-- 1 root root 12209211160 Sep 26 09:20 partsupp.tbl
-rw-r--r-- 1 root root  2453234158 Sep 26 09:20 part.tbl
-rw-r--r-- 1 root root         389 Sep 26 09:20 region.tbl
-rw-r--r-- 1 root root   142869803 Sep 26 09:20 supplier.tbl

也可以參考 duckdb_dbgen.pyhttps://gitee.com/GreatSQL/GreatSQL-Doc/blob/master/tpch/3.0.1/duckdb_dbgen.py 腳本做法,利用duckdb並行生成測試數據。

5.3 創建 TPC-H 測試資料庫表並導入數據

參考GreatSQL社區提供的TPC-H資料庫表初始化腳本:tpch-create-table.sqlhttps://gitee.com/GreatSQL/GreatSQL-Doc/blob/master/tpch/3.0.1/tpch-create-table.sql 完成TPC-H測試資料庫表創建。

$ mysql -f < tpch-create-table.sql
$ mysqlshow tpch100
Database: tpch100
+----------+
|  Tables  |
+----------+
| customer |
| lineitem |
| nation   |
| orders   |
| part     |
| partsupp |
| region   |
| revenue0 |
| supplier |
+----------+

利用GreatSQL的 parallel load data特性https://greatsql.cn/docs/8032-25/user-manual/5-enhance/5-1-highperf-parallel-load.html 並行導入TPC-H測試數據。

需要先修改GreatSQL選項secure_file_priv設置,指向上述 workdir 所在目錄,重啟GreatSQL使之生效。

參考GreatSQL社區提供的併發導入腳本:load-data-parallel.shhttps://gitee.com/GreatSQL/GreatSQL-Doc/blob/master/tpch/3.0.1/load-data-parallel.sh 完成數據導入。

提示:運行LOAD DATA導入數據時,可能會在 tmpdir 產生臨時文件,因此要保證 tmpdir 有足夠的剩餘可用磁碟空間。

5.4 確認Rapid引擎設置,並載入數據到secondary engine

數據導入完成後,在開始運行TPC-H測試前,需要先將測試數據載入到secondary engine引擎中。

先執行下麵命令,動態修改Rapid引擎最大可使用記憶體,其餘相關選項均為預設值:

greatsql> SET GLOBAL rapid_memory_limit = 68719476736;
greatsql> SET GLOBAL rapid_worker_threads = 32;

之後,執行以下命令載入測試數據到secondary engine:

greatsql> alter table customer secondary_load;
alter table lineitem secondary_load;
alter table nation secondary_load;
alter table orders secondary_load;
alter table part secondary_load;
alter table partsupp secondary_load;
alter table region secondary_load;
alter table supplier secondary_load;

這個過程需要一定時間,請耐心等待。

5.5 執行 TPC-H 測試

參考GreatSQL社區提供的TPC-H性能測試腳本,完成測試,並記錄各個SQL的耗時。

該測試腳本大概工作模式如下:

  1. 先執行22個查詢SQL,進行數據預熱,每條SQL各執行2次。

  2. 再分別執行22個查詢SQL,每個SQL各執行3次。

  3. 每次執行SQL都會記錄其起止時間,及其耗時,如下麵例所示:

[2023-09-27 01:38:45] BEGIN RUN TPC-H Q1 1 times
[2023-09-27 01:38:46] TPC-H Q1 END, COST: 1.301s


[2023-09-27 01:38:46] BEGIN RUN TPC-H Q1 2 times
[2023-09-27 01:38:47] TPC-H Q1 END, COST: 0.787s

上述結果中的 COST: 1.301s ,即為本SQL的運行耗時:1.301秒。

完整性能測試報告:https://greatsql.cn/docs/8032-25/user-manual/10-optimze/3-3-benchmark-greatsql-tpch-report.html


Enjoy GreatSQL

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 在本篇教程中,我們學習瞭如何使用 Taurus.MVC WebMVC 框架創建一個簡單的頁面。 我們創建了一個控制器並編寫了一個用於呈現頁面的方法,然後創建了對應的視圖,並最終成功運行了應用程式。 在下一篇教程中,我們將繼續探索 Taurus.MVC WebMVC 框架的更多功能和用法。 ...
  • 卡爾曼濾波器(Kalman filter)是一種高效的遞歸濾波器, 能夠從一系列包含噪音的測量值中估計動態系統的狀態. 因為不需要存儲歷史狀態, 沒有複雜計算, 非常適合在資源有限的嵌入式系統中使用. 常用於飛行器的導引, 導航及控制, 機械和金融中的時間序列分析, 軌跡最佳化等. 本文對卡爾曼濾波... ...
  • 創建工程 在STM32CubeMX中配置,選擇Makefile並生成。 環境安裝 編譯工程需要用到arm-none-eabi,去官網下載對應系統版本,下載後解壓到任意位置。 添加環境變數 添加環境變數到.bashrc文件: echo 'export PATH="/toolchain/arm-none ...
  • 哈嘍大家好,我是鹹魚。 之前寫過兩篇關於 SSL 過期巡檢腳本的文章: SSL 證書過期巡檢腳本 SSL 證書過期巡檢腳本(Python 版) 這兩篇文章都是講如何通過腳本去自動檢測 SSL 過期時間的,當我們發現某一功能變數名稱的 SSL 證書過期之後,就要及時更換。 如果這個功能變數名稱下有很多伺服器,我們一臺 ...
  • 當用戶需要的計算或者存儲資源冗餘超出業務需求時,可在管理控制台對已有集群進行縮容操作,以便充分利用GaussDB(DWS) 提供的計算資源和存儲資源。 ...
  • MySQL資料庫中,如何查看表和欄位的註釋信息,以及如何添加,修改表和欄位的註釋信息呢?這裡簡單總結歸納一下。僅供參考。 添加表的註釋信息 方法1:創建表的時候添加表的註釋信息 create table if not exists employee( employee_id int not null ...
  • SQL Server的配置管理器(SQL Server Configuration Manager)下,你可以隱藏資料庫實例,設置了隱藏實例後, SQL Server Browser不會對此伺服器實例的相關信息做出響應,(當 SQL Server 客戶端請求 SQL Server 資源時,客戶端將使 ...
  • 本文分享自華為雲社區《華為雲峰會2024,GaussDB揚帆出海,給世界一個更優選擇》,作者:GaussDB 資料庫。 2024年2月26~29日,由GSM協會主辦的“2024年世界移動通信大會”(Mobile World Congress 2024,簡稱MWC 2024)在西班牙巴塞羅那舉行。MW ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...