现在项目上需要使用MySQL。因为考虑到未来数据量的问题,肯定是需要做集群的,并且有的表在大并发的情况下,Insert操作比较多。因此考虑使用UUID作主键。现在有3个疑问:
第1个就是 UUID做主键肯定会增大存储空间,这些空间倒无所谓,但Innodb会为主键建立索引,所以会不会导致索引太大(32位字符主键),并且因为索引太大而导致查询速度下降?第2个就是,java.util.UUID产生UUID更好还是使用MySQL的UUID()函数更好?第3个如果使用UUID,那么数据类型是使用varchar还是使用varbinary呢? 盼君赐教.
第1个就是 UUID做主键肯定会增大存储空间,这些空间倒无所谓,但Innodb会为主键建立索引,所以会不会导致索引太大(32位字符主键),并且因为索引太大而导致查询速度下降?第2个就是,java.util.UUID产生UUID更好还是使用MySQL的UUID()函数更好?第3个如果使用UUID,那么数据类型是使用varchar还是使用varbinary呢? 盼君赐教.
2.使用mysql的函数影响的数据库性能(可是可以忽略。),用Java自带的影响的是系统性能。但是都可以忽略。
3.用char(32),因为uuid是固定32位的,而且char列索引要加快查询速度,弥补1的不足。你懂的。
公司用的是java生成的UUID,生成17位的long类型主键,mysql数据类型是bigint(20)
2、java的UUID方便
3、varchar2的
补充一下,如果用的是Mysql数据库,把uuid列长度设置为char(36);