mysql与TDengine数据库性能对比
前言
mysql是我平时使用最多的数据库,最近看 TDengine 比较火爆,就想着对比一下这两个数据库的增删改查的性能怎么样。
版本号
mysql: 5.7.13
taosd: 2.1.1.0
测试语言:go
mysql: gorm库
taosd: 官方给的go-sdk golang 官方代码案例
测试代码地址:未上传
开始对比
增
并发数 | 增加条目数 | mysql5.7 用时 | mysql8.0 用时 | TDengina | 备注 |
---|---|---|---|---|---|
1 | 10,000 | 3m11s -- 52/s | 7m5s -- 23/s | 6.1s -- 1639/s | 去掉索引 |
1 | 10,000 | 3m1s -- 55/s | 7m5s -- 23/s | 4.9s -- 2040/s | 去掉索引 |
1 | 10,000 | 3m1s -- 55/s | 7m1s | 4.6s -- 2173/s | 去掉索引 |
1 | 10,00000 | 2m59s -- 56/s | -- | 4.0s -- 2500/s | 去掉索引 |
4 | 40,000 | 5m46s -- 115/s | 13m29s | 10.2s -- 3921/s | 去掉索引 |
4 | 40,000 | 5m49s -- 114/s | 12m15s | 8.9s -- 4494/s | 去掉索引 |
10 | 100,000 | 5m51s -- 184/s | 15m7 | 15.2s -- 6578/s | 去掉索引 |
15 | 150,000 | -- | -- | 23.5s -- 6382/s | 去掉索引 |
20 | 200,000 | 5m59s -- 557/s | 15m33 | 34.7s -- 5882/s | 去掉索引 |
50 | 500,000 | 6m6s -- 1366/s | -- | 1m59s -- 4201/s | 去掉索引 |
结论
- taos 数据库性能远超过mysql
- mysql8的性能反倒更差了(不排除配置我的问题)
- taos 并发写入数量控制在10 ~ 15 个之间性能最好
备忘 mysql sql语句记录
插入数据
脚本一
# 创建MyISAM模式表方便批量跑数据
CREATE TABLE `logs1` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`logtype` varchar(255) DEFAULT NULL,
`logurl` varchar(255) DEFAULT NULL,
`logip` varchar(255) DEFAULT NULL,
`logdz` varchar(255) DEFAULT NULL,
`ladduser` varchar(255) DEFAULT NULL,
`lfadduser` varchar(255) DEFAULT NULL,
`laddtime` datetime DEFAULT NULL,
`htmlname` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=1811 DEFAULT CHARSET=utf8 COMMENT='日志表';
# 创建存储过程
DROP PROCEDURE IF EXISTS my_insert;
CREATE PROCEDURE my_insert()
BEGIN
DECLARE n int DEFAULT 1;
loopname:LOOP
INSERT INTO `logs1`(`logtype`,`logurl`,`logip`,`logdz`,`ladduser` ,`lfadduser`,`laddtime`,`htmlname`) VALUES ( 2, '/index', '0:0:0:0:0:0:0:1', null, null, 'null', '2018-05-03 14:02:42', '首页');
SET n=n+1;
IF n=10000000 THEN
LEAVE loopname;
END IF;
END LOOP loopname;
END;
# 执行存储过程
CALL my_insert();
#数据插入成功后修改表模式InnoDB 时间稍微久点
alter table `logs1` engine=InnoDB;
脚本二
DELIMITER ;;
CREATE PROCEDURE test_insert ()
BEGIN
DROP PROCEDURE IF EXISTS test_insert;
DECLARE i INT DEFAULT 1;
WHILE i<100
DO
insert into goods(good_name,good_price,de) values ('gui',i,'hao');
SET i=i+1;
END WHILE ;
commit;
END;;
CALL test_insert();
博客中所涉及到的图片都有版权,请谨慎使用