Mysql 用UUID做主键可行么

 我来答
青鸟中关村专家
2016-01-15 · 知道合伙人软件行家
青鸟中关村专家
知道合伙人软件行家
采纳数:1734 获赞数:8440
就职于北大青鸟中关村,自2004年踏入北大青鸟这个行业,已经有11年工作经验和8年的培训经验,寓教于乐

向TA提问 私信TA
展开全部
在mysql中可以把UUID作为逻辑主键,物理主键依然使用自增ID
1、UUID定义

UUID含义是通用唯一识别码 (Universally Unique Identifier),这 是一个软件建构的标准,也是被开源软件基金会 (Open Software Foundation, OSF) 的组织应用在分布式计算环境 (Distributed Computing Environment, DCE) 领域的一部分。UUID是指在一台机器上生成的数字,它保证对在同一时空中的所有机器都是唯一的。
2、UUID优点
1) 能够保证独立性,程序可以在不同的数据库间迁移,效果不受影响。
2) 保证生成的ID不仅是表独立的,而且是库独立的,这点在你想切分数据库的时候尤为重要。
3) 在oracle做数据迁移的时候不会因为表的sequence不连续而出现问题
3、UUID缺点
1) 比较占地方,和INT类型相比,存储一个UUID要花费更多的空间。
2) 使用UUID后,URL显得冗长,不够友好。
ryzwhofs699825
推荐于2017-11-21 · 超过28用户采纳过TA的回答
知道答主
回答量:60
采纳率:0%
帮助的人:46.6万
展开全部
1.作主键没问题,且能确保唯一性;
2.字节数有点过长,还是自增序列优势明显,特别是MySQL 5.1.*系列开始,主要改进acto_increment加锁释放的问题;
3.分InnoDB,还是MyISAM,若是InnoDB引擎,强烈反对,因为其是索引组织表,创建的每个非簇索引,都会带上主键的,这样占用存储空间更大,需要消耗更多内存和IO;
4.UUID还有一个好处,就是出现数据拆分存储的时候,能达到全局的唯一性,而自增序列需要通过另外2个参数辅助,若是同一实例上就无能为力;
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式