日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

对SQL server、Oracle、MySQL和PostgreSQL进行OLTP性能测试(Benchmark)

發布時間:2023/12/4 数据库 63 豆豆
生活随笔 收集整理的這篇文章主要介紹了 对SQL server、Oracle、MySQL和PostgreSQL进行OLTP性能测试(Benchmark) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
  • 📢歡迎點贊 :👍 收藏 ?留言 📝 如有錯誤敬請指正,賜人玫瑰,手留余香!

  • 📢本文作者:由webmote 原創,首發于 【掘金】

  • 📢作者格言:生活在于折騰,當你不折騰生活時,生活就開始折騰你,讓我們一起加油!💪💪💪

1.為什么做性能測試

在工作中,完全基于新的數據庫開發的場景并不是很多,畢竟現在這個年代,從頭跟著公司干到上市的并不多了。因此我們常常遇到的是經過業務的迅速上升,會發現當初的數據庫選型到目前為止,有諸多的不合適,那么就需要評估數據庫的新選型了,既然是評估工作,避免不了性能的測試。

2.業界標準 TPC-C

TPC-C是業界較認可的在線事務處理基準。

TPC-C是一個在線事務處理(OLTP)基準,于1992年7月批準。TPC-C比以前的OLTP基準測試(如TPC-A)更復雜,因為它引入了更多的事務類型、更復雜的數據庫和整體執行結構。

TPC-C混合了5個不同類型和復雜性的并發事務,它們要么在線執行,要么排隊等待延遲執行。該數據庫由9種類型的表組成,這些表的記錄和填充大小各不相同。TPC-C是以每分鐘事務數(tpmC)來衡量的。雖然基準描述以批發供應商的為例子,但TPC-C并不局限于任何特定業務部門的活動,而是代表必須管理、銷售或分發產品或服務的任何行業。

其涉及的表以及業務數量如下,更詳細的介紹可參見標準:

3.測試工具

為了支持這些數據庫的測試,當然需要選擇一個合適的工具,而目前最合適的測試工具莫過于BenchmarkSQL。

github地址如下.

BenchmarkSQL采用Java語言編寫,使用JDBC對SQL數據庫進行壓力測試。整體架構是處理模擬終端、用戶和應用程序線程的一系列數據結構、隊列和線程組。

其架構上做了一系列優化,允許配置驅動至數千個倉庫(稱為縮放因子),而不會壓倒測試驅動程序本身的工作機器,這是非常重要的。

從標椎上看,每個倉庫必須有 10 個終端。將這些數字放在一起很容易看出,"每個終端一個線程"的實現很可能不得行哦。

如果要驅動一個 100GB 的數據庫(在 2016 年,我認為是一個中小型服務器),我們需要配置 1,000 個倉庫,這將導致 10,000 個終端線程。

在 CentOS-7 64bit 等操作系統上,每個線程默認使用 1MB 的堆??臻g,上下文切換在 10,000 個線程之間已經足夠CPU忙碌的了,甚至于可能會影響測試的結果,而嘗試為大型服務器驅動 1TB 數據庫,那測試機器將崩潰。

而BenchmarkSQL采用了類似隊列的結構而不是真正的線程去驅動它們,因此可以滿足性能壓測的要求。

4.安裝 BenchmarkSQL 6.0

先配置編譯環境:

  • Java 開發環境 (java-1.8.0-openjdk-devel or newer).

  • Maven build 工具.

  • Docker

  • Git

構建

git clone https://github.com/pgsql-io/benchmarksql.git cd ~/benchmarksql mvn

5.運行壓測工具

先準備數據庫測試配置文件:

$ cd benchmarksql/target/run $ cp sample.RDBMS.properties my.properties $ vi my.properties

目錄中包含了支持數據庫的測試配置文件,說明如下:

# firebird數據庫配置 sample.firebird.properties # mariadb / MySQL 數據庫配置 sample.mariadb.properties # oracle數據庫配置 sample.oracle.properties # postgresql 數據庫配置 sample.postgresql.properties # SQL Server 數據庫配置 sample.transact-sql.properties

特別需要注意的是MySQL數據庫的配置,其和mariadb是兼容的,因此直接使用即可。

使用壓測非常簡單,配置好文件后,只需要運行三個命令即可。

# 銷毀上次配置的數據庫表數據 ./runDatabaseDestroy.sh my.properties # 初始化壓測數據庫數據 ./runDatabaseBuild.sh my.properties # 開始壓測 ./runDatabaseBuild.sh my.properties復制代碼

如果需要臨時增大linux測試機線程數,請使用命令

ulimit -HSn 65536

測試結果如下:

2021-09-26 08:48:00,024 INFO - result, _____ latency (seconds) _____ 2021-09-26 08:48:00,024 INFO - result, TransType count | mix % | mean max 90th% | rbk% errors 2021-09-26 08:48:00,024 INFO - result, +--------------+---------------+---------+---------+---------+---------+---------+---------------+ 2021-09-26 08:48:00,025 INFO - result, | NEW_ORDER | 18,909 | 43.934 | 0.053 | 0.146 | 0.073 | 1.026 | 0 | 2021-09-26 08:48:00,035 INFO - result, | PAYMENT | 18,661 | 43.357 | 0.014 | 0.071 | 0.016 | 0.000 | 0 | 2021-09-26 08:48:00,036 INFO - result, | ORDER_STATUS | 1,851 | 4.301 | 0.005 | 0.011 | 0.006 | 0.000 | 0 | 2021-09-26 08:48:00,036 INFO - result, | STOCK_LEVEL | 1,834 | 4.261 | 0.003 | 0.012 | 0.004 | 0.000 | 0 | 2021-09-26 08:48:00,036 INFO - result, | DELIVERY | 1,785 | 4.147 | 0.000 | 0.001 | 0.001 | 0.000 | 0 | 2021-09-26 08:48:00,036 INFO - result, | DELIVERY_BG | 1,785 | 0.000 | 0.098 | 0.191 | 0.104 | 0.000 | 0 | 2021-09-26 08:48:00,037 INFO - result, +--------------+---------------+---------+---------+---------+---------+---------+---------------+ 2021-09-26 08:48:00,037 INFO - result, 2021-09-26 08:48:00,037 INFO - result, Overall NOPM: 630 (98.02% of the theoretical maximum) 2021-09-26 08:48:00,037 INFO - result, Overall TPM: 1,435

6. 配置文件參數說明

6.1 數據庫驅動程序和連接參數

參數描述例子
db數據庫類型postgres
driver要加載的 JDBC 類名稱。driver=org.postgresql.Driver
application客戶端應用程序類型,支持通用應用類型中的所有數據庫類型,該類型使用 JDBC。application=Generic
connJdbc 連接 Uriconn=jdbc:postgresql://localhost:5432/postgres
user數據庫用戶名user
password數據庫用戶密碼password

6.2 性能調節參數

參數描述
warehouses倉庫數據庫大小參數 這不僅影響初始數據庫的大小,還影響將模擬多少終端,默認是10倍倉庫數量
loadWorkers用于創建初始數據庫內容的并行線程數。僅影響初始化,不影響壓測。
monkeys用于處理終端輸入和輸出的猴子線的數量。
sutThreads要啟動的應用程序線程數。將創建這么多并行數據庫連接來處理傳入請求。
maxDeliveryBGThreads允許在任何時候處理交付交易的背景部分的最大線程數。
maxDeliveryBGPerWarehouse允許"為同一倉庫"處理交貨交易的背景線程數。

7. 生成可視化統計界面

需要安裝R包,來把測試報告數據轉化為統計數據界面。

利用generateReport.py腳本來完成該項任務。

./generateReport.py --resultdir=my_result_2021-09-26_080750/# 參數有下列可選,resultdir是必須參數 --template --resultdir --disk --interface

8. 小結

性能測試的結果呢?

結果重要嗎?掌握了方法,結果唾手可得。

嗯嗯,這點成果還是不太適合直接公開的,暫時保個密,等過段時間再來更新吧。

👓都看到這了,還在乎點個贊嗎?

👓都點贊了,還在乎一個收藏嗎?

👓都收藏了,還在乎一個評論嗎?

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的对SQL server、Oracle、MySQL和PostgreSQL进行OLTP性能测试(Benchmark)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。