前言
mysql是我平時(shí)使用最多的數(shù)據(jù)庫(kù),最近看 TDengine 比較火爆,就想著對(duì)比一下這兩個(gè)數(shù)據(jù)庫(kù)的增刪改查的性能怎么樣。
版本號(hào)
mysql: 5.7.13
taosd: 2.1.1.0
測(cè)試語(yǔ)言:go
mysql: gorm庫(kù)
taosd: 官方給的go-sdk golang 官方代碼案例
測(cè)試代碼地址:未上傳
開(kāi)始對(duì)比
增
| 并發(fā)數(shù) | 增加條目數(shù) | mysql5.7 用時(shí) | mysql8.0 用時(shí) | 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 | 去掉索引 |
結(jié)論
- taos 數(shù)據(jù)庫(kù)性能遠(yuǎn)超過(guò)mysql
- mysql8的性能反倒更差了(不排除配置我的問(wèn)題)
- taos 并發(fā)寫(xiě)入數(shù)量控制在10 ~ 15 個(gè)之間性能最好
備忘 mysql sql語(yǔ)句記錄
插入數(shù)據(jù)
腳本一
# 創(chuàng)建MyISAM模式表方便批量跑數(shù)據(jù)
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='日志表';
# 創(chuàng)建存儲(chǔ)過(guò)程
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', '首頁(yè)');
SET n=n+1;
IF n=10000000 THEN
LEAVE loopname;
END IF;
END LOOP loopname;
END;
# 執(zhí)行存儲(chǔ)過(guò)程
CALL my_insert();
#數(shù)據(jù)插入成功后修改表模式InnoDB 時(shí)間稍微久點(diǎn)
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();