zoukankan      html  css  js  c++  java
  • MySQL--”自然键”和”代理键”优缺点

    在数据库表设计中会纠结于”自然键”和”代理键”的选择,自然键在实现数据“软删除”时实现比较复杂,部分自然键因为键值过长或多列组合导致不适合作为表主键,而比较常见两种代理键为自增列(auto incremnet)和全局唯一标识列(GUID)。


    使用自增列作为主键的优缺点:

    1、    主键键值长度短,INT列需要4个字节,BIGINT列需要8个字节;
    2、    自增主键顺序递增,在INSERT操作时”顺序”写入表;
    3、    由于数据集中插入到表尾部,在高并发情况下容易造成”数据页热点”,影响插入效率;
    4、    自增主键只能保证在表内数据唯一,对于分库分表场景,可能因错误操作产生相同的“唯一值”。


    使用GUID列的优缺点:

    1、    32位GUID字符串需要更多的存储空间来存放(具体存储长度与字符集相关),影响主键和其他索引的查询性能。
    2、    GUID可实现全局唯一,能保证在多个表之间的数据唯一性
    3、    GUID将数据分散到全表,不会产生热点数据页,但会造成大量随机IO读写

    在实际使用过程中,很少场景会使用GUID作为主键,大部分业务按照数据量需求使用INT或BIGINT的自增列作为主键,对于需要多表唯一的场景可以通过程序实现全局唯一的自增ID。



  • 相关阅读:
    visual studio disable git
    app常见性能测试点
    App测试流程及测试点(个人整理版)
    APP测试要点
    APP端测试常见的功能点
    一文搞懂性能测试常见指标
    为什么会有生产bug?
    线上出了bug,是谁的责任?
    生产上线发现重大Bug的思考
    项目上线后出现Bug,该如何处理?
  • 原文地址:https://www.cnblogs.com/gaogao67/p/10392715.html
Copyright © 2011-2022 走看看