日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

MySQL运行在docker容器中会损失多少性能

發布時間:2023/11/26 数据库 35 coder
生活随笔 收集整理的這篇文章主要介紹了 MySQL运行在docker容器中会损失多少性能 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前言

自從使用docker以來,就經常聽說MySQL數據庫最好別運行在容器中,性能會損失很多。一些之前沒使用過容器的同事,對數據庫運行在容器中也是忌諱莫深,甚至只要數據庫跑在容器中出現性能問題時,首先就把問題推到容器上。

那么到底會損失多少,性能損失會很多嗎?

為此我裝了兩個MySQL,版本都是8.0.34。一個用官網二進制包安裝,另一個用docker hub的MySQL鏡像安裝。兩個MySQL都運行在同一臺機器,但不同時運行,先后運行測試。測試工具用的sysbench,運行在另一臺機器。

提前聲明:測試流程比較簡單,只是用sysbench測了混合讀寫場景,測試次數也較少,不具有權威性。感興趣的話,可以自行完善測試流程。

如果對后文沒什么興趣,這里也可以直接說結論:單表百萬級以下時,非容器和容器的性能差異并不多。單表千萬級時,容器MySQL大概會損耗10% ~ 20%的性能。

應用 版本 備注
Debian 12.0 操作系統。4C16G
docker 20.10.17 容器運行時
MySQL(非docker) 8.0.34 基于官方的二進制安裝包
MySQL(docker) 8.0.34 使用docker hub的鏡像
sysbench 1.0.20 壓測工具

MySQL配置

MySQL安裝后創建測試用的sysbench用戶和sysbench數據庫,調整innodb_buffer_pool_size為2GB。

docker容器的網絡配置為bridge,掛載數據目錄。

sysbench命令

  • 準備數據
sysbench --db-driver=mysql --mysql-host=192.168.3.21 --mysql-port=3306 --mysql-user=sysbench --mysql-password=123456 --mysql-db=sysbench --table_size=10000000 --tables=20 --threads=4 oltp_read_write prepare
  • 執行測試
sysbench --db-driver=mysql --mysql-host=192.168.3.21 --mysql-port=3306 --mysql-user=sysbench --mysql-password=123456 --mysql-db=sysbench --time=300 --threads=8 --report-interval=10 oltp_read_write run
  • 清理測試數據
sysbench --db-driver=mysql --mysql-host=192.168.3.21 --mysql-port=3306 --mysql-user=sysbench --mysql-password=123456 --mysql-db=sysbench --table_size=10000000 --tables=20 --threads=4 oltp_read_write cleanup

測試結果

單表1000w數據,20張表,測試4次。

MySQL運行環境 測試序列 總SQL執行數 每秒SQL數 每秒事務數 延遲時間(平均) 延遲時間(95%)
非容器 1 3798093 12658.84 632.78 12.64 20.00
非容器 2 3914578 13047.91 652.28 12.26 17.01
非容器 3 4059867 13531.79 676.46 11.82 15.55
非容器 4 3772390 12574.00 628.58 12.72 19.65
容器 1 3230678 10768.41 538.28 14.86 26.20
容器 2 3538573 11794.68 589.62 13.57 19.29
容器 3 3567943 11892.56 594.50 13.45 17.63
容器 4 3616204 12053.53 602.58 13.27 17.32

平均統計:

MySQL運行環境 總SQL執行數 每秒SQL數 每秒事務數 延遲時間(平均) 延遲時間(95%)
非容器 3,886,232 12,953.14 647.53 12.36 18.05
容器 3,488,350 11,627.3 581.25 13.79 20.11
環比 -10.24% -10.24% -10.24% +11.57% +11.41%

在測千萬級數據量之前,測過幾輪幾十萬級的數據量,非容器和容器版的MySQL并沒有多大區別。當數據量逐漸增多時,差異就愈加明顯。目前測單表1000w已經出現10%左右的性能損耗,如果單表數據繼續增大,性能損耗應該也會更多。

總結

以上是生活随笔為你收集整理的MySQL运行在docker容器中会损失多少性能的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。