java UUID 和 自增主键 的优缺点

自增主键sql

自增ID是在设计表时将id字段的值设置为自增的形式,这样当插入一行数据时无需指定id会自动根据前一字段的ID值+1进行填充。在MySQL数据库中,可经过sql语句AUTO_INCREMENT来对特定的字段启用自增赋值 使用自增ID做为主键,可以保证字段的原子性.数据库


优势ide


数据库自动编号,速度快,并且是增量增加,按顺序存放,对于检索很是有利;ui

数字型,占用空间小,易排序,在程序中传递也方便;设计

若是经过非系统增长记录时,能够不用指定该字段,不用担忧主键重复问题。排序

缺点索引


由于自动增加,在手动要插入指定ID的记录时会显得麻烦,尤为是当系统与其它系统集成时,须要数据导入时,很难保证原系统的ID不发生主键冲突(前提是老系统也是数字型的)。特别是在新系统上线时,新旧系统并行存在,而且是异库异构的数据库的状况下,须要双向同步时,自增主键将是你的噩梦;同步

在系统集成或割接时,若是新旧系统主键不一样是数字型就会致使修改主键数据类型,这也会致使其它有外键关联的表的修改,后果一样很严重;it

若系统也是数字型的,在导入时,为了区分新老数据,可能想在老数据主键前统一加一个字符标识(例如“o”,old)来表示这是老数据,那么自动增加的数字型又面临一个挑战。class

UUID

UUID含义是通用惟一识别码 (Universally Unique Identifier) uuid 项目应用 www.1b23.com,指在一台机器上生成的数字,它保证对在同一时空中的全部机器都是惟一的。一般平台会提供生成的API。换句话说可以在必定的范围内保证主键id的惟一性。


优势


出现数据拆分、合并存储的时候,能达到全局的惟一性


缺点


影响插入速度, 而且形成硬盘使用率低

uuid之间比较大小相对数字慢很多, 影响查询速度。

uuid占空间大, 若是你建的索引越多, 影响越严重

相关文章
相关标签/搜索