硬件配置:

3台服务器:192.168.23.168,  192.168.23.169,  192.168.23.170

硬盘:230G

内存:16G

Linux内核:Linux geoserver.csdb.cn 2.6.32-131.17.1.el6.x86_64 #1

操作系统:Scientific Linux release 6.1 (Carbon)

软件工具:

Mysql5.1 (存储引擎Myisam)

Mysqlslap(测试工具)

数据库和表

CREATE DATABASE myisamtest;

CREATE TABLE `t1_disk` (

`f1` int(10) NOT NULL AUTO_INCREMENT,

`f2` datetime DEFAULT NULL,

`f3` varchar(200) DEFAULT NULL,

PRIMARY KEY (`f1`)

) ENGINE=myisam

AUTO_INCREMENT=1000001 DEFAULT CHARSET=gbk;

字段f1有索引,f3无索引

数据记录:

1亿条记录

2亿条记录

一 数据插入测试

测试场景:

定义一个插入10000条记录的存储过程,如下:

DELIMITER $$

DROP PROCEDURE IF EXISTS `p_test_t1_disk` $$

CREATE DEFINER=`root`@`%` PROCEDURE `p_test_t1_disk`()

BEGIN

declare i int default 0;

test: loop

insert into ndbtest.t1_disk(f2,f3) values(sysdate(),md5(rand()));

set i=i+1;

if i>=10000 then

leave test;

end if;

end loop;

END $$

DELIMITER ;

然后使用测试工具mysqlslap执行测试:

mysqlslap --concurrency=200 --iterations=1 --query="call myisamtest.p_test_t1_disk;" --number-of-queries=10000 -uroot -p1234 -h 192.168.23.168 --create-schema=myisamtest

测试用例

1亿

2亿

开200个并发线程同时插入数据

每线程执行50次存储过程(200*50*10000记录)

用时10212.541 seconds(约2小时50分)

每线程执行100次存储过程(200*100*10000记录)

用时20125.405 seconds(约5小时35分)

二 数据查询单线程测试

直接执行测试例SQL语句测试:

测试用例

1亿

2亿

select * from t1_disk where f1=70000000

在int类型主键字段上做查询

<100ms

<100ms

select * from t1_disk limit 100 offset 70000000

在int类型主键字段上做分页查询

12.516s

13.141s

select * from t1_disk where

f3='060a5524f33ac10345ce187df848c56e'

在varchar类型字段上做查询,查询某条记录

19.625s

41.094s(因为没有索引,应该是把数据表从头到尾扫描了一次,因为查询任何一条记录时间都跟这差不多)

select * from t1_disk where f3 like '42663%'

返回101条记录,用时19.843s

返回187条记录,用时42.656s

select * from t1_disk where f3 like 'f45ce016bb84dac06%'   条件字串加长

返回1条记录,用时19.391s

返回1条记录,用时40.953s

select * from t1_disk where f3 like '%16bb84%'

返回167条记录,用时46.438s

返回330条记录,用时100.859s

结论:

  1. f1是主键字段,做了唯一索引,1亿条和2亿条的查询区别不大。
  2. f3字段是varchar类型,没有做索引,每次查询都把数据表从头到尾扫描了一次,因为查询任何一条记录(无论第1条或者最后一条记录)时间都差不多。
  3. 前缀like查询(‘aaa%’)跟精确查询性能差不多,都是从头到尾扫描一次,而且条件字符串加长性能不受影响。
  4. 双端like查询(‘%aaa%’),性能下降很快。

三 数据查询并发测试

使用测试工具mysqlslap执行测试:

mysqlslap --concurrency=100 --iterations=1 --query=" select * from t1_disk where f1=7000000

;" --number-of-queries=100 -uroot -p1234 -h 192.168.23.168 --create-schema=myisamtest

测试用例

1亿

2亿

select * from t1_disk where f1=70000000

100并发查询

<100ms

458ms

select * from t1_disk limit 100 offset 70000000

100并发查询

返回100条记录,用时319.812s

返回100条记录,用时313.973s

select * from t1_disk where

f3='060a5524f33ac10345ce187df848c56e'

100并发查询

519.735s

1014.375s

select * from t1_disk where f3 like '42663%'

100并发查询

返回101条记录,用时518.078s

返回187条记录,用时1068.359s

select * from t1_disk where f3 like '%16bb84%'

100并发查询

返回167条记录,用时1188.484s

返回330条记录,用时2417.360s

结论:按主键精确查询性能与单线程比较变化不大,主健分页、varchar查询性能下降厉害。

四 数据双机集群测试

将192.168.23.168设置在master机,192.168.23.169设置成slave机,调用插入测试语句

mysqlslap --concurrency=100 --iterations=1 --query="call myisamtest2.p_test_t1_disk;" --number-of-queries=1000 -uroot -p1234 -h 192.168.23.168 --create-schema=myisamtest2

100个并发在master机上插入1000万条记录,用时1932.188秒

同时,slave机同步插入了1000万记录,几乎没有延时

MySQL测试报告的更多相关文章

  1. Web自动化框架之五一套完整demo的点点滴滴(excel功能案例参数化+业务功能分层设计+mysql数据存储封装+截图+日志+测试报告+对接缺陷管理系统+自动编译部署环境+自动验证false、error案例)

    标题很大,想说的很多,不知道从那开始~~直接步入正题吧 个人也是由于公司的人员的现状和项目的特殊情况,今年年中后开始折腾web自动化这块:整这个原因很简单,就是想能让自己偷点懒.也让减轻一点同事的苦力 ...

  2. Tpcc-MySQL对mysql数据库进行性能测试报告、分析及使用gnuplot生成图表展示

    TPC-C是专门针对联机交易处理系统(OLTP系统)的规范,一般情况下我们也把这类系统称为业务处理系统. tpcc-mysql是percona基于TPC-C(下面简写成TPCC)衍生出来的产品,专用于 ...

  3. mysql数据库性能测试报告

    网上有写的好的模板, 直接复链接了: 1. http://blog.csdn.net/mituan1234567/article/details/45247989 2. https://msdn.mi ...

  4. mysql高性能索引策略

    转载说明:http://www.nyankosama.com/2014/12/19/high-performance-index/ 1. 引言 随着互联网时代地到来,各种各样的基于互联网的应用和服务进 ...

  5. mysql大数据表改表结构方案

    有一个表有上千W数据, 用什么方法给这个表加一个字段最快?1. alert2. 建一个表和第一个表一样,只是多了要加的字段,然后用多个INSERT INTO SELECT语句limit写入3. 就是导 ...

  6. MySQL中文全文索引插件 mysqlcft 1.0.0 安装使用文档[原创]

    [文章+程序 作者:张宴 本文版本:v1.0 最后修改:2008.07.01 转载请注明原文链接:http://blog.zyan.cc/post/356/] MySQL在高并发连接.数据库记录数较多 ...

  7. web自动化框架之四测试报告的搭建

    现状: 看过前面的文章,楼主用的是python,所以在搭建测试报告这块的时候使用的是unittest+htmlTestRunner:然后发现生成出来的报告,总是有那么不完美的地方,比如想增加图片,比如 ...

  8. TCMalloc优化MySQL、Nginx、Redis内存管理

    TCMalloc(Thread-Caching Malloc)与标准glibc库的malloc实现一样的功能,但是TCMalloc在效率和速度效率都比标准malloc高很多.TCMalloc是 goo ...

  9. Cobar是提供关系型数据库(MySQL)分布式服务的中间件

    简介 Cobar是提供关系型数据库(MySQL)分布式服务的中间件,它可以让传统的数据库得到良好的线性扩展,并看上去还是一个数据库,对应用保持透明. 产品在阿里巴巴稳定运行3年以上. 接管了3000+ ...

随机推荐

  1. Spring、Commons的BeanUtils.copyProperties用法

    如果两个对象A.B的大部分属性的名字都一样,此时想将A的属性值复制给B,一个一个属性GET\SET代码量太大,可以通过复制属性的方式减小工作量,同时代码看起来更加简洁明了,复制属性可以用Spring或 ...

  2. XML Schema——笔记整理

    什么是 XML Schema? 定义可出现在文档中的元素 定义可出现在文档中的属性 定义哪个元素是子元素 定义子元素的次序 定义子元素的数目 定义元素是否为空,或者是否可包含文本 定义元素和属性的数据 ...

  3. SQL注入之Sqli-labs系列第二十六关(过滤空格、注释符、逻辑运算符注入)和第二十六A

    开始挑战第二十六关(Trick with comments and space) 0x1看看源代码 (1)过滤了#  or and  /**/  /  \ ,通过判断也过滤了空格 (2)这样一来只能看 ...

  4. 新建oracle数据库表空间及删除表空间和用户

    进入oracle的命令控制台,按具体情况执行以下命令: sqlplus 默认数据库普通用户登录sqlplus / as sysdba 默认数据库管理员登录sqlplus username/passwo ...

  5. Power BI十大视觉效果,知多少?

    Power BI十大视觉效果: 图表滑块 响应式布局 一键更改方差计算 一键排序 我们的最爱:小倍数! 瀑布图中的轴断裂 层次表(完全响应) HICHERT博士的IBCS®原生支持 分段图表 - 可视 ...

  6. 机器学习: K-means 聚类

    今天介绍机器学习里常见的一种无监督聚类算法,K-means.我们先来考虑在一个高维空间的一组数据集,S={x1,x2,...,xN}" role="presentation&quo ...

  7. POJ3070 Fibonacci(矩阵快速幂加速递推)【模板题】

    题目链接:传送门 题目大意: 求斐波那契数列第n项F(n). (F(0) = 0, F(1) = 1, 0 ≤ n ≤ 109) 思路: 用矩阵乘法加速递推. 算法竞赛进阶指南的模板: #includ ...

  8. django 基于form表单上传文件和基于ajax上传文件

    一.基于form表单上传文件 1.html里是有一个input type="file" 和 ‘submit’的标签 2.vies.py def fileupload(request ...

  9. Spring源码学习(总)

    前文: ------------------------------------------------------------------------------------------------ ...

  10. 使用C语言简单模拟Linux的cat程序

    先给出源码 //fileio.c #include<stdio.h> #include<stdlib.h> #include<fcntl.h> void print ...