• 使用自增主键、UUID的优缺点


    自增主键 


    这种方式是使用数据库提供的自增数值型字段作为自增主键,它的优点是: 

    1. 数据库自动编号,速度快,而且是增量增长,按顺序存放,对于检索非常有利; 
    2. 数字型,占用空间小,易排序,在程序中传递也方便; 
    3. 能够保证独立性,程序可以在不同的数据库间迁移,效果不受影响。
    4. 保证生成的ID不仅是表独立的,而且是库独立的,这点在你想切分数据库的时候尤为重要。

    缺点 :

    1. 因为自动增长,在手动要插入指定ID的记录时会显得麻烦,尤其是当系统与其它系统集成时,需要数据导入时,很难保证原系统的ID不发生主键冲突(前提是老系统也是数字型的)。特别是在新系统上线时,新旧系统并行存在,并且是异库异构的数据库的情况下,需要双向同步时,自增主键将是你的噩梦; 
    2. 在系统集成或交接时,如果新旧系统主键不同是数字型就会导致修改主键数据类型,这也会导致其它有外键关联的表的修改,后果同样很严重; 
    3. 若系统也是数字型的,在导入时,为了区分新老数据,可能想在老数据主键前统一加一个字符标识(例如“o”,old)来表示这是老数据,那么自动增长的数字型又面临一个挑战。
    4. 如果经常有合并表的操作,就可能会出现主键重复的情况
    5. 很难处理分布式存储的数据表。数据量特别大时,会导致查询数据库操作变慢。此时需要进行数据库的水平拆分,划分到不同的数据库中,那么当添加数据时,每个表都会自增长,导致主键冲突。

    UUID

    优点:

    1. 能够保证独立性,程序可以在不同的数据库间迁移,效果不受影响。
    2. 保证生成的ID不仅是表独立的,而且是库独立的,这点在你想切分数据库的时候尤为重要。

    缺点:

      1. 比较占地方,和INT类型相比,存储一个UUID要花费更多的空间。
      2. 使用UUID后,URL显得冗长,不够友好。
      3. 没有内置的函数获取最新产生的UUID主键。
      4. 很难记忆。Join操作性能比int要低。
      5.  UUID做主键将会添加到表上的其他索引中,因此会降低性能。

    原文入口

    一个小小后端的爬行痕迹
  • 相关阅读:
    BZOJ1406: [AHOI2007]密码箱 数论
    BZOJ5188: [Usaco2018 Jan]MooTube 并查集+离线处理
    BZOJ2662: [BeiJing wc2012]冻结 spfa+分层图
    BZOJ1297: [SCOI2009]迷路 矩阵快速幂
    BZOJ4887: [Tjoi2017]可乐 矩阵快速幂
    BZOJ5168: [HAOI2014]贴海报 线段树
    开发富文本编辑器的一些经验教训
    数据可视化的发展前景、商业/职业前景?
    市场调研中如何做数据分析?
    当前火热的短视频,背后有着哪些黑科技技术?
  • 原文地址:https://www.cnblogs.com/heikedeblack/p/14281587.html
Copyright © 2020-2023  润新知