基于Docker的MySQL数据库性能分析

2021-09-10 23:03黄冰
无线互联科技 2021年6期
关键词:虚拟化性能

黄冰

摘 要:Docker的出现解决了传统的网站开发流程中由于不同的应用及其所依赖的环境的复杂关系而造成的资源浪费和项目风险,极大地提高了项目开发效率和质量。因此,基于Docker的MySQL数据库的性能是影响工程中使用Docker的一个非常关键的因素。文章基于此研究设计了MySQL的性能测试,针对不同大小的数据库和不同的并发访问量,对MySQL和基于Docker的MySQL的性能进行测试,并对结果进行比较分析,验证了将MySQL数据库部署在Docker上的应用价值。

关键词:Docker;虚拟化;MySQL;性能;数据库服务器

0 引言

在开发网站项目的过程中,传统的流程是首先安装好Web服务器、后台数据等组件以及它们所依赖的环境,配置组合后进行功能测试,看是否能够正常工作,否则还需要切换不同的版本再调试,而且当需要加入新应用时,事情会变得更加复杂。并且,在软件项目流程中的各个阶段都要重复上述环境搭建过程,从而耗费大量的时间和人力成本[1],增加了项目的不可控性和风险。而基于容器化技术的Docker技术的出现,提供了一种灵活的解决此类问题的方法,从而使开发、测试、部署、运维等的效率大大提高[2-4]。

在网站项目的后台数据库选择上,目前比较流行的是MySQL,其性能表现非常好,再加上其开源的特性,使得目前MySQL的应用非常广泛,即使最近NoSQL非关系型数据库兴起,也仍然无法撼动包括MySQL在内的关系型数据库的地位[5]。

本文将测试并比较分析基于物理机的MySQL和基于Docker的MySQL的性能,为在网站项目中采用Docker技术提供依据。

1 測试环境及设计

1.1 环境

1.1.1  硬件环境

本次测试在同一主机上安装MySQL以及Docker,保证两次测试使用相同的硬件资源。主机采用的是1.8 GHz的CPU和8G的内存。为了防止网络延时影响测试结果,本测试将服务器主机和客户端配置在同一个局域网段内。

1.1.2  软件环境

服务器的操作系统采用Centos 7.5版本,Docker版本是目前最新的1.13.1版本,MySQL版本是8.0.13。为了让测试的效果更加准确可靠,采用了流行的压力测试框架sysbench,使用的版本是1.0.15。

1.2 设计

本次测试设计了只读和读写混合操作测试两种情况。按照数据库大小、表数量以及表的记录数划分,界定数据库的并发访问数,根据网站项用户和频次分为四种并发量,分别是30,60,90,120。对于每一种情况,压测的脚本将运行1分钟并通过计算平均每秒的数据来获得最终数据。

第一种只读操作测试针对20张数据表进行读操作,数据表的记录数分别为1 000,5 000,25 000,3种数量级,考虑到后期项目扩展的情况,本次测试增加一种40张表的情况,以达到比较全面的测试。

第二种是两张常用的数据表进行大量的读写操作,这两张常用的数据表的记录分别采用10 000,100 000,1 000 000这3种数量级。

为了确保测试的数据有效,在准备测试数据表时,一律采用随机生成的数据,有效防止由于对数据库缓存使用频率的不同造成的测试结果偏差。

对于实验的数据结果主要关注TPS:Transactions Per Second,每秒完成的数目。

2 测试结果及分析

2.1 只读操作

第一种情况的测试案例,对数据库只做读(查询)操作的测试,得到了如图1的数据对比图。

从图1中可以看到,直接在物理机上的性能略优于在Docker中的性能,比较大的差距出现在120个线程,差距大小在10%左右,其他大部分情况下差距都在5%以内。

2.2 读写混合

第二种情况的测试案例,对数据库进行了读写(查询,插入,更新,删除)操作的测试,得到了如图2的数据对比图。

从图2和图1的对比中可以看到,相比于只做读操作的测试,在读写混合的操作模式下,两种MySQL的效率显得更为接近。

综合上述两种情况,可以看到,在同样的压测脚本以及同样的软硬件环境和同一个局域网中,使用随机的数据,基于Docker的性能要略逊于基于物理机的性能,但总体来看差距比较小。

对于每秒完成的事务数(TPS)比较大的差距出现在使用120个线程做只读操作的情况下,差距在10%左右,其余情况下差距小于10%,甚至比较接近,特别是读写混合操作。

3 结语

在网站和软件开发、测试、部署中,最让人头疼的问题是各种环境配置等不一致造成的问题,而Docker的使用能够保证软件开发流程各个阶段的环境的一致性,从而大大提高了项目的效率和质量。

通过本次性能测试发现,基于Docker的性能虽然略逊于基于物理机的性能,但差距较小,可以消除在实际项目中采用Docker部署MySQL的疑虑,这也从一个侧面展示了Docker这种新的、耗费资源较少的虚拟化技术所具备的价值。当然,如果在并发访问量比较大的系统中,这种差距在某些时候可能达到10%,这时就需要项目经理或者开发者去权衡利弊,以决定是否要在Docker中部署MySQL。

[参考文献]

[1]杨保华,戴王剑,曹亚仑,等.Docker技术入门与实战[M].北京:机械工业出版社,2015.

[2]胡湘菲.软件自动化测试环境搭建中的Docker应用[J].计算机时代,2017(3):26-29.

[3]凌云.基于Docker平台的DevOps运维系统的研究与改进[J].电脑知识与技术,2018(26):209-211.

[4]邹保平,黄文思,张文晋,等.基于Docker的应用部署管理平台研究[J].电子设计工程,2017(12):41-44.

[5]权治,宋晶晶.基于NoSQL的数据库技术分析[J].无线电工程,2013(9):4-6.

(编辑 何 琳)

猜你喜欢
虚拟化性能
提供将近80 Gbps的带宽性能 DisplayPort 2.0正式发布
基于OpenStack虚拟化网络管理平台的设计与实现
对基于Docker的虚拟化技术的几点探讨
虚拟化技术在计算机技术创造中的应用
Al-Se双元置换的基于LGPS的thio-LISICON的制备与性能表征
存储虚拟化还有优势吗?
强韧化PBT/PC共混物的制备与性能
RDX/POLY(BAMO-AMMO)基发射药的热分解与燃烧性能