您的位置:首页 > 产品设计 > UI/UE

mysql UUID和int做主键插入速度对比

2013-11-27 00:00 579 查看
刚开始使用mysql,要是用非常大的数据结构,得知mysql没有uuid的数据类型,只能使用varchar(36),到底性能怎么样呢,网上各有说辞,做个测试看看吧,有没有差距,到底差多少。

下面是测试代码,改下循环体中的插入语句分别测试uuid在innodb和myisam和int在innodb和myisam下插入1000条数据所用时间。

DELIMITER $$
DROP PROCEDURE  IF EXISTS uuidinno;
CREATE PROCEDURE uuidinno()
BEGIN
DECLARE j INT DEFAULT 0;
WHILE j < 10000 DO
INSERT INTO uuidtest_inno(id) VALUES (UUID());
SET j = j + 1;
END WHILE;
END$$


这个是UUID插入10000条数据测试,耗时情况如下:

inno-
执行耗时 : 6 min 38 sec
传送时间 : 0 sec
总耗时 : 6 min 38 sec
myisam-
执行耗时 : 0.388 sec
传送时间 : 0 sec
总耗时 : 0.389 sec
innoDB表要排序,所以非常慢,myisam到很速度。

这个是int插入10000条数据测试。耗时如下:

inno-
执行耗时 : 6 min 39 sec
传送时间 : 0 sec
总耗时 : 6 min 39 sec
myisam-
执行耗时 : 0.268 sec
传送时间 : 0.001 sec
总耗时 : 0.270 sec

innodb下也很慢,几乎和uuid耗时一样。myisam就不同了使用int比使用字符串的uuid快了40%以上,所以大家使用时候还是小心为妙。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息