天天看點

PostgreSQL 主機性能測試方法 - 單機單執行個體

業界有一些通用的資料庫性能測試模型,可以用來測試硬體在不同測試模型下的性能表現。

參考

<a href="http://www.tpc.org/">http://www.tpc.org/</a>

<a href="https://github.com/oltpbenchmark/oltpbench">https://github.com/oltpbenchmark/oltpbench</a>

<a href="http://oltpbenchmark.com/">http://oltpbenchmark.com/</a>

本文主要以postgresql為例,向大家介紹一下,如何使用postgresql來測試硬體的性能。

postgresql 的功能非常的強大,是以可以适用于幾乎所有的測試模型,同時使用者還可以根據自己的應用場景設計測試模型。

前面已經介紹了單機多執行個體的測試方法。

本文介紹的是單機單執行個體的測試方法。

使用fio測試磁盤或塊裝置的io能力。

1. 安裝libaio庫

2. 安裝fio

3. 測試順序讀寫,随機讀寫8k資料塊。

測試資料關注

測試單執行個體,是以不使用cgroup

1. 配置環境變量

2. 初始化資料庫叢集

3. 配置資料庫

4. 啟動資料庫

1. 初始化tpc-b資料

tpc-b (40億記錄)

準備資料

2. 持續測試15天(在用戶端機器啟動測試,假設用戶端postgresql已部署)

3. 測試結果

輸出tps,rt,标準差。

tps表示資料庫視角的事務處理能力(也就是單個測試腳本的每秒調用次數)。

rt表示響應時間。

标準差可以用來表示抖動,通常應該在1以内(越大,說明抖動越厲害)。

4. 主機性能結果

測試分區表upsert 即 insert on conflict

安裝分區表插件

1. 定制測試腳本

例如測試insert on conflict, 20億分區表,單表2000萬。

建立的表如下

目前9.6在分區表執行on conflict有個bug,已送出給社群。

先使用function代替

pgbench腳本

2. 測試

測試單表upsert 即 insert on conflict

例如測試insert on conflict, 單表20億。

<a href="http://info.flagcounter.com/h9v1">count</a>