MyCat与TinyDBRouter性能PK

现在经常说来水平扩展,这个时候一般都会说到数据库的水平扩展,这个时候一般就会用到数据库的分库分表方案。关于这一块,可能大家也都一些开源或商业的方案进行过一些研究。

今天我就简单的拿一些性能测试数据进行简单的展示,看看TinyDbRouter和Mycat与纯纯的JDBC之间的性能差异情况。

环境说明

为了进行这项测试,我就得准备一下测试环境,因为做的是对比测试,因此用多少NB的服务器不是重点。另外,由于虚拟机之间会有CPU、磁盘IO的资源竞争,因此我选择了用独立的计算机进行这项测试,这样才可以真正的模拟水平扩展时的硬件拓展方式。

为此我找了4台笔记本电脑,配置如下:

嗯嗯,配置一般,不过做这项测试应该是OK的。

测试方案

这次主要测试多种方式下数据库的插入和查询方面方面的性能差异。

  1. 使用一个数据库,中间加一道分库分表中件间,然后测试直接使用JDBC和加一层中间件之间的性能对比,看看加了一层对性能的影响
  2. 使用两个物理数据库,对数据进行水平分片,然后测试直接使用JDBC操作一个库和用了中间件分成两个库之间的性能做对比

环境说明:为了更好的进行观察和分析,采用MyCat方式式,MyCat采用了独立部署为一台服务器的方式

测试数据

单个数据库增加TinyDBRouter访问时的插入性能影响

从上面的数据可以看到:在没有压力的情况下,在插入时增加了TinyDbRouter与不增加TinyDbRouter层时的性能对比为下降了6.6%,而在有压力的情况下性能下降大致为15%左右。

而在查询的时候,由于查询的时间较插入时间长许多,因此可以看到TinyDbRouter对于查询的影响可以忽略不计。

相同数据量采用TinyDbRouter分库的查询性能对比

从上面的数据可以看到,在没有压力的情况下,插入的速度较单库相比有些许下降,但是随着压力的增加,分片了的性能逐步上升,虽然压力没有加大到最大,但是处理性能已经是未分片的1.5倍左右,说明通过分片确实可以有效提升插入的TPS数量。

我们再来看看查询方面的性能差异,由于同样的记录数,分片方案中把数据均衡的分配到了两个不同的库中,因此不带分库键查询时,查询性能大致是未分库方式的2倍左右浮动(这里的查询条件是动态生成,因此刨除了缓冲方面的因素);带有分库键进行查询时,查询性能大致是未分库方式的4倍左右浮动。

总结,通过分片的方式进行水平扩展,确实可以有效的提升插入和查询的效率。提升效率的多少与水平扩展的数量大致成正比。(实际上,随着分片个数的增加,每台机器的能力扩展系数是在慢慢减小的)。

相同数据量采用MyCat分库的插入性能对比

通过上面的测试,可以看到,使用 MyCat把数据分到两个物理数据库,也有效的提升了插入效率,这方面和TinyDbRouter的基本相同。

相同数据量采用MyCat分库的查询性能对比

接下来就是对MyCat的查询方面的性能进行对比测试,性能数据较不分库有一定提升,但是相对于TinyDbRouter就有一定的差距。

总结

不论是哪种分库分表方案,都可以有效提升插入和查询的TPS。

有分库键查询和没有分库键查询,性能相差明显。

TinyDbRouter和MyCat的数据库水平扩展中间件在插入方面的性能损耗相差不大,在查询方面TinyDbRouter的性能较MyCat有一定的优势,随着集群大小的变化,会导致性能的差距进一步扩大。

原因分析如下:

表明原因分析:MyCat服务器自已的CPU占有率比较高,说明其计算量也非常大,导致在MyCat服务器中产生了一定性能损耗。由于MyCat在这种测试方式下是单点,因此随着水平扩展的数据库数量的增加,其单点压力也会越来越大。

深层次原因分析:MyCat是由独立的服务器来进行查询及结果的合并及相关处理,因此必须把数据从数据库服务器取到MyCat服务器上进行一定的运算后再向客户端进行返回数据;而TinyDBRouter由于部署到数据库客户端,因此这部分计算由数据库客户端进行计算,充分的利用了数据库客户端的计算能力,因此不存在单点问题。

同样的一个处理,MyCat的方式是:客户端->MyCat->Mycat计算后->水平扩展的数据服务器(这里是2)->MyCat合并结果后->客户端

而TinyDBRouter的方式是:客户端->(DBRouter计算后)->水平扩展的数据服务器(这里是2)->(DBRouter计算后)->客户端,网络传输次数较MyCat少了一半。另外由于TinyDBRouter的合并计算在客户端进行,因此可以进行更深入的优化以提升数据获取速度。

声明

我们一开始把MyCat服务器和其中一台数据库服务器部署在一台物理机,结果数据非常不合常理,因此才把它独立部署为一台服务器。

我们一开始是用Delete语句清空数据的,后来发现这种方式对测试数据有比较大的影响,同样的数据量与测试方法,数据相去甚远。采用了DROP表现重建的方式后保证了数据的可验证性,同样的数据量与测试方式,数据非常接近。

我们在测试过程中,秉持了客观公正的心态来进行这项测试,也是为了找准自己的位置,和同类产品学习的态度进行的。

我们保证没有对测试数据进行任何的人为调整,而完全忠实于实验中采集的数据。

即使同样时刻的测试数据,也会有轻微的不同,但是差距非常小。

文章转载自 开源中国社区[https://www.oschina.net]

时间: 2024-10-14 13:52:24

MyCat与TinyDBRouter性能PK的相关文章

KDB和Oracle的性能pk小记

在偶然的机会听到了KDB,然后带着好奇和新鲜感体验了一把这个传说中和Oracle 相似度达到99%的数据库. 其中一部分的驱动力在于这个活动的奖品很丰厚,参加活动后可以拿到一个iwatch,确实是很划算的一个活动. 而对于KDB的认识,也是在对比调优中认识到的,其实结果还是大大超出我的预期. 首先来简单说一下背景,我们一共十来个人,分成两队,红队和蓝队,然后红队调优Oracle,蓝队调优KDB,然后使用benchmark在同样的加压条件下的tpcc值作为参考来对比Oracle和KDB 乍一看Or

Oracle和PostgreSQL的最新版本性能PK

来自PostgreSQL中国社区发起人之一,阿里数据库内核高级技术专家德歌的分享.使用BenchmarkSQL测试Oracle 12c的TPC-C性能,并在同样的硬件测试环境下,测试了PostgreSQL 9.5.0.相关数据对比如下. 测试机: 3 * PCI-E SSD,逻辑卷条带,XFS,数据块对齐,16核开HT,256G内存. benchmarkSQL 配置请参考: http://blog.163.com/digoal@126/blog/static/163877040201511234

Java、C++性能PK:孰强孰弱

有关C++与Java的争论缘来已久,C++和Java语言之间的不同可以追溯到它们各自的传统,它们有着不同的设计目标.作者针对以上两大网站的问题(感兴趣的朋友可以移步去看下)进行补充与思考,从性能的角度进行对比发表一些看法与见解,一起来看下. 1. 内存使用率.当CPU性能增加时访问RAM就会变得相对缓慢,因此内存使用率在实际运用中非常重要.这一点,Java则显得相对弱一点:a.每个对象至少占用8个字节:b.无法使用堆栈分配对象:C.常用库存迫使形成一个对象.此外,Java对象数组能真正引用数组,

msgpack[C++]使用笔记 和 msgpack/cPickle性能对比

python版本msgpack安装: wget http://pypi.python.org/packages/source/m/msgpack-python/msgpack-python-0.1.9.tar.gz python2.x setup.py install --prefix=/usr/local/similarlib/ python版本的msgpack灰常好用,速度上比python内置的pickle和cpickle都要快一些,C++版本的使用比较麻烦,下面是本人学习时的一个demo,

list 、set 、map 粗浅性能对比分析

 list .set .map 粗浅性能对比分析   不知道有多少同学和我一样,工作五年了还没有仔细看过list.set的源码,一直停留在老师教导的:"LinkedList插入性能比ArrayList好,LinkedList顺序遍历性能比ArrayList好"的世界里.可是真是如此么?本文很"肤浅"的对比和分析了几种常用的集合,"高手"可以就此打住不必往下阅读了... 本文分开介绍了List.Map.Set: (测试环境:win7.jdk.4G.

一步一步在Windows中使用MyCat负载均衡 下篇

之前在 一步一步在Windows中使用MyCat负载均衡 上篇 中已经讲了如何配置出MyCat.下面讲其相关的使用. 五.配置MyCat-eye  对于MyCat监控官网还提供一个MyCat-eye web系统来展示它的运行情况. MyCat发展到目前的版本,已经不是一个单纯的MySQL代理了,它的后端可以支持MySQL.SQL Server.Oracle.DB2.PostgreSQL等主流数据库,也支持MongoDB这种新型NoSQL方式的存储,未来还会支持更多类型的存储.而在最终用户看来,无

同等价位 选SATA SSD还是M.2 SSD?

SSD的性能与容量爆发式的增长,令人瞠目结舌.但是在追求极致性能的道路上,SATA接口先天缺陷,导致性能瓶颈突显.破而后立,走PCIe通道,支持NVMe协议的M.2接口SSD强势崛起,拥有比SATA SSD更快.更强的性能表现.SATA SSD长期居于主流地位,M.2 SSD能否挑战到SATA SSD呢? 随着M.2 SSD价格下探,越来越逼进SATA SSD的价格,买SSD时,摆在我们面前的选择:到底是选SATA SSD还是M.2 SSD?两者优势与劣势是什么?如何做出明智的选择?这期为您解惑

PC转向移动端入口战 手机助手一决高下

中介交易 SEO诊断 淘宝客 云主机 技术大厅 移动互联网的用户浏览量已经超过PC互联网了吗?很明确的告诉你,是已经超过了,详情可以关注<百度2012年Q1百度移动互联网发展趋势报告>.如何将更多的PC端客户转移到移动设备,由此诞生的工具就是手机助手.本次通过对三款手机助手(百度.91.360)进行综合体验,为大家推荐最好的手机工具. 其实谈到手机助手最早的要属诺基亚和三星推出的"PC"套件,笔者清晰的记得当时主要的功能就是通讯录.短信.照片.视频.音乐等等的删除和备份而已

MyCAT-1.4-RC性能测试(初步施工)

倒腾了好久才腾出手来测试MyCAT的性能如何,不废话,上干货 测试环境:虚拟机 主库: CPU:Intel(R) Xeon(R) CPU E5-2630 v3 @ 2.40GHz,逻辑核心8个 内存:32GB 硬盘:250G 从库: CPU:Intel(R) Xeon(R) CPU E5-2630 v3 @ 2.40GHz,逻辑核心8个 内存:32GB 硬盘:250G 采用MyCAT-1.4-RC版本,2015-06-17发布的,最新是06-19发布的版本 测试工具:sysbench-0.5,修