数据库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


0 0