数据库GUID、INT唯一标识
来源:互联网 发布:前端与后台数据交互 编辑:程序博客网 时间:2024/05/18 03:45
GUID:全局唯一标识,主要用在拥有多个节点、多台计算机的网络或系统中。理想情况下,任何计算机和计算机集群都不会产生两个相同的GUID。GUID达到2^128个。尽管重复概率很低,但仍有重复可能,可以根据具体业务需求人为在GUID基础上再添加分类编号或时间戳等。
使用GUID优点:
1、重复概率下
2、适合大量数据中插入、更新操作
3、跨服务器数据合并非常简单
缺点:
1、存储空间较大(16byte),它会占用更大的磁盘空间
2、难记忆,Join操作性能比INT低
3、无内置函数可获取最新产生的GUID值
4、GUID做主键会添加到表上所有其他索引上,会降低性能
INT自增:auto_increment
优点:
1、数据占用存储空间小(4byte)
2、Insert、Update操作时使用INT性能比GUID更好,所以INT将会提高应用程序性能
3、Index、Join操作,INT最好
4、易记忆
5、支持通过函数获取最新的值,eg.Scope_Indentity()
缺点:
1、若常有合并表的操作,可能出现主键重复情况
2、INT有数据范围限制,若存在大量数据,可能存在超出INT数据范围
3、难处理分布式存储的数据表
Q:有了INT或GUID作为主键唯一标识,为什么通常还需再设置唯一标识字段?
A:防止后续因用户ID变化,导致数据丢失。eg.微信号一般绑定手机号并可通过手机号登陆(手机号作为唯一标识),但后续需要允许用户更改手机号。若以手机号为主键,更换手机号则历史数据都会丢失。相当于新建用户,此情况显然不友好。
参考:http://www.cnblogs.com/allen0118/p/4103322.html
- 数据库GUID、INT唯一标识
- 全球唯一标识GUID
- Guid 唯一标识
- guid(cid)唯一标识
- sqlserver 中的GUID 全局唯一标识
- sqlserver 中的GUID 全局唯一标识
- C++获取全球唯一标识号GUID
- C#用Guid获取不规则的唯一值(标识)
- php生成GUID(全球唯一标识)的方法解析
- 使用Guid值作为数据库行标识
- 使用Guid值作为数据库行标识
- Oracle数据库,唯一标识ID的生成
- (转帖)使用 GUID 值来作为数据库行标识
- 使用 GUID 值来作为数据库行标识
- 使用 GUID 值来作为数据库行标识(转载)
- 使用 GUID 值来作为数据库行标识
- 使用 GUID 值来作为数据库行标识
- 使用 GUID 值来作为数据库行标识
- 事务457——spring事务注解Transactional的propagation传播属性使用
- 学习shell——编程练习
- Java POI Excel导出文件名中文乱码
- leetcode——String to Integer (atoi)
- 初学者对敏捷开发的认识
- 数据库GUID、INT唯一标识
- 《React-Native系列》24、 结合Demo学习Redux框架
- 安装react-native命令和创建
- Java - static静态什么时候使用
- hdu 1561 The more, The Better(树形DP)
- 递归两个例子
- 智力竞赛(慢慢领悟dp)
- UEditor之——与SpringMVC整合
- 关于Single Number II的一些讨论