最近一个项目需要数据库有较大的吞吐量,因为项目要求的访问量和数据量较大,决定采用一个数据库中间件来对数据库进行管理。经过一番查询,决定使用阿里的一个开源项目-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. SpringMVC整合fastdfs-client-java实现web文件上传下载

    原文:http://blog.csdn.net/wlwlwlwl015/article/details/52682153 本篇blog主要记录一下SpringMVC整合FastDFS的Java客户端实 ...

  2. Jquery实现的图标抖动效果

    原文:http://www.webdm.cn/webcode/75de64a9-3fb4-473d-bc2c-97a0a063be79.html <!DOCTYPE html PUBLIC &q ...

  3. arcgis andriod开发程序实例,有图有真相

    本程序使用Google公司最新开发工具andriod studio开发,实现了地图的加载,放大,缩小,GPS定位,画点.线,面工具,本程序有偿提供源代码 主界面,加载tpk切片 放大: 加载geoda ...

  4. 讯飞语音识别Android-Demo

    import java.io.UnsupportedEncodingException; import android.app.Activity; import android.os.Bundle; ...

  5. DICOM:DICOM Print 服务详细介绍

      目录(?)[-] 背景 DICOM Print服务数据流 DICOM Print服务各部分关系 DICOM Print服务具体实现   背景: 昨天专栏中发表了一篇关于DICOM Print的博文 ...

  6. 关于Label::createWithBMFont中资源文件使用的坑爹问题解决方式

    1.问题 使用Label的createWithBMFont,结果.fnt的资源总是找不到或者获取数据失败.原来.fnt资源的使用须要配合该资源的.png共同 使用,如bitmapFontTest3.f ...

  7. 22. Spring Boot 拦截器HandlerInterceptor【从零开始学Spring Boot】

    转:http://blog.csdn.net/linxingliang/article/details/52069495 上一篇对过滤器的定义做了说明,也比较简单.过滤器属于Servlet范畴的API ...

  8. PS 基础知识 渐变编辑器如何使用

    ps渐变编辑器在哪 [ 标签:渐变,ps 渐变,编辑器 ] _______志 敏 回答:3 人气:9 解决时间:2009-04-16 15:28 满意答案 你先点渐变工具 然后左上出现渐变条设置 如图 ...

  9. Cocos2d-x初识

    cocos2d-x引擎是什么 在学习游戏的时候就有意的搜索这方面的知识,知道游戏须要游戏引擎,引擎听着非常厉害,只是就是一个游戏框架. 或许某一个游戏框架火起来了,就非常流行了,只是我觉得不论什么游戏 ...

  10. Oracle-31-对视图DML操作

    一.对视图进行DML操作 1.创建一个视图v_person create or replace noforceview v_person as select *from person where id ...