最近一个项目需要数据库有较大的吞吐量,因为项目要求的访问量和数据量较大,决定采用一个数据库中间件来对数据库进行管理。经过一番查询,决定使用阿里的一个开源项目-mycat。因为mycat基于mysql,是针对磁盘的读与写,故在读写速度上理论上会小于等于mysql。为求严谨,在这之前我用java编写程序进行了测试,采用了基本的优化,如连接池测试结果如下:

  engines:innodb,mysql:20线程,单条插入,速度:300-400/s

  engines:innodb,mycat控制3个数据源,100个数据库,向一张表插入数据,20线程,单条插入,速度:300-400/s

  (数据不稳定的原因是因为都是靠我自己掐时间用计算器算的-。-)

  这个速度是不满足需求的,后来一个同事想起了曾经接触过的一个基于mysql的数据引擎-----TokuDB。网上关于TokuDB的一条说明让我怦然心动:“插入性能提升9倍”。=。=诚然我是不信的,我要自己试一下。于是我装上了tokudb引擎进行了测试(安装方法在我另一篇文章中)。如下:

  engines:tokudb,mysql:20线程,单条插入,速度:600-900/s

  engines:tokudb,mycat控制1个数据源,50个数据库,向一张表插入数据,20线程,单条插入,速度:600-900条/s

  从我粗略的测试数据可以看到,tokudb的插入性能提升实际是没有9倍的,这个9倍我估计是峰值。但是2倍的性能提升还是很不错的。要达到客户所说的1200+,至少是看到了希望。

  当然,我这个粗略的数据我是不太满意的,于是我决定用专业的压力测试软件----jmeter进行测试。然而,测试的结果让我大是汗颜。

  jmeter可以到https://archive.apache.org/dist/jmeter/binaries/ 进行下载,zip版本直接解压即可(如果不行可能需要配置环境变量),点击bin目录下的jmeter.bat运行。

  如何进行jdbc的测试呢?步骤如下:

  1.在测试计划页面点击浏览,加载进入数据库的驱动包,我使用的mysql,驱动包即mysql-connector-java-5.1.26-bin.jar。

  2.在测试计划处右键,新建一个线程组。线程组页面可以配置线程数,我设置成了20,ramp-up period参数的意思是所有的线程将在多少秒内启动,设置为1秒,循环次数即线程会循环执行多少次。

  3.在线程组上点击右键,添加-配置原件,选择JDBC Connection Configuration.配置如下:

  4.在线程组上点击右键-添加-sampler-JDBC Request.配置如下:

  5.点击线程组,添加两个监听器。“图形结果” 和 “查看结果树”。用于监控执行情况。

  6.点击菜单栏 运行-启动即可。

  下面公布让我汗颜的测试结果:

  mycat:

    

    

  mysql:

    

    吞吐量每秒才200条!!!什么鬼!!不过也确实证明了mycat速度上确实是小于等于mysql这一观点...

    我只能把速度的降低归结于jmeter这个软件上....希望有知道原理的大神可以告知一下原因=.=

  

测试jdbc连接下,mysql和mycat的吞吐性能的更多相关文章

  1. linux下mysql基于mycat做主从复制和读写分离之基础篇

    Linux下mysql基于mycat实现主从复制和读写分离1.基础设施 两台虚拟机:172.20.79.232(主) 172.20.79.233(从) 1.1软件设施 mysql5.6.39 , my ...

  2. jdbc连接sqlserver,mysql,oracle

    class xxx{ private static String port = "1433"; private static String ip = "192.168.2 ...

  3. JAVA使用JDBC连接,修改MySQL数据库(比较乱)

    原文地址1(连接MySQL图文) : http://www.cnblogs.com/GarfieldEr007/p/5746137.html 原文地址2 (修改MySQL图文): http://www ...

  4. JDBC连接执行MySQL存储过程报权限错误

    今天在测试项目的时候  突然就报了一个错出来. User does not have access to metadata required to determine stored procedure ...

  5. JDBC连接执行 MySQL 存储过程报权限错误:User does not have access to metadata required to determine stored procedure parameter types. If rights can not be granted,

    国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html 内部邀请码:C8E245J (不写邀请码,没有现金送) 国 ...

  6. JDBC连接执行mysql存储过程报权限错误:User does not have access to metadata required to determine stored procedure parameter types. If rights can not be granted,

    分析:JDBC在调用存储过程时不光用户要有execute的权限,还需要对mysql.proc具有访问权限.否则它无法访问metadata 解决方案:给数据库用户赋权,赋执行mysql.proc表的se ...

  7. Java 使用JDBC连接MySQL

    //  这学期本来不打算深入学习Java的,课上的小项目也就随便写了一个简单计算器和扫雷游戏就糊弄过去.可是我们的Eliza老师偏偏什么都讲了,考虑到期末也会涉及到JDBC的内容,前些天试着学习一番. ...

  8. JDBC连接MySQL数据库代码模板

    下面这个例子是最简单的JDBC连接MySQL数据库的例子. 一般步骤: 1.注册驱动: 2.建立连接: 3.创建语句: 4.处理结果: 5.释放资源. 注意: 1.软件开发环境:MyEclipse 8 ...

  9. JDBC连接MySQL数据库及演示样例

    JDBC是Sun公司制定的一个能够用Java语言连接数据库的技术. 一.JDBC基础知识         JDBC(Java Data Base Connectivity,java数据库连接)是一种用 ...

随机推荐

  1. AngularJS的ng-repeat显示属性名和属性值

    代码下载:https://files.cnblogs.com/files/xiandedanteng/AngularJSAuthorRepeat.rar 代码: <!DOCTYPE HTML P ...

  2. 推荐一款免费的SQLsever的备份软件sqlBackupAndFtp

    官方网址  http://sqlbackupandftp.com/ 这个软件不错,蛮方便的.小巧使用,还能够FTP上传数据.

  3. java web 站点头像上传处理 (springmvc +bootstrap+cropper)

    制作头像上传.请依据您的实际需求.改动代码,不全然正确.仅供參考! 前端页面设计使用bootstrap ,头像预览和剪裁工具使用cropper 后台使用springmvc. 如今来看前端的页面设计 前 ...

  4. C# Select SelectMany 区别

    string[] text = { "Today is 2018-06-06", "weather is sunny", "I am happy&qu ...

  5. hdu3251 最小割

    题意: 给n个城市,m条有向边.每条边有权值,如今有些城市能够选择得到.可选的城市有一个价值.可是要满足从1到达不了这些城市,为了满足要求能够去掉一些边,须要花费边的权值,问终于得到的最大价值是多少, ...

  6. 取消CentOS 的图形界面 开机直接进入命令行模式(转)

    (1)具体操作   #vi /etc/inittab          –编辑/etc/inittab文件 找到下面语句: # Default runlevel. The runlevels used ...

  7. 04 svn设置开机启动

    一:设置开机启动[dos命令] 格式: sc create 服务名称 binPath=空格"安装目录/svnserve.exe -r 版本库地址目录 --service" star ...

  8. MySQL 存储过程 (3)

    以下介绍下像数据库循环插入数据操作 第一步:建立存储过程用到的信息表

  9. 淘宝客网站SEO及赚钱与揭密

  10. moving from a host-centric infrastructure to a container-centric infrastructure

    https://kubernetes.io/docs/concepts/overview/what-is-kubernetes/ Why do I need Kubernetes and what c ...