Amoeba for MySQL学习研究之性能测试
更新时间:2023-05-29 17:19:01 阅读量: 实用文档 文档下载
- amoeba推荐度:
- 相关推荐
本文简要介绍了Amoeba for MySQL性能测试的目的、测试环境、测试步骤、测试结果及结论分析,并进行了简单总结!
Amoeba for MySQL学习研究之性能测试
测试目的
本次测试的目的是为了了解确认Amoeba在使用过程中的性能表现情况。
测试环境
服务器环境
注:本次测试由于条件所限,将Amoeba和MySQL
安装在了同一台服务器上,实际应用中应安装在不同服务器上,以提高性能。
数据库环境
分别在server1和server2上建立数据库AmoebaTest,然后在该数据库上建立表tb_Shop。 CREATE TABLE `tb_Shop` (
`Shop_ID` int(11) NOT NULL AUTO_INCREMENT, `City_ID` int(4) DEFAULT NULL,
`ShopName` varchar(20) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL, `Address` varchar(100) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL, `ShopStatus` int(2) NOT NULL DEFAULT '1', `CreateTime` datetime NOT NULL,
本文简要介绍了Amoeba for MySQL性能测试的目的、测试环境、测试步骤、测试结果及结论分析,并进行了简单总结!
PRIMARY KEY (`Shop_ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
该数据表比较典型,包括常用的整数型、字符串、时间型、短整型等数据,其测试结果比较有代表性。
测试步骤
测试仅针对两种情况,单机代理模式和双机奇偶切分模式。
单机代理模式是Amoeba仅仅用作MySQL的代理服务器,将接收到的SQL语句转发到MySQL数据库服务器上进行执行。一般情况下,实际应用环境中是不需要使用这种模式的。
双机奇偶切分模式是Amoeba用于代理两台MySQL服务器,同时根据指定的奇偶切分规则将数据切分到两台数据库服务器上。本次使用城市ID进行奇偶切分,切分规则如下:
<tableRule name="tb_Shop" schema="AmoebaTest" defaultPools="server1,server2">
<rule name="rule1" group="CityRule" ruleResult="BOOLEAN"> <parameters>City_ID</parameters>
<expression><![CDATA[ City_ID % 2 = 0 ]]></expression> <defaultPools>server1</defaultPools> <readPools>server1</readPools> <writePools>server1</writePools> </rule>
<rule name="rule2" group="CityRule" ruleResult="BOOLEAN"> <parameters>City_ID</parameters>
<expression><![CDATA[ City_ID % 2 = 1 ]]></expression> <defaultPools>server2</defaultPools> <writePools>server2</writePools> <readPools>server2</readPools> </rule>
</tableRule>
本次测试使用Amoeba自带的benchmark进行测试,分别在连接数为50到500的区间范围内测试使用Amoeba和不使用Amoeba情况下的插入、更新、查询、删除操作的性能表现。
单机代理模式下benchmark的语句如下: 不使用Amoeba: ./benchmark -P 3306 -c 50/100/150/200/250/300/350/400/450/500 -f ../benchmark/InsertQuery.xml/UpdateQuery.xml/SelectQuery.xml/DeleteQuery.xml -h server1 -n 10000 -u root -p MySQLPassword 使用Amoeba: ./benchmark -P 8066 -c 50/100/150/200/250/300/350/400/450/500 -f ../benchmark/InsertQuery.xml/UpdateQuery.xml/SelectQuery.xml/DeleteQuery.xml -h server1 -n 10000 -u root -p AmoebaPassword
双机奇偶切分模式下benchmark的语句如下:
本文简要介绍了Amoeba for MySQL性能测试的目的、测试环境、测试步骤、测试结果及结论分析,并进行了简单总结!
不使用Amoeba: ./benchmark -P 3306 -c 25/50/75/100/125/150/175/200/225/250 -f ../benchmark/InsertQuery.xml/UpdateQuery.xml/SelectQuery.xml/DeleteQuery.xml -h server1 /server2 -n 10000 -u root -p MySQLPassword
使用Amoeba: ./benchmark -P 8066 -c 50/100/150/200/250/300/350/400/450/500 -f ../benchmark/InsertQuery.xml/UpdateQuery.xml/SelectQuery.xml/DeleteQuery.xml -h server1 -n 10000 -u root -p AmoebaPassword
其使用的4个测试文件中的语句如下: InsertQuery.xml:
INSERT INTO AmoebaTest.tb_Shop(City_ID,ShopName,Address,ShopStatus,CreateTime) VALUES (,'这是用来测试的店铺的名称','地址,是一串字符,内含国家、省份、城市或乡村、街道、门牌号码、屋邨、大厦等建筑物名称,或者再加楼层数目、房间编号等。',${@Math@abs(#random.nextInt(10))},NOW()) UpdateQuery.xml
update AmoebaTest.tb_Shop set ShopName='修改后的店铺名称',Address='修改后的店铺详细地址信息',ShopStatus=${@Math@abs(#random.nextInt(10))} where id>=${@Math@abs(#random.nextInt(1000000))} AND id<=${@Math@abs(#random.nextInt(1000000))} SelectQuery.xml
select * from AmoebaTest.tb_Shop where id>=${@Math@abs(#random.nextInt(1000000))} AND id<=${@Math@abs(#random.nextInt(1000000))} limit
${@Math@abs(#random.nextInt(1000))},${@Math@abs(#random.nextInt(1000))} DeleteQuery.xml
delete AmoebaTest.tb_Shop where id>=${@Math@abs(#random.nextInt(1000000))} AND id<=${@Math@abs(#random.nextInt(1000000))}
测试结果
单机纯代理模式
本文简要介绍了Amoeba for MySQL性能测试的目的、测试环境、测试步骤、测试结果及结论分析,并进行了简单总结!
单机更新操作性能对比800 处理能力 TPS 600 400 未用Amoeba 200 0 50 100 150 200 250 300 350 400 450 500 使用Amoeba
连接数
单机查询操作性能对比2500 处理能力 TPS 2000 1500 1000 500 0 50 100 150 200 250 300 350 400 450 500 未用Amoeba 使用Amoeba
连接数
单机删除操作性能对比2500 处理能力 TPS 2000 1500 1000 500 0 50 100 150 200 250 300 350 400 450 500 未用Amoeba 使用Amoeba
连接数
本文简要介绍了Amoeba for MySQL性能测试的目的、测试环境、测试步骤、测试结果及结论分析,并进行了简单总结!
双机奇偶切分模式
本文简要介绍了Amoeba for MySQL性能测试的目的、测试环境、测试步骤、测试结果及结论分析,并进行了简单总结!
双机切分查询操作性能对比2000 处理能力 TPS 1500 1000 未用Amoeba 500 0 50 100 150 200 250 300 350 400 450 500 使用Amoeba
连接数
双机切分删除操作性能对比3000 2500 处理能力 TPS 2000 1500 1000 500 0 50 100 150 200 250 300 350 400 450 500 未用Amoeba 使用Amoeba
连接数
双机切分使用Amoeba 前后的性能比500 400 使用前后的性能比 300 200 100 0 -100 50 100 150 200 250 300 350 400 450 500 连接数 插入 更新 查询 删除
本文简要介绍了Amoeba for MySQL性能测试的目的、测试环境、测试步骤、测试结果及结论分析,并进行了简单总结!
结论和分析
结论1:
MySQL本身的性能会随着负载(并发连接数)的增大而急剧下降:当负载比较大时,MySQL响应连接请求的时间比较长,这直接导致了MySQL处理能力的下降。 结论2:
Amoeba在负载较小时会造成数据库性能的下降:因为Amoeba需要解析和转发请求的SQL,这期间会造成一定的性能损耗。从测试结果来看,在单机纯代理模式下,最大会造成20%左右的性能损耗;而在双机切分模式下,最大会造成70%左右的性能损耗。 结论3:
Amoeba在负载较大时会显著提升数据库的性能:在负载较大时,MySQL本身的响应会变慢,接受连接会消耗非常多的资源;但是通过Amoeba进行连接后,连接请求实际上只连接在了Amoeba服务上,而Amoeba服务与MySQL服务器之间存在的连接池,使得MySQL本身的连接数较小,从而响应较快。从测试结果来看,在单机代理模式下,平均可达到约500%的性能提升;而在双机切分模式下,平均的性能提升约为50%。根据本次测试环境的情况来看,单机模式下性能损耗和提升的分水岭为并发连接数150左右,而双机切分模式下,这一数值约为200左右。
总结
本次测试确认Amoeba for MySQL在高负载的情况下能在一定程度上提升数据库的性能,同时可以顺利完成数据的切分工作。当然,本次测试的结果仅限于使用比较简单的切分规则,对于复杂的切分规则,得出的结论可能会不同。另外,本次测试使用的环境是虚拟服务器和办公内网,受到其他因素影响的可能性较大,测试结果仅供参考。
正在阅读:
Amoeba for MySQL学习研究之性能测试05-29
骏业生态农业观光园策划书 - 图文09-25
安阳产业集聚区06-09
物流主要体现在四个方面01-29
改革开放30年:我们从“头”说起11-17
云南省玉溪一中10-11学年高一下学期期末考试英语试卷09-05
2018-2019小学六rhx说明文阅读题及答案-word范文模板(19页)05-19
World link 3 Teaching plan04-28
保税物流与区港联动04-07
应用时间序列分析习题答案06-09
- 教学能力大赛决赛获奖-教学实施报告-(完整图文版)
- 互联网+数据中心行业分析报告
- 2017上海杨浦区高三一模数学试题及答案
- 招商部差旅接待管理制度(4-25)
- 学生游玩安全注意事项
- 学生信息管理系统(文档模板供参考)
- 叉车门架有限元分析及系统设计
- 2014帮助残疾人志愿者服务情况记录
- 叶绿体中色素的提取和分离实验
- 中国食物成分表2020年最新权威完整改进版
- 推动国土资源领域生态文明建设
- 给水管道冲洗和消毒记录
- 计算机软件专业自我评价
- 高中数学必修1-5知识点归纳
- 2018-2022年中国第五代移动通信技术(5G)产业深度分析及发展前景研究报告发展趋势(目录)
- 生产车间巡查制度
- 2018版中国光热发电行业深度研究报告目录
- (通用)2019年中考数学总复习 第一章 第四节 数的开方与二次根式课件
- 2017_2018学年高中语文第二单元第4课说数课件粤教版
- 上市新药Lumateperone(卢美哌隆)合成检索总结报告
- 性能
- 测试
- Amoeba
- 研究
- 学习
- MySQL
- 微生物分子生态技术_16SrRNA_DNA方法
- 餐厅五一的活动方案
- 学生综合素质评价体系
- 施工图审核招标文件(2010版)11-3
- 几种猪肉品质鉴定的简易方法
- 1(第八篇 交通工程及沿线设施的说明)
- 重点工作进展情况汇报(2)
- 浅论网络语言的时代性特征
- 粪钙卫蛋白在溃疡性结肠炎诊断中的价值研究
- 12.9级内六角螺栓
- 七年级生物上册_复习知识点_人教新课标版 2
- 看看那些造型奇特的座椅
- 糖尿病伤口不愈如何处理
- 车辆运输安全管理协议书
- 2011年01月MBA,MPA,MPAcc联考大纲-综合
- 西方经济学(第十三章)经济增长理论
- 初中数学课堂教学切入点案例分析20120923
- 特步督导培训方案
- 六年级英语上册The fifth period(第五课时) (6)
- 研究生英语系列教程多维教程探索课后答案