'MySQL跑在CentOS 6 和 7上的性能比較'

"
作者:yangyidba
來源:公眾號yangyidba

一 前言

計劃今年將數據庫服務器的os 從centos 6 升級到centos 7,根據慣例,升級之前我們要進行一次性能壓測。本文分享一下我們的壓測記錄和結果。

二 壓測準備

2.1 壓測方法

使用sysbench-0.5構造10張表 ,每張表500w數據,並行度分別為12 24 36 48 60 72 ,每個併發壓測4小時,共計24小時。壓測命令如下

/opt/yz-sysbench/bin/sysbench --test=/opt/yz-sysbench/share/sysbench/oltp.lua --oltp-tables-count=10 --oltp-table-size=5000000 - -mysql-db=sysbench --mysql-user=sysbench --mysql-password=sysbench --mysql-socket=/srv/my3306/run/mysql.sock --max-time=14400 --max-requests=0 --num-threads=12 --oltp-test-mod e=complex run

注: sysbench在本地安裝,壓測幾乎沒有網絡交互的時間損耗。

2.2 目標數據

因為是要壓測數據庫性能,所以本次主要監控數據庫性能qps tps,主機io ,cpu 等性能指標。

三 壓測數據

3.1 qps


"
作者:yangyidba
來源:公眾號yangyidba

一 前言

計劃今年將數據庫服務器的os 從centos 6 升級到centos 7,根據慣例,升級之前我們要進行一次性能壓測。本文分享一下我們的壓測記錄和結果。

二 壓測準備

2.1 壓測方法

使用sysbench-0.5構造10張表 ,每張表500w數據,並行度分別為12 24 36 48 60 72 ,每個併發壓測4小時,共計24小時。壓測命令如下

/opt/yz-sysbench/bin/sysbench --test=/opt/yz-sysbench/share/sysbench/oltp.lua --oltp-tables-count=10 --oltp-table-size=5000000 - -mysql-db=sysbench --mysql-user=sysbench --mysql-password=sysbench --mysql-socket=/srv/my3306/run/mysql.sock --max-time=14400 --max-requests=0 --num-threads=12 --oltp-test-mod e=complex run

注: sysbench在本地安裝,壓測幾乎沒有網絡交互的時間損耗。

2.2 目標數據

因為是要壓測數據庫性能,所以本次主要監控數據庫性能qps tps,主機io ,cpu 等性能指標。

三 壓測數據

3.1 qps


MySQL跑在CentOS 6 和 7上的性能比較


3.2 insert /delete

sysbench 的oltp模式,insert和delete的比例是一樣的,壓測每秒的tps數據一致,故放到一起。


"
作者:yangyidba
來源:公眾號yangyidba

一 前言

計劃今年將數據庫服務器的os 從centos 6 升級到centos 7,根據慣例,升級之前我們要進行一次性能壓測。本文分享一下我們的壓測記錄和結果。

二 壓測準備

2.1 壓測方法

使用sysbench-0.5構造10張表 ,每張表500w數據,並行度分別為12 24 36 48 60 72 ,每個併發壓測4小時,共計24小時。壓測命令如下

/opt/yz-sysbench/bin/sysbench --test=/opt/yz-sysbench/share/sysbench/oltp.lua --oltp-tables-count=10 --oltp-table-size=5000000 - -mysql-db=sysbench --mysql-user=sysbench --mysql-password=sysbench --mysql-socket=/srv/my3306/run/mysql.sock --max-time=14400 --max-requests=0 --num-threads=12 --oltp-test-mod e=complex run

注: sysbench在本地安裝,壓測幾乎沒有網絡交互的時間損耗。

2.2 目標數據

因為是要壓測數據庫性能,所以本次主要監控數據庫性能qps tps,主機io ,cpu 等性能指標。

三 壓測數據

3.1 qps


MySQL跑在CentOS 6 和 7上的性能比較


3.2 insert /delete

sysbench 的oltp模式,insert和delete的比例是一樣的,壓測每秒的tps數據一致,故放到一起。


MySQL跑在CentOS 6 和 7上的性能比較


3.3 update 性能


"
作者:yangyidba
來源:公眾號yangyidba

一 前言

計劃今年將數據庫服務器的os 從centos 6 升級到centos 7,根據慣例,升級之前我們要進行一次性能壓測。本文分享一下我們的壓測記錄和結果。

二 壓測準備

2.1 壓測方法

使用sysbench-0.5構造10張表 ,每張表500w數據,並行度分別為12 24 36 48 60 72 ,每個併發壓測4小時,共計24小時。壓測命令如下

/opt/yz-sysbench/bin/sysbench --test=/opt/yz-sysbench/share/sysbench/oltp.lua --oltp-tables-count=10 --oltp-table-size=5000000 - -mysql-db=sysbench --mysql-user=sysbench --mysql-password=sysbench --mysql-socket=/srv/my3306/run/mysql.sock --max-time=14400 --max-requests=0 --num-threads=12 --oltp-test-mod e=complex run

注: sysbench在本地安裝,壓測幾乎沒有網絡交互的時間損耗。

2.2 目標數據

因為是要壓測數據庫性能,所以本次主要監控數據庫性能qps tps,主機io ,cpu 等性能指標。

三 壓測數據

3.1 qps


MySQL跑在CentOS 6 和 7上的性能比較


3.2 insert /delete

sysbench 的oltp模式,insert和delete的比例是一樣的,壓測每秒的tps數據一致,故放到一起。


MySQL跑在CentOS 6 和 7上的性能比較


3.3 update 性能


MySQL跑在CentOS 6 和 7上的性能比較


3.4 cpu io 對比


"
作者:yangyidba
來源:公眾號yangyidba

一 前言

計劃今年將數據庫服務器的os 從centos 6 升級到centos 7,根據慣例,升級之前我們要進行一次性能壓測。本文分享一下我們的壓測記錄和結果。

二 壓測準備

2.1 壓測方法

使用sysbench-0.5構造10張表 ,每張表500w數據,並行度分別為12 24 36 48 60 72 ,每個併發壓測4小時,共計24小時。壓測命令如下

/opt/yz-sysbench/bin/sysbench --test=/opt/yz-sysbench/share/sysbench/oltp.lua --oltp-tables-count=10 --oltp-table-size=5000000 - -mysql-db=sysbench --mysql-user=sysbench --mysql-password=sysbench --mysql-socket=/srv/my3306/run/mysql.sock --max-time=14400 --max-requests=0 --num-threads=12 --oltp-test-mod e=complex run

注: sysbench在本地安裝,壓測幾乎沒有網絡交互的時間損耗。

2.2 目標數據

因為是要壓測數據庫性能,所以本次主要監控數據庫性能qps tps,主機io ,cpu 等性能指標。

三 壓測數據

3.1 qps


MySQL跑在CentOS 6 和 7上的性能比較


3.2 insert /delete

sysbench 的oltp模式,insert和delete的比例是一樣的,壓測每秒的tps數據一致,故放到一起。


MySQL跑在CentOS 6 和 7上的性能比較


3.3 update 性能


MySQL跑在CentOS 6 和 7上的性能比較


3.4 cpu io 對比


MySQL跑在CentOS 6 和 7上的性能比較


"
作者:yangyidba
來源:公眾號yangyidba

一 前言

計劃今年將數據庫服務器的os 從centos 6 升級到centos 7,根據慣例,升級之前我們要進行一次性能壓測。本文分享一下我們的壓測記錄和結果。

二 壓測準備

2.1 壓測方法

使用sysbench-0.5構造10張表 ,每張表500w數據,並行度分別為12 24 36 48 60 72 ,每個併發壓測4小時,共計24小時。壓測命令如下

/opt/yz-sysbench/bin/sysbench --test=/opt/yz-sysbench/share/sysbench/oltp.lua --oltp-tables-count=10 --oltp-table-size=5000000 - -mysql-db=sysbench --mysql-user=sysbench --mysql-password=sysbench --mysql-socket=/srv/my3306/run/mysql.sock --max-time=14400 --max-requests=0 --num-threads=12 --oltp-test-mod e=complex run

注: sysbench在本地安裝,壓測幾乎沒有網絡交互的時間損耗。

2.2 目標數據

因為是要壓測數據庫性能,所以本次主要監控數據庫性能qps tps,主機io ,cpu 等性能指標。

三 壓測數據

3.1 qps


MySQL跑在CentOS 6 和 7上的性能比較


3.2 insert /delete

sysbench 的oltp模式,insert和delete的比例是一樣的,壓測每秒的tps數據一致,故放到一起。


MySQL跑在CentOS 6 和 7上的性能比較


3.3 update 性能


MySQL跑在CentOS 6 和 7上的性能比較


3.4 cpu io 對比


MySQL跑在CentOS 6 和 7上的性能比較


MySQL跑在CentOS 6 和 7上的性能比較


centos 7的cpu 負載比centos6 略低,io 利用比centos 6的更高些。

3.5 熱點秒殺場景

MySQL為了提高數據庫的數據安全性,設置2個參數來控制數據落盤的策略,我們目前的設置為每次提交事務都會出發寫數據到磁盤,帶來的好處是數據安全,最極端的情況下會丟失一個事務,其負面影響是會導致大量的IO操作。

另外一點數據庫併發執行update同一行的動作會被其他已經持有鎖的會話堵住,並且需要要進行判斷會不會由於自己的加入導致死鎖,這個時間複雜度O(n),如果有1000個請求,每個線程都要檢測自己和其他999個線程是否死鎖。如果其他線程都沒有持有其他鎖,約比較50w次(計算方式 999+998+...+1)。這個種鎖等待和檢查死鎖衝突帶來巨大的時間成本。

核心優化參數

"
作者:yangyidba
來源:公眾號yangyidba

一 前言

計劃今年將數據庫服務器的os 從centos 6 升級到centos 7,根據慣例,升級之前我們要進行一次性能壓測。本文分享一下我們的壓測記錄和結果。

二 壓測準備

2.1 壓測方法

使用sysbench-0.5構造10張表 ,每張表500w數據,並行度分別為12 24 36 48 60 72 ,每個併發壓測4小時,共計24小時。壓測命令如下

/opt/yz-sysbench/bin/sysbench --test=/opt/yz-sysbench/share/sysbench/oltp.lua --oltp-tables-count=10 --oltp-table-size=5000000 - -mysql-db=sysbench --mysql-user=sysbench --mysql-password=sysbench --mysql-socket=/srv/my3306/run/mysql.sock --max-time=14400 --max-requests=0 --num-threads=12 --oltp-test-mod e=complex run

注: sysbench在本地安裝,壓測幾乎沒有網絡交互的時間損耗。

2.2 目標數據

因為是要壓測數據庫性能,所以本次主要監控數據庫性能qps tps,主機io ,cpu 等性能指標。

三 壓測數據

3.1 qps


MySQL跑在CentOS 6 和 7上的性能比較


3.2 insert /delete

sysbench 的oltp模式,insert和delete的比例是一樣的,壓測每秒的tps數據一致,故放到一起。


MySQL跑在CentOS 6 和 7上的性能比較


3.3 update 性能


MySQL跑在CentOS 6 和 7上的性能比較


3.4 cpu io 對比


MySQL跑在CentOS 6 和 7上的性能比較


MySQL跑在CentOS 6 和 7上的性能比較


centos 7的cpu 負載比centos6 略低,io 利用比centos 6的更高些。

3.5 熱點秒殺場景

MySQL為了提高數據庫的數據安全性,設置2個參數來控制數據落盤的策略,我們目前的設置為每次提交事務都會出發寫數據到磁盤,帶來的好處是數據安全,最極端的情況下會丟失一個事務,其負面影響是會導致大量的IO操作。

另外一點數據庫併發執行update同一行的動作會被其他已經持有鎖的會話堵住,並且需要要進行判斷會不會由於自己的加入導致死鎖,這個時間複雜度O(n),如果有1000個請求,每個線程都要檢測自己和其他999個線程是否死鎖。如果其他線程都沒有持有其他鎖,約比較50w次(計算方式 999+998+...+1)。這個種鎖等待和檢查死鎖衝突帶來巨大的時間成本。

核心優化參數

MySQL跑在CentOS 6 和 7上的性能比較

壓測場景:

"
作者:yangyidba
來源:公眾號yangyidba

一 前言

計劃今年將數據庫服務器的os 從centos 6 升級到centos 7,根據慣例,升級之前我們要進行一次性能壓測。本文分享一下我們的壓測記錄和結果。

二 壓測準備

2.1 壓測方法

使用sysbench-0.5構造10張表 ,每張表500w數據,並行度分別為12 24 36 48 60 72 ,每個併發壓測4小時,共計24小時。壓測命令如下

/opt/yz-sysbench/bin/sysbench --test=/opt/yz-sysbench/share/sysbench/oltp.lua --oltp-tables-count=10 --oltp-table-size=5000000 - -mysql-db=sysbench --mysql-user=sysbench --mysql-password=sysbench --mysql-socket=/srv/my3306/run/mysql.sock --max-time=14400 --max-requests=0 --num-threads=12 --oltp-test-mod e=complex run

注: sysbench在本地安裝,壓測幾乎沒有網絡交互的時間損耗。

2.2 目標數據

因為是要壓測數據庫性能,所以本次主要監控數據庫性能qps tps,主機io ,cpu 等性能指標。

三 壓測數據

3.1 qps


MySQL跑在CentOS 6 和 7上的性能比較


3.2 insert /delete

sysbench 的oltp模式,insert和delete的比例是一樣的,壓測每秒的tps數據一致,故放到一起。


MySQL跑在CentOS 6 和 7上的性能比較


3.3 update 性能


MySQL跑在CentOS 6 和 7上的性能比較


3.4 cpu io 對比


MySQL跑在CentOS 6 和 7上的性能比較


MySQL跑在CentOS 6 和 7上的性能比較


centos 7的cpu 負載比centos6 略低,io 利用比centos 6的更高些。

3.5 熱點秒殺場景

MySQL為了提高數據庫的數據安全性,設置2個參數來控制數據落盤的策略,我們目前的設置為每次提交事務都會出發寫數據到磁盤,帶來的好處是數據安全,最極端的情況下會丟失一個事務,其負面影響是會導致大量的IO操作。

另外一點數據庫併發執行update同一行的動作會被其他已經持有鎖的會話堵住,並且需要要進行判斷會不會由於自己的加入導致死鎖,這個時間複雜度O(n),如果有1000個請求,每個線程都要檢測自己和其他999個線程是否死鎖。如果其他線程都沒有持有其他鎖,約比較50w次(計算方式 999+998+...+1)。這個種鎖等待和檢查死鎖衝突帶來巨大的時間成本。

核心優化參數

MySQL跑在CentOS 6 和 7上的性能比較

壓測場景:

MySQL跑在CentOS 6 和 7上的性能比較

主要模擬數據庫在高併發場景,併發數分別設置為:72,96,144,192,256個活躍會話併發.


"
作者:yangyidba
來源:公眾號yangyidba

一 前言

計劃今年將數據庫服務器的os 從centos 6 升級到centos 7,根據慣例,升級之前我們要進行一次性能壓測。本文分享一下我們的壓測記錄和結果。

二 壓測準備

2.1 壓測方法

使用sysbench-0.5構造10張表 ,每張表500w數據,並行度分別為12 24 36 48 60 72 ,每個併發壓測4小時,共計24小時。壓測命令如下

/opt/yz-sysbench/bin/sysbench --test=/opt/yz-sysbench/share/sysbench/oltp.lua --oltp-tables-count=10 --oltp-table-size=5000000 - -mysql-db=sysbench --mysql-user=sysbench --mysql-password=sysbench --mysql-socket=/srv/my3306/run/mysql.sock --max-time=14400 --max-requests=0 --num-threads=12 --oltp-test-mod e=complex run

注: sysbench在本地安裝,壓測幾乎沒有網絡交互的時間損耗。

2.2 目標數據

因為是要壓測數據庫性能,所以本次主要監控數據庫性能qps tps,主機io ,cpu 等性能指標。

三 壓測數據

3.1 qps


MySQL跑在CentOS 6 和 7上的性能比較


3.2 insert /delete

sysbench 的oltp模式,insert和delete的比例是一樣的,壓測每秒的tps數據一致,故放到一起。


MySQL跑在CentOS 6 和 7上的性能比較


3.3 update 性能


MySQL跑在CentOS 6 和 7上的性能比較


3.4 cpu io 對比


MySQL跑在CentOS 6 和 7上的性能比較


MySQL跑在CentOS 6 和 7上的性能比較


centos 7的cpu 負載比centos6 略低,io 利用比centos 6的更高些。

3.5 熱點秒殺場景

MySQL為了提高數據庫的數據安全性,設置2個參數來控制數據落盤的策略,我們目前的設置為每次提交事務都會出發寫數據到磁盤,帶來的好處是數據安全,最極端的情況下會丟失一個事務,其負面影響是會導致大量的IO操作。

另外一點數據庫併發執行update同一行的動作會被其他已經持有鎖的會話堵住,並且需要要進行判斷會不會由於自己的加入導致死鎖,這個時間複雜度O(n),如果有1000個請求,每個線程都要檢測自己和其他999個線程是否死鎖。如果其他線程都沒有持有其他鎖,約比較50w次(計算方式 999+998+...+1)。這個種鎖等待和檢查死鎖衝突帶來巨大的時間成本。

核心優化參數

MySQL跑在CentOS 6 和 7上的性能比較

壓測場景:

MySQL跑在CentOS 6 和 7上的性能比較

主要模擬數據庫在高併發場景,併發數分別設置為:72,96,144,192,256個活躍會話併發.


MySQL跑在CentOS 6 和 7上的性能比較


在秒殺場景下,centos 7 性能逆天,同等條件下是centos 6的三倍多,通過參數調優之後,centos 7 併發更新可以高達1w以上,當然生產環境的商品扣減,有多次查詢和insert,update,性能會有一定下降。但是同比而言,也會有相當的性能提升。

3.4 分析

從壓測結果上來看 qps centos7 的性能提升明顯。qps 提升 20% - 40%。 tps 方面也有 20% 以上的性能提升。期待生產環境下的表現(使用複雜的業務sql,估計性能提升沒有sysbench那麼明顯)。

四 小結

壓測新的系統是一件很有意思的事情,centos 7 有哪些影響MySQL 性能的優化呢? 這個留個尾巴,且待下回分解。也歡迎生產上已經使用centos 7 或者redhat 7 版本的朋友留言,分享你們遇到的問題或者其他給運維帶來的影響。

"

相關推薦

推薦中...