網易MySQL微專業學習筆記(十二)-MySQL容量評估

前言

這個系列屬於個人學習網易雲課堂MySQL數據庫工程師微專業的相關課程過程中的筆記,本篇爲其“MySQL業務優化與設計”中的MySQL數據類型相關筆記。

所有筆記可能不定期更新,發佈時不一定爲最終版。

正文

性能容量評估

     分析線上業務場景

     評估數據庫服務器所需性能指標

     預估可能成爲瓶頸的服務器資源

     幫助數據庫性能調優

數據庫服務器硬件性能指標

磁盤IO性能

內存容量

CPU

網絡吞吐量

磁盤容量

數據庫業務特點關鍵詞

OLTP/OLAP類型

併發請求

讀寫比例

數據量

冷熱數據比

數據分級存儲

OLTP與OLAP

T = Transaction

面向廣大用戶,高併發,較短事務操作

互聯網應用絕大部分屬於OLTP

OLTP看重服務器CPU,內存,些事務較多或內存不夠則依賴磁盤IO

A =Analytical

通常面向內部人員,大規模複雜查詢

OLAP看重磁盤掃描的IO能力,部分依賴內存排序。

併發請求-衡量線上業務繁忙程度

業務高峯時數據庫的每秒併發訪問量是多少

通過應用服務器數量,連接池配置判斷

通過產品估算初上線用戶規模和用戶增長速度

通過實際業務業務類型判斷

併發量相關資源:CPU

讀寫比例-描述應用程序如何使用數據庫

線上業務select只讀與update/delete/insert寫操作比例

delete/update通常都是先讀再寫

insert需要分區數據寫入是持續insert還是大量導入數據

根據業務實際場景分析

多數場景相關資源:內存

多寫場景相關資源:磁盤IO

數據量-總量

數據庫服務器存儲設備可擴容能力上限

根據估算的業務量,寫入模式,分析數據增長量

預估一個硬件升級週期內數據庫可存放數據的總量,上線時要留好餘量

數據總量相關資源:磁盤容量

冷數據與熱數據-有用數據的實時集合

熱數據,線上最新一定週期內將被反覆訪問的數據

冷數據,線上保存着的,最近不會被在線用戶用到的數據

估算活躍用戶量,數據增長量等預估熱數據量

內存大小盡可足夠存放線上實時熱數據。

熱數據相關資源:內存

MySQL性能測試

爲什麼需要做性能測試

對線上產品缺乏心裏預估

重現線上異常

規劃未來的業務增長

測試不同硬件軟件配置

性能測試的分類

設備層的測試

業務層的測試

數據庫層的測試

設備層的測試

關注那些性能

服務器、磁盤性能

磁盤壞塊率

服務器壽命

業務層的測試

真的業務進行測試

數據庫層的測試

什麼情況下要做MySQL的測試

測試不同的MySQL分支版本

測試不同的MySQL版本

測試不同的Mysql參數搭配

MySQL測試分類

CPU Bound

    全內存的測試,測試的數據遠小於配置的內存;這樣就可以不用因爲磁盤IO的性能不同,而影響測試結果。

IO Bound

     測試的數據量遠大於內存,這就有大量的數據從磁盤IO讀取寫入;

     遠大於內存

     每個均包含:

寫入測試

更新測試

純讀測試

混合模式

     以上三種都有。

常用的測試工具

開源的MySQL性能測試工具

sysbench

tpcc-mysql

mysqlslap

性能測試衡量指標

服務吞吐量(TPS,QPS)

TPS:每秒鐘執行的事務量

QPS:每秒鐘執行的請求量

若一個事務中包含10個請求,每秒鐘可執行10個事務

則,TPS爲10,QPS爲10*10=100

服務響應時間

服務併發性

Sysbench

     業界較爲出名的性能測試工具

     可以測試磁盤、CPU、數據庫

     支持多種數據庫:Oracle、DB2、MySQL

     需要自己下載編譯安裝

     建議版本Sysbench0.5

編譯Sysbench

1)下載sysbench

git clone https://github.com/akopytov/sysbench.git

2)編譯&安裝

./autogen.sh

./configure --prefix=/home/ddb/tmp/sysbench

make && make install

3)./sysbench --help

4)初始化數據

sysbench --test=parallel_prepare.lua --oltp_tables_count=1 --rand-init=on --oltp-table-size=500000000 --mysql-host=127.0.0.1 --mysql-port=3306 --mysql-user=sys --mysql-password=netease --mysql-db=sbtest --max-requests=0 prepare

5)運行測試

sysbench --test=oltp.lua --oltp_tables_count=1 --num-threads=100 --oltp-table-size=500000000 --oltp-read-only=off --report-interval=10 --rand-type=uniform --mysql-host=127.0.0.1 --mysql-port=3306 --mysql-user=sys --mysql-password=netease --mysql-db=sbtest --max-time=1000 --max-requests=0 run

6)數據清理

sysbench --test=parallel_prepare.lua --oltp_tables_count=1 --rand-init=on --oltp-table-size=500000000 --mysql-host=127.0.0.1 --mysql-port=3306 --mysql-user=sys --mysql-password=netease --mysql-db=sbtest --max-requests=0 cleanup

Sysbench流程

初始化數據-》運行測試-》清理數據

Prepare語法--初始化數據

sysbench --test=parallel_prepare.lua --oltp_tables_count=1 --rand-init=on --oltp-table-size=500000000 --mysql-host=127.0.0.1 --mysql-port=3306 --mysql-user=sys --mysql-password=netease --mysql-db=sbtest --max-requests=0 prepare

--oltp-table-size 多少行記錄

Run語法-運行測試

sysbench --test=oltp.lua --oltp_tables_count=1 --num-threads=100 --oltp-table-size=500000000 --oltp-read-only=off --report-interval=10 --rand-type=uniform --mysql-host=127.0.0.1 --mysql-port=3306 --mysql-user=sys --mysql-password=netease --mysql-db=sbtest --max-time=1000 --max-requests=0 run

cleanup

1、手動drop掉表和datebase

2、使用syschench提供的cleanup命令

sysbench --test=parallel_prepare.lua --oltp_tables_count=1 --rand-init=on --oltp-table-size=500000000 --mysql-host=127.0.0.1 --mysql-port=3306 --mysql-user=sys --mysql-password=netease --mysql-db=sbtest --max-requests=0 cleanup

Tpcc-mysql

TPC-C是專門針對練級交易處理系統(OLTP系統)的規範

Tpcc-mysql由percona根據規範實現

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章