MySQL插入速度测试
一、测试环境
1.1 硬件环境
名称 | 配置 |
---|---|
操作系统 | win7 64位 |
CPU | 4核4线程 i5-4590 |
内存 | 16G |
硬盘 | 128G SSD |
MySQL | Version 5.6 |
1.2 数据库表结构
CREATE TABLE `user` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`username` varchar(50) DEFAULT NULL,
`password` varchar(50) DEFAULT NULL,
`sex` int(11) DEFAULT NULL,
`phone` varchar(20) DEFAULT NULL,
`email` varchar(50) DEFAULT NULL,
`remark` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8;
二、插入实验
2.1 普通插入
线程数 | 插入量(万) | 总耗时(毫秒) | 平均插入速度(条/秒) |
---|---|---|---|
1 | 100 | 342844 | 2923 |
4 | 400 | 480112 | 8333 |
8 | 800 | 693702 | 11544 |
16 | 1600 | 1246522 | 12841 |
2.2 批量插入
批次大小: 500条
线程数 | 插入量(万) | 总耗时(毫秒) | 平均插入速度(条/秒) |
---|---|---|---|
1 | 100 | 42793 | 23364 |
4 | 400 | 58856 | 68027 |
8 | 800 | 109688 | 72939 |
16 | 1600 | 216542 | 73903 |
批次大小: 1000条
线程数 | 插入量(万) | 总耗时(毫秒) | 平均插入速度(条/秒) |
---|---|---|---|
1 | 100 | 42771 | 23380 |
4 | 400 | 55098 | 72595 |
8 | 800 | 106554 | 75082 |
16 | 1600 | 216353 | 73971 |
三、总结
本次实验主要是测试一下MySQL的插入速度到底有多快,让我们在开发过程中心理有底,测试数据库文件是存储到固态硬盘上的,所以速度肯定比在普通磁盘上快。测试主要围绕多线程插入和批量插入这两个点,从实验结果来看,我们可以得出以下两点结论:
- 多线程插入确实是能够提高MySQL的插入速度,但是线程数超过系统核心线程数后,已经没有太大提升效果,所以建议多线程插入时,线程数保持和系统核心线程数一致。
- MySQL批量插入能极大提高插入速度,每批次1000条插入的速度是单条插入速度的8倍左右,在大数据量插入时建议使用批量插入的方式,批次大小建议设置为1000条左右,可根据具体的业务情况调整。MySQL数据包默认大小为4M,超过该值会导致插入或更新失败,批量插入时应考虑该因素,可通过
SHOW VARIABLES LIKE '%max_allowed_packet%'
查看,该值可以修改。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 逐光の博客!
评论