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

news/2024/9/15 7:18:16 标签: 架构, UUID

目录

一、场景

UUID%E7%9A%84%E7%89%88%E6%9C%AC-toc" style="margin-left:0px;">二、UUID的版本

UUID-toc" style="margin-left:40px;">2.1 基于时间的UUID

UUID-toc" style="margin-left:40px;">2.2 DCE安全的UUID

UUID%EF%BC%88MD5%E3%80%81SH1%EF%BC%89-toc" style="margin-left:40px;">2.3 基于命名空间的UUID(MD5、SH1)

UUID(%E6%9C%80%E5%B8%B8%E7%94%A8)-toc" style="margin-left:40px;">2.4 基于随机数的UUID(最常用)

UUID%20%E4%BC%9A%E5%BC%95%E8%B5%B7IO%E5%BC%82%E5%B8%B8-toc" style="margin-left:0px;"> 三、为什么 UUID 会引起IO异常

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


一、场景

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

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

UUID%E7%9A%84%E7%89%88%E6%9C%AC">二、UUID的版本

UUID">2.1 基于时间的UUID

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

UUID">2.2 DCE安全的UUID

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

UUID%EF%BC%88MD5%E3%80%81SH1%EF%BC%89">2.3 基于命名空间的UUID(MD5、SH1)

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

UUID(%E6%9C%80%E5%B8%B8%E7%94%A8)">2.4 基于随机数的UUID(最常用)

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

UUID%20%E4%BC%9A%E5%BC%95%E8%B5%B7IO%E5%BC%82%E5%B8%B8"> 三、为什么 UUID 会引起IO异常

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

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

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

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

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

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

美团Leaf / 推特Snowflake


http://www.niftyadmin.cn/n/1162074.html

相关文章

IT老齐架构300讲笔记(048) 为什么Kafka这么快,解密Kafka高性能背后的秘密

目录 一、Kafka实现高性能 二、Kafka所做的优化 2.1 磁盘顺序读写 2.2 页缓存 2.3 零拷贝(操作系统级别) 2.4 批量操作 专栏链接:IT老齐架构300讲笔记专栏 一、Kafka实现高性能 磁盘顺序读写页缓存零拷贝批量操作Kafka 吞吐量大,并行处理抢Rocket…

IT老齐架构300讲笔记(050) MySQL服务器该如何选择 CPU、内存、硬盘三大件

目录 一、CPU优先选大核还是选多核? 二、物理内存多大合适? 三、硬盘RAID该怎么选? 专栏链接:IT老齐架构300讲笔记专栏 一、CPU优先选大核还是选多核? ​​ 二、物理内存多大合适? ​ ​ 三、硬盘…

IT老齐架构300讲笔记(049) 比MySQL快100倍,解读cassandra列式数据库高性能背后的原理

目录 一、列式存储 二、为什么列式存储性能这么高 2.1 行式存储查询的劣势 2.2 列式存储查询的优势(顺序读) 2.3 列式存储的问题 专栏链接:IT老齐架构300讲笔记专栏 一、列式存储 列式数据库是以列相关存储架构进行数据存储的数据库,我们常见熟悉的…

IT老齐架构300讲笔记(051) 微博架构中大V更新动态,动态通知采用推Push还是拉Pull更合适

目录 一、推模式(Push)与拉模式(Pull)有什么不同 二、写扩散与读扩散该如何优化应对 2.1 写扩散(Push)优化 2.2 读扩散(Pull)优化 2.3 推特的混合模式 专栏链接: IT老齐架构300讲笔记 一、推模式(Push&#xff0…

IT老齐架构300讲笔记(053) 单页10万QPS,京东如何通过动静分离架构抗住超高并发访问

目录 一、动静分离 1.1 架构三大分离设计 1.2 动静分离 1.3 有效区分页面中的动静数据是优化的关键前提 二、动静分离案例 2.1 缓存架构 2.2 动静分离流程图 2.3 页面静态化与伪静态化技术 2.4 伪静态化 2.5 静态化的问题 三、动静整合方案 3.1 利用SSI实现动静分…

IT老齐架构300讲笔记(054) 分析医X云架构,为什么抛弃MySQL去拥抱MongoDB

目录 一、介绍医X云医疗大数据的技术架构 二、MongoDB在海量处理数据时有什么优势 专栏链接: IT老齐架构300讲笔记 一、介绍医X云医疗大数据的技术架构 二、MongoDB在海量处理数据时有什么优势 程序使用的表达(JSON文档)和数据存储是一致的&#xff0…

IT老齐架构300讲笔记(056) 日千万级订单系统的高可用、高性能架构该如何设计

目录 一、场景 二、如何设计一个简单的订单系统 三、如何避免丢单情况 四、重构优化 4.1 如何设计一个支持日万级的订单系统 4.2 千日万级的订单系统可能遇到的问题 4.3 如何设计一个支持千日万级的订单系统 一、场景 我们每天都在使用网络进行下单,购买各种…

IT老齐架构300讲笔记(060) 分布式架构开发时N点血的教训

目录 一、什么是分布式架构? 二、分布式开发各个方面分析 2.1 网络 2.2 性能 2.3 运维成本 2.4 组织架构层面 2.5 集成测试 三、微服务最佳实践 3.1 微服务的划分原则 3.2 微服务实践通用原则 3.3 为每一个微服务模块明确使命 3.4 微服务确保独立的数据存储 3.5 …