测试jdbc连接下,mysql和mycat的吞吐性能
最近一个项目需要数据库有较大的吞吐量,因为项目要求的访问量和数据量较大,决定采用一个数据库中间件来对数据库进行管理。经过一番查询,决定使用阿里的一个开源项目-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的吞吐性能的更多相关文章
- linux下mysql基于mycat做主从复制和读写分离之基础篇
Linux下mysql基于mycat实现主从复制和读写分离1.基础设施 两台虚拟机:172.20.79.232(主) 172.20.79.233(从) 1.1软件设施 mysql5.6.39 , my ...
- jdbc连接sqlserver,mysql,oracle
class xxx{ private static String port = "1433"; private static String ip = "192.168.2 ...
- JAVA使用JDBC连接,修改MySQL数据库(比较乱)
原文地址1(连接MySQL图文) : http://www.cnblogs.com/GarfieldEr007/p/5746137.html 原文地址2 (修改MySQL图文): http://www ...
- JDBC连接执行MySQL存储过程报权限错误
今天在测试项目的时候 突然就报了一个错出来. User does not have access to metadata required to determine stored procedure ...
- 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 (不写邀请码,没有现金送) 国 ...
- 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 ...
- Java 使用JDBC连接MySQL
// 这学期本来不打算深入学习Java的,课上的小项目也就随便写了一个简单计算器和扫雷游戏就糊弄过去.可是我们的Eliza老师偏偏什么都讲了,考虑到期末也会涉及到JDBC的内容,前些天试着学习一番. ...
- JDBC连接MySQL数据库代码模板
下面这个例子是最简单的JDBC连接MySQL数据库的例子. 一般步骤: 1.注册驱动: 2.建立连接: 3.创建语句: 4.处理结果: 5.释放资源. 注意: 1.软件开发环境:MyEclipse 8 ...
- JDBC连接MySQL数据库及演示样例
JDBC是Sun公司制定的一个能够用Java语言连接数据库的技术. 一.JDBC基础知识 JDBC(Java Data Base Connectivity,java数据库连接)是一种用 ...
随机推荐
- Android动画系列 - PropertyAnim 详解
前言:上一篇文章传统View动画与Property动画基础及比较简单对Android动画系统的基础做了介绍,本篇文章将对PropertyAnimation进行全面深入的探讨,本篇文章可以分为两大块,从 ...
- 一道简单DP题
问题: 给定一个整数的数组,相邻的数不能同时选,求从该数组选取若干整数,使得他们的和最大,要求只能使用o(1)的空间复杂度.要求给出伪码. 解答: int maxSum(vector<int&g ...
- POJ3114 有些图缩点/改图/最短路
没想到手感还在~ 不须要又一次建图.仅仅要依据条件改改权值就可以. 还跑k次SPFA~ #include<cstdio> #include<iostream> #include ...
- Opencv 改进的外接矩形合并拼接方法
上一篇中的方法存在的问题是矩形框不够精确,而且效果不能达到要求 这里使用凸包检测的方法,并将原来膨胀系数由20缩小到5,达到了更好的效果 效果图: 效果图: 代码: #include <open ...
- sql_视图和函数
创建视图: create view xxx as select * from userinfo; 删除视图: drop view xxx 修改视图: alter view xxx as selete ...
- js随机数 从头开始系列
js要常常写啊要不然就要从0开始 1 var num = Math.random(); //创建一个0-1随机数字 num*=10 //变为0-10随机数字 //有好几种取整方式 var i = Ma ...
- 【转载】C#中的==、Equal、ReferenceEqual
1. ReferenceEquals, == , Equals Equals , == , ReferenceEquals都可以用于判断两个对象的个体是不是相等. a) ReferenceEquals ...
- 【转】Linux上的free命令详解
解释一下Linux上free命令的输出.默认输出是KB,可以用free -m则输出是MB 下面是free的运行结果,一共有4行.为了方便说明,我加上了列号.这样可以把free的输出看成一个二维数组FO ...
- 小贝_redis hash类型学习
Redis Hash类型 一.查看hash类型的命令 二.操作hash命令具体解释 一.查看hash类型的命令 1.输入 help@hash 127.0.0.1:6379>help @hash ...
- 文件I/O相关函数
open()和openat()函数: #include <fcntl.h> // 成功返回文件描述符,出错返回-1 int open(const char *path, int oflag ...