IT老齐架构300讲笔记(047) 避坑分享财Z部金财平台用主键用了UUID后出现的问题

目录

一、场景

二、UUID的版本

2.1 基于时间的UUID

2.2 DCE安全的UUID

2.3 基于命名空间的UUID(MD5、SH1)

2.4 基于随机数的UUID(最常用)

 三、为什么 UUID 会引起IO异常

专栏链接:IT老齐架构300讲笔记专栏


一、场景

财政部金财工程平台在代理行日终结算时,经常出现磁盘的IO异常导致经常出现高延迟

这个问题一直困扰我们很长时间,对比发现在大量数据新增时磁盘IO居高不下,多次测试后发现是UUID主键在搞鬼。

二、UUID的版本

2.1 基于时间的UUID

  • 能保证不同设备UUID是唯一的
  • 同一设备上生成UUID可能重复

2.2 DCE安全的UUID

  • DCE(身份验证和安全服务)
  • 涉及侵犯用户隐私
  • 有损时间戳导致精度丢失

2.3 基于命名空间的UUID(MD5、SH1)

  • 在相同的命名空间下可能会出现UUID冲突

2.4 基于随机数的UUID(最常用)

  • 完全随机生成,会存在极小概率重复的情况
  • 外部环境无关,不涉及环境信息
  • 生成内容无序无规律
  • 目前的主流做法

 三、为什么 UUID 会引起IO异常

UUID是无序的,当UUID可能在索引中间某一页插入数据时

新增记录所在的数据页已满,数据库需要申请一个新的数据页存储数据

这种现象被称为"页分裂"

页分裂确保后一个数据页中的所有的 ID 值一定比数据页中的 ID 值大

在大并发环境环境下增加了磁盘IO的压力,无序ID才是罪魁祸首

解决办法:改为有序的数字主键生成策略就可以了

美团Leaf / 推特Snowflake

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值