業界有一些通用的資料庫性能測試模型,可以用來測試硬體在不同測試模型下的性能表現。
參考
<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>