之前有做過一個binlog壓縮能節約多少空間的測試,效果上看還是比較理想的,可以節約一半以上的空間。但是這個又引出了一個新的問題,那就是這個功能對性能有多大影響呢?于是我又在測試環境試了一下,測試環境的物理配置如下。
根據之前的經驗這套測試環境在120個表+240個并發的情況,可以取得一個性能上的極大值;所以在這里就直接使用這個作為測試壓力。
8.0.19場景
第一步:安裝。
dbma-cli-single-instance--port=3306--max-mem=131072\--pkg=mysql-8.0.19-linux-glibc2.12-x86_64.tar.xzinstall
第二步:創建測試用戶。
createusersysbench@'%'identifiedby'sysbench';createdatabasetempdb;grantallontempdb.*tosysbench@'%';
第三步:填充數據并進行壓力測試。
sysbench--mysql-host=192.168.100.10--mysql-port=3306--mysql-user=sysbench\--mysql-password=sysbench--tables=120--table_size=100000--mysql-db=tempdb\--time=3600--threads=240oltp_point_selectprepare
sysbench--mysql-host=192.168.100.10--mysql-port=3306--mysql-user=sysbench\--mysql-password=sysbench--tables=120--table_size=100000--mysql-db=tempdb\--time=3600--threads=240oltp_point_selectrun
性能表現。
資源消耗情況。
8.0.20+binlog壓縮
第一步:安裝。
dbma-cli-single-instance--port=3306--max-mem=131072\--pkg=mysql-8.0.20-linux-glibc2.12-x86_64.tar.xzinstall
第二步:創建測試用戶。
createusersysbench@'%'identifiedby'sysbench';createdatabasetempdb;grantallontempdb.*tosysbench@'%';
--dbm-agent默認會開啟binlog壓縮showglobalvariableslike'binlog_transaction_compression%';+-------------------------------------------+-------+|Variable_name|Value|+-------------------------------------------+-------+|binlog_transaction_compression|ON||binlog_transaction_compression_level_zstd|3|+-------------------------------------------+-------+2rowsinset(0.00sec)
第三步:填充數據并進行壓力測試。
sysbench--mysql-host=192.168.100.10--mysql-port=3306--mysql-user=sysbench\--mysql-password=sysbench--tables=120--table_size=100000--mysql-db=tempdb\--time=3600--threads=240oltp_point_selectprepare
sysbench--mysql-host=192.168.100.10--mysql-port=3306--mysql-user=sysbench\--mysql-password=sysbench--tables=120--table_size=100000--mysql-db=tempdb\--time=3600--threads=240oltp_point_selectrun
性能表現。
資源消耗情況。
8.0.20+binlog不壓縮
第一步:關閉binlog壓縮功能。
set@@global.binlog_transaction_compression='OFF';
showglobalvariableslike'binlog_transaction_compression%';+-------------------------------------------+-------+|Variable_name|Value|+-------------------------------------------+-------+|binlog_transaction_compression|OFF||binlog_transaction_compression_level_zstd|3|+-------------------------------------------+-------+2rowsinset(0.01sec)
第二步:進行壓力測試。
sysbench--mysql-host=192.168.100.10--mysql-port=3306--mysql-user=sysbench\--mysql-password=sysbench--tables=120--table_size=100000--mysql-db=tempdb\--time=3600--threads=240oltp_point_selectrun
性能表現。
資源消耗情況。
結論
開啟binlog壓縮會對性能有影響,大概會讓性能下降1%,cpu多消耗1%。