UUID主键生成策略

简介: 【7月更文挑战第9天】在分库分表场景中,自增主键不再适用,面试时应提及这一挑战。主键生成策略包括UUID,虽简单但有两弊端:长度过长且非递增。递增主键能优化存储,避免页分裂导致的性能下降。准备时需了解常见策略、创新方案及优化措施。例如,UUID的非递增性可能导致数据库的页分裂和性能影响。

首先需要把话题引到主键生成上,如果接触过使用分库分表的项目,那么在简历和项目介绍的时候一定要提及分库分表关键词,后面等面试官主动问你主键是如何生成的。
面试过程中被问到了数据库自增主键相关的问题,那么要主动提起自增主键不适用于分库分表场景,然后面试官自然就会追问分库分表场景下主键的生成问题。

准备工作:

  1. 深入理解市面上常见的主键生成策略
  2. 准备一个有亮点、微创新的主键生成方案
  3. 记住一些可行的优化方案

常见主键生成策略

UUID

最简单粗暴的方案,也是面试的时候必须要回答出来的一种策略。如果想要拉开差距,即使是最简单的UUID方案也需要下一番功夫,首先需要详细地解释UUID的两个弊端

  • 过长:这个弊端在面试里讨论的比较少,毕竟采用UUID的地方就不会在意它的长度
  • UUID不是递增的:要重点描述的,并且要尝试刷出亮点

亮点1:页分裂

UUID不是递增的这个弊端,要想讲清除,就要先描述为什么会希望在数据库里面使用自增主键。那么可以引用数据库为什么使用自增主键的知识点来回答这个问题,关键词就是页分裂
如果你尝试往23之后插入一个25,这个叶子节点已经放不下了,不得已需要分裂成(20,21)和(22,23,25)两个节点。原本的(10,20,30)多了一个元素之后变成了(10,20,22,30),即页分裂这个东西是可能引起连锁反应的,从叶子节点沿着树结构一路分裂到根节点
可以这样回答

UUID最大的缺陷是它产生的ID不是递增的。一般来说,我们倾向于在数据库中使用自增主键,因为这样可以迫使数据库的数朝着一个方向增长,而不会造成中间叶节点分裂,这样插入性能最好。而整体上UUID生成的ID可以看作是随机,那么就会造成导致数据往页中间插入,引起更加频繁地页分裂,在糟糕的情况下,这种分裂可能引起连锁反应,整棵树的树形结构都会受到影响。所以我们普遍倾向于采用递增的主键。

目录
相关文章
|
Java 数据库
如何使用JPA的UUID主键生成策略
这篇文章只写给主键用uuid并且用jpa的小伙伴。 1. 数据实体类 @Entity @Table(name = "ip_user") @GenericGenerator(name = "jpa-uuid", strategy = "uuid") ...
4018 0
|
7月前
|
人工智能 监控 大数据
大数据未来五大趋势,这些变化你真的准备好了吗?
大数据未来五大趋势,这些变化你真的准备好了吗?
500 90
|
11月前
|
运维 网络协议
IP地址与子网划分:IPv4与IPv6地址规划及子网掩码计算详解
IP地址与子网划分:IPv4与IPv6地址规划及子网掩码计算详解
3574 3
|
监控 安全 数据安全/隐私保护
安全策略之授权 (Authorization)
【8月更文挑战第12天】
563 2
成功解决pywintypes.com_error: (-2147352567, '发生意外。', (0, 'Kingsoft WPS', '文档保存失败。', '', 3011, -214746725
成功解决pywintypes.com_error: (-2147352567, '发生意外。', (0, 'Kingsoft WPS', '文档保存失败。', '', 3011, -214746725
成功解决pywintypes.com_error: (-2147352567, '发生意外。', (0, 'Kingsoft WPS', '文档保存失败。', '', 3011, -214746725
|
SQL 分布式计算 关系型数据库
实时数仓 Hologres操作报错合集之指定主键更新模式报错主键数据重复,该如何处理
实时数仓Hologres是阿里云推出的一款高性能、实时分析的数据库服务,专为大数据分析和复杂查询场景设计。使用Hologres,企业能够打破传统数据仓库的延迟瓶颈,实现数据到决策的无缝衔接,加速业务创新和响应速度。以下是Hologres产品的一些典型使用场景合集。
|
存储 数据库 数据安全/隐私保护
Python中表单的处理
Python中表单的处理
245 0
|
Python
pycharm2020无法打开,点击无反应
pycharm2020无法打开,点击无反应
284 0
|
数据可视化 开发工具 数据安全/隐私保护
可视化工具SourceTree使用
可视化工具SourceTree使用
|
SQL DataWorks 大数据
3.DataWorks 调度参数配置|学习笔记
快速学习3.DataWorks 调度参数配置
3.DataWorks 调度参数配置|学习笔记