刚开始使用mysql,要是用很是大的数据结构,得知mysql没有uuid的数据类型,只能使用varchar(36),到底性能怎么样呢,网上各有说辞,作个测试看看吧,有没有差距,到底差多少。 mysql
下面是测试代码,改下循环体中的插入语句分别测试uuid在innodb和myisam和int在innodb和myisam下插入1000条数据所用时间。 sql
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$$
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%以上,因此你们使用时候仍是当心为妙。 ui