性能:UUID vs cakephp-mysql中的自动增量

时间:2010-10-19 20:39:00

标签: mysql performance cakephp primary-key

我正在搜索cakePHP(32 char long)生成的UUID与自动增量相比是否更快。插入和选择操作的比较。 我应该使用cakePHP生成的UUID或使用MySQL的简单自动增量

这是我发现的一个案例研究,但它并非特定于cakePHP

http://krow.livejournal.com/497839.html

2 个答案:

答案 0 :(得分:2)

我怀疑您在选择主键时会注意到很多性能问题。你的瓶颈将在其他地方,几乎可以保证。

默认情况下,我建议只使用自动增量主键。这是有道理的 - 您将知道哪些订单记录一目了然,因此您可以更容易地删除它们,如果测试数据等。此外,它更容易背诵数字而不是32字符UUID。因此可用性转为自动递增的INT。

那么你何时会使用UUID?在任何情况下,您要确保密钥是全局唯一的(或者非常接近它)。一个例子是分片数据库; db1和db2。您不能使用自动增量INT,因为这样您最终可能会有2条记录(db1中有一条,db2中有一条)具有相同的主键,如果您需要组合或重新生成,这将导致噩梦。所以这是使用UUID的一个例子。

但通常只是坚持使用自动递增的INT。它只会让生活更美好。

答案 1 :(得分:0)

将该逻辑放在数据库上总是更好,插入和选择会更快。因为当MySQL使用自动增量值制作PK而不是在该字段上自动生成索引并且为了更好的性能将其置于驱动器上的正确位置时,所以如果使用排序,则索引PK比32个长字符更快。