GUID有哪些好的解决方案?

时间:2012-06-07 12:44:39

标签: mysql ruby ruby-on-rails-3 mongodb

目前,我有一个包含1300万行的数据库,我们使用uuid作为主键。每次我们进行数据库迁移时,完成一个表需要几个小时。查询性能似乎也很差。

在谷歌搜索和阅读一些博客后,他们建议从uuid转换为binary(16),但转换后的值不可读且使用起来很尴尬。在我的Ruby代码中也很难使用它。

是否有另一种解决方案可以在uuid旁边的MySQL中获得全球唯一标识?

mysql> select UNHEX(REPLACE('A4E7890F-A188-4663-89EB-176D94DF6774','-',''));
+---------------------------------------------------------------+
| UNHEX(REPLACE('A4E7890F-A188-4663-89EB-176D94DF6774','-','')) |
+---------------------------------------------------------------+
| ���Fc��m��gt                                                       |

我检查了,mongodb也有ObjectId,只有12个字节。是否有可能在MySQL服务器中使用它?我怎样才能利用它在MySQL中使用?

1 个答案:

答案 0 :(得分:1)

答案

你必须为你的应用程序测试这个,但是对于非常大的数据集,我希望你能提高性能:

  1. 使用AUTO_INCREMENT列作为主键,因为MySQL已针对此进行了优化。
  2. 索引您的UUID列,以便您无需进行全表扫描即可快速查找。
  3. 比较冗长的UUID可能不如整数键有效,所以即使你仍在大量使用UUID列,你也一定要以这种方式获得性能提升。但是,没有什么可以替代自己进行基准测试。

    相关问题

    UUID performance in MySQL?