MySQL测试报告
硬件配置:
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 |
结论:
- f1是主键字段,做了唯一索引,1亿条和2亿条的查询区别不大。
- f3字段是varchar类型,没有做索引,每次查询都把数据表从头到尾扫描了一次,因为查询任何一条记录(无论第1条或者最后一条记录)时间都差不多。
- 前缀like查询(‘aaa%’)跟精确查询性能差不多,都是从头到尾扫描一次,而且条件字符串加长性能不受影响。
- 双端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测试报告的更多相关文章
- Web自动化框架之五一套完整demo的点点滴滴(excel功能案例参数化+业务功能分层设计+mysql数据存储封装+截图+日志+测试报告+对接缺陷管理系统+自动编译部署环境+自动验证false、error案例)
标题很大,想说的很多,不知道从那开始~~直接步入正题吧 个人也是由于公司的人员的现状和项目的特殊情况,今年年中后开始折腾web自动化这块:整这个原因很简单,就是想能让自己偷点懒.也让减轻一点同事的苦力 ...
- Tpcc-MySQL对mysql数据库进行性能测试报告、分析及使用gnuplot生成图表展示
TPC-C是专门针对联机交易处理系统(OLTP系统)的规范,一般情况下我们也把这类系统称为业务处理系统. tpcc-mysql是percona基于TPC-C(下面简写成TPCC)衍生出来的产品,专用于 ...
- mysql数据库性能测试报告
网上有写的好的模板, 直接复链接了: 1. http://blog.csdn.net/mituan1234567/article/details/45247989 2. https://msdn.mi ...
- mysql高性能索引策略
转载说明:http://www.nyankosama.com/2014/12/19/high-performance-index/ 1. 引言 随着互联网时代地到来,各种各样的基于互联网的应用和服务进 ...
- mysql大数据表改表结构方案
有一个表有上千W数据, 用什么方法给这个表加一个字段最快?1. alert2. 建一个表和第一个表一样,只是多了要加的字段,然后用多个INSERT INTO SELECT语句limit写入3. 就是导 ...
- MySQL中文全文索引插件 mysqlcft 1.0.0 安装使用文档[原创]
[文章+程序 作者:张宴 本文版本:v1.0 最后修改:2008.07.01 转载请注明原文链接:http://blog.zyan.cc/post/356/] MySQL在高并发连接.数据库记录数较多 ...
- web自动化框架之四测试报告的搭建
现状: 看过前面的文章,楼主用的是python,所以在搭建测试报告这块的时候使用的是unittest+htmlTestRunner:然后发现生成出来的报告,总是有那么不完美的地方,比如想增加图片,比如 ...
- TCMalloc优化MySQL、Nginx、Redis内存管理
TCMalloc(Thread-Caching Malloc)与标准glibc库的malloc实现一样的功能,但是TCMalloc在效率和速度效率都比标准malloc高很多.TCMalloc是 goo ...
- Cobar是提供关系型数据库(MySQL)分布式服务的中间件
简介 Cobar是提供关系型数据库(MySQL)分布式服务的中间件,它可以让传统的数据库得到良好的线性扩展,并看上去还是一个数据库,对应用保持透明. 产品在阿里巴巴稳定运行3年以上. 接管了3000+ ...
随机推荐
- "@P0"附近有语法错误解释及定位修复
解释: "@P0" 指的是sql语句被预编译之后,其所对应的占位符的相对顺序位置,通俗的讲,就是它代表第几个占位符的位置,其中的0,并不是固定的,如果将定位符看做数组的话,这里的数 ...
- [转]How rival bots battled their way to poker supremacy
How rival bots battled their way to poker supremacy http://www.nature.com/news/how-rival-bots-battle ...
- windows环境下安装Anaconda(Python)
参考网址:http://www.jianshu.com/p/169403f7e40chttp://blog.csdn.net/qq_26898461/article/details/51488326 ...
- Windows 下使用nginx命令启动
http://wanganwu.blog.163.com/blog/static/7788722012322111417966/ Windows下Nginx的启动.停止等命令 在Windows下使用N ...
- 关于Java堆、栈和常量池的详解
在JAVA中,有六个不同的地方可以存储数据: 1. 寄存器(register). 这是最快的存储区,因为它位于不同于其他存储区的地方——处理器内部.但是寄存器的数量极其有限,所以寄存器由编译 ...
- 测试那些事儿—简述CPU的工作原理
简单介绍CPU的工作原理 1.内部架构 CPU是由晶体管组成,其根本任务就是执行指令和数据处理,对计算机来说,就是由0和1组成的序列.CPU从逻辑上可分为3个模块,分别是控制单元,运算单元和存储单元. ...
- lesson6-图像分割-小象c
显著性检测:1)显著性物体检测-最能引起视觉注意的物体区域2)注视点预测:人类视觉注意机制 视觉注意机制的两种机制:1)自底而上基于数据驱动的注意机制,如颜色.边缘 2)自上而下基于任务驱动的目标的注 ...
- Java异常处理的方法
1.异常概述在程序中,错误可能产生于程序员没有预料到的各种情况,或者是超出了程序员可控制范围的环境因素,如用户的坏数据.试图打开一个根本不存在的文件等.在Java中这种在程序运行是可能出现的一些错误称 ...
- 20165313 《Java程序设计》第七周学习总结
教材学习总结 1.下载安装MySQL数据库管理系统. 2.MySQL数据库基本操作. 3.利用JAVA程序对MySQL数据库系统进行查找,更新,添加和删除操作. 学习中的问题与解决方案 1.运行书上安 ...
- gxx -L和/etc/ld.so.conf的理解
编程之路刚刚开始,错误难免,希望大家能够指出. 今天编了个动态库,然后自己测试了一下. 忘记设置程序运行时系统搜索库的路径发生错误: 忘记设置程序编译的时候 -L 指定路径报的错误: -L : 告诉程 ...