关于uuid的一系列问题

macrotea-cn 2011-08-11 12:50:16
现在项目上需要使用MySQL。因为考虑到未来数据量的问题,肯定是需要做集群的,并且有的表在大并发的情况下,Insert操作比较多。因此考虑使用UUID作主键。

现在有3个疑问:
第1个就是 UUID做主键肯定会增大存储空间,这些空间倒无所谓,但Innodb会为主键建立索引,所以会不会导致索引太大(32位字符主键),并且因为索引太大而导致查询速度下降?

第2个就是,java.util.UUID产生UUID更好还是使用MySQL的UUID()函数更好?

第3个如果使用UUID,那么数据类型是使用varchar还是使用varbinary呢?

盼君赐教.
...全文
810 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
luohuijun619 2011-08-11
  • 打赏
  • 举报
回复
java的好,我们都是用java 的
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 xzjjmaomao 的回复:]
1.会有点影响,不过不会太大
2.使用mysql的函数影响的数据库性能(可是可以忽略。。。。),用Java自带的影响的是系统性能。但是都可以忽略。
3.用char(32),因为uuid是固定32位的,而且char列索引要加快查询速度,弥补1的不足。

你懂的。。。。
[/Quote]

补充一下,如果用的是Mysql数据库,把uuid列长度设置为char(36);
GIS__ 2011-08-11
  • 打赏
  • 举报
回复
1、比较还是小数据。基本不会影响查询速度
2、java的UUID方便
3、varchar2的
空白-键 2011-08-11
  • 打赏
  • 举报
回复
学习楼上,顺便提供下公司的方法供楼主参考
公司用的是java生成的UUID,生成17位的long类型主键,mysql数据类型是bigint(20)
  • 打赏
  • 举报
回复
1.会有点影响,不过不会太大
2.使用mysql的函数影响的数据库性能(可是可以忽略。。。。),用Java自带的影响的是系统性能。但是都可以忽略。
3.用char(32),因为uuid是固定32位的,而且char列索引要加快查询速度,弥补1的不足。

你懂的。。。。
牙痴 2011-08-11
  • 打赏
  • 举报
回复
无聊无聊
muboy1999 2011-08-11
  • 打赏
  • 举报
回复
java能轻易解决的问题就用java

67,515

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧