硬件配置:

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. strcmp用法

    strcmp() 用来比较字符串(区分大小写),其原型为:    int strcmp(const char *s1, const char *s2); [参数]s1, s2 为需要比较的两个字符串. ...

  2. P3084 [USACO13OPEN]照片Photo (dp+单调队列优化)

    题目链接:传送门 题目: 题目描述 Farmer John has decided to assemble a panoramic photo of a lineup of his N cows ( ...

  3. How to do distributed locking

    How to do distributed locking 怎样做可靠的分布式锁,Redlock 真的可行么? 本文是对 Martin Kleppmann 的文章 How to do distribu ...

  4. hdu1535 Invitation Cards 最短路

    有一张图,若干人要从不同的点到同一个中间点,再返回,求总费用最小 中间点到各个点最小费用是普通的最短路 各个点到中间点最小费用其实就是将所有路径反向建边之后中间点到各个点的最小费用,同样用最短路就可以 ...

  5. 深入浅出Node.js---Connect模块解析 。转载

    文章地址:https://blog.csdn.net/zhangyuan19880606/article/details/51509205 1 Connect模块背景 Node.js的愿望是成为一个能 ...

  6. msyql开启慢查询以及分析慢查询

    慢查询的用途是用来发现执行时间长的查询语句,以便对这些语句进行优化 [mysqld] #在这里面增加,其它地方无效 #server-id=1 #log-bin=master-bin slow_quer ...

  7. jdk1.9之前的版本及jdk1.9环境变量的配置

    一.jdk9之前安装配置 1.下载jdk:http://www.oracle.com/technetwork/java/javase/downloads/index.html 2.配置环境变量: 安装 ...

  8. Quart.net配置oracle的坑

    引用的Oracle.DataAccess.dll是64位, 生成选项需要去除默认勾选的 “首选32位”,不然会导致未能加载程序集

  9. 论 数据库 B Tree 索引 在 固态硬盘 上 的 离散存储

    传统的做法 , 数据库 的 B Tree 索引 在 磁盘上是 顺序存储 的 , 这是考虑到 磁盘 机械读写 的 特性 . 实际上 , B Tree 是一个 树形结构 , 可以采用 链式 存储 , 就是 ...

  10. [转]xargs详解

    为什么要用xargs,问题的来源 在工作中经常会接触到xargs命令,特别是在别人写的脚本里面也经常会遇到,但是却很容易与管道搞混淆,本篇会详细讲解到底什么是xargs命令,为什么要用xargs命令以 ...