mysql插入性能测试
一、环境
vm虚拟机,centos7,MySQL5.7,jdk8
两台机器是局域网
二、测试代码
数据表:16个分表,表结构是20个字段,15个字段的长度是100个字符填充。
使用java直接连接数据库,用多线程测试,每个线程一个数据库连接,事务自动提交。每个线程完成批量插入后才关闭连接。
mysql没有进行线程优化,都是使用默认配置。
三、测试数据
1、1核,单表,innoDB
每个线程插入条数 | 单线程耗时 | 线程数 | 总tps |
10万 | 63s | 1个 | 1500条 |
10万 | 78s | 2个 | 2564条 |
10万 | 127s | 4个 | 3149条 |
10万 | 224s | 8个 | 3571条 |
10万 | 340s | 12个 | 3529条 |
2、4核,单表,innoDB
每个线程插入条数 | 单线程耗时 | 线程数 | 总tps |
10万 | 60s | 1个 | 1666条 |
10万 | 64s | 2个 | 3200条 |
10万 | 97s | 4个 | 4123条 |
10万 | 195s | 8个 | 4100条 |
10万 | 325s | 12个 | 3600条 |
3、1核,16个表,MyISAM
每个线程插入条数 | 单线程耗时 | 线程数 | 总tps |
2万 | 10s | 1个 | 2000条 |
5000 | 2s | 2个 | 5000条 |
5千 | 2s | 4个 | 10000条 |
5千 | 5s | 8个 | 8000条 |
5千 | 10s | 16个 | 8000条 |
4、2核,16个表,MyISAM
每个线程插入条数 | 单线程耗时 | 线程数 | 总tps |
2万 | 7s | 1个 | 3000条 |
5000 | 2s | 2个 | 5000条 |
5千 | 2s | 4个 | 10000条 |
5千 | 5s | 8个 | 8000条 |
5千 | 12s | 16个 | 6666条 |
5、4核,16个表,MyISAM
每个线程插入条数 | 单线程耗时 | 线程数 | 总tps |
2万 | 11s | 1个 | 1176条 |
5000 | 3s | 2个 | 3300条 |
5千 | 5s | 4个 | 4000条 |
5千 | 11s | 8个 | 3636条 |
5千 | 15s | 16个 | 5333条 |
四、测试结论
1、在某些条件下MyISAM的插入效率比innoDB快。
2、连接数是服务器核数的两倍时,可获得最佳的插入性能。
3、多连接数时,InnoDB实例的tps是:2500-4100,MyISAM实例的tps是:3300-1万
4、Sysbench基准测试,10个线程,10个表,每个表插入10万条数据,结果如下:
五、理论
1、当服务器核数,数据库连接数,数据库内部线程数一样的情况下,多核应该是单核的倍数,但是测试时没有证明这点,可能是mysql线程配置不是最优的。
2、MyISAM时,4核的tps居然比2核的低很多,这个很难解释。
mysql插入性能测试相关推荐
- Mybatis与JDBC批量插入MySQL数据库性能测试及解决方案
Mybatis与JDBC批量插入MySQL数据库性能测试及解决方案 参考文章: (1)Mybatis与JDBC批量插入MySQL数据库性能测试及解决方案 (2)https://www.cnblogs. ...
- 【myISAM和innoDB】mySql的引擎myisam和innodb的区别/mysiam(mysql插入速度优化)
目录 Myisam 和Innodb 特点和擅长 Myisam 和Innodb 数据存储区别 Myisam引擎(非聚集索引--叶子节点存储数据地址的指针) Innodb引擎(聚集索引---叶子节点的da ...
- Mycat批量插入性能测试
本文采用mycat的values批量插入方式进行测试,连写的数据量达到8000左右事务提交可以达到每秒75000左右数据量,也证实了Mycat的效率是小于或等于Mysql的性能.在实际生产中,因为访问 ...
- python mysql批量insert数据、返回id_Python3 操作 MySQL 插入一条数据并返回主键 id的实例...
Python 中貌似并没有直接返回插入数据 id 的操作(反正我是没找到),但是我们可以变通一下,找到最新插入的数据 #!/usr/bin/env python3 # -*- coding: UTF- ...
- mysql插入数据显示中文乱码
MySQL 插入数据时,中文乱码问题的解决 当向 MySQL 数据库插入一条带有中文的数据形如 insert into employee values(null,'张三','female','1995 ...
- 解决向数据库mysql插入double数据小数点不显示问题
解决向数据库mysql插入double数据小数点不显示问题 参考文章: (1)解决向数据库mysql插入double数据小数点不显示问题 (2)https://www.cnblogs.com/sovi ...
- MySQL 插入数据时,中文乱码问题的解决
MySQL 插入数据时,中文乱码问题的解决 参考文章: (1)MySQL 插入数据时,中文乱码问题的解决 (2)https://www.cnblogs.com/sunzn/archive/2013/0 ...
- java向MySQL插入当前时间的四种方式和java时间日期格式化的几种方法(案例说明)...
转载地址:http://www.devba.com/index.php/archives/4581.html java向MySQL插入当前时间的四种方式和java时间日期格式化的几种方法(案例说明); ...
- mysql插入大量数据总结
1 java实现 package cn.edu.nwsuaf.sheep2.utils;import java.sql.Connection; import java.sql.DriverManage ...
最新文章
- 【计算机视觉】EmguCV学习笔记(2)图像的载入、显示和输出
- python爬取豆瓣电影并分析_爬取豆瓣电影top250提取电影分类进行数据分析
- “写画”与“惊春”:王艾画展和当代诗人朗诵会
- ASP中事务处理资料收集
- sum(x) over( partition by y ORDER BY z ) 分析
- 转:Socket编程知识必学
- 机器学习——LightGBM
- 引commons-io工具类做文件的复制及导出
- Win7-64位 Cygwin编译Redis
- python 读取geotiff_python gdal 写GeoTiff文件
- Unite洛杉矶峰会精彩回顾:从图形、平台再到VR
- vmware虚拟机linux重置密码
- cin/cou效率太慢?试一下 ios::sync_with_stdio(false);
- 新建 FrameMaker API 时引用目录的设置
- MySQL优化那些事
- 科创人·派拉软件CEO谭翔:零信任本质是数字安全,To B也要深研用户心智
- 2021年创业项目:知识付费副业做网课赚钱
- 前端校验还是后端校验
- 解决Module build failed: Error: Cannot find module ‘node-sass‘Require stack
- 用户 'sa' 登录失败的解决方案
热门文章
- 第6章 见缝插圆(《C和C++游戏趣味编程》配套教学视频)
- 2020 年,Serverless 将给大前端带来什么样的变化?
- linux下qt加载boost,信号槽的实现实例—— Qt 和 Boost
- 微软拟禁用JIT提高Edge浏览器安全性
- 清华大学迎来中国首位原创AI虚拟学生;百度造车:定价20万元以上;亚马逊面临 7.5 万项仲裁|极客头条...
- 一行代码没写,凭啥被尊为“第一位程序员”?
- JavaScript:对象都是这样生成的!
- ​8次迭代5大升级,旷视天元1.0预览版正式发布
- 字节跳动推出企业技术服务平台“火山引擎”
- 一位 Rust 开发者的 Go 初体验