MySQL 用 UUID 作为主键,实际使用中有什么问题

发布于 2022-09-01 05:30:18 字数 187 浏览 20 评论 0

最近有一个产品尝试采用 UUID 代替默认的 int 主键。

由于没有在大规模的生产环境中这样用过,虽然搜索了关于 MySQL UUID 主键的优劣势文章,但毕竟案例还是太少,很多还停留在性能测试阶段。

论坛中是否有朋友在生产环境中采用过 ActiveRecord + MySQL UUID 主键的方案,有没有什么特别的坑?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

风追烟花雨 2022-09-08 05:30:18

看网上资料,主键的字段类型设置引起不同的性能变化
postgresql的uuid比text省空间
http://simononsoftware.com/how-to-store-uuids-in-postgresql/
SO上关于mysql的两篇文章
http://stackoverflow.com/questions/412341/how-should-i-store-guid-in-mysql-tables
http://stackoverflow.com/questions/2365132/uuid-performance-in-mysql/2365176

UUID的优势就是天然适应高并发的环境下使用。如果id顺序递增,每创建一条记录都需要对表加一次锁,这在高并发环境下是很大的开销,有时候甚至是不能容忍的。

你只在单机上进行测试会导致插入性能随数据量指数级减慢。而UUID可以无痛支持对表进行水平划分,将数据分布存储在多台不同的机器上。只要机器可以无限扩展,插入性能就能够得到保证。

简美 2022-09-08 05:30:18

注意留好创建时间字段和更新时间,否则增量/迁移之类的时候会疼

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文