你还在使用UUID 作为mysql 主键索引?

文章探讨了MySQL主键的选择,指出UUID作为主键在索引效率上的问题。UUID作为字符串类型,其不规则性和插入时的比较成本高,影响B+Tree索引的维护,导致资源浪费和插入速度减慢。建议使用数字类型主键以优化索引性能。
摘要由CSDN通过智能技术生成

        记得当初学习数据库的时候知道我们需要建立一列来作为主键(一般用数字(类型),自动递增),目的是标记唯一一条数据,且用来和其他表进行关联。方便后期做查询,这可能就是我最初对主键的认识吧。慢慢的后面学习各种技术。主键变成了雪花算法(还不错),uuid(字符串hash算法得到)便出现在我们的视野中。同学你也经历这个过程了嘛。

        由于工作慢慢接触sql优化,提到sql 优化可能大家最先想到的就是“索引”,有一句话这么说:”合理的设计且使用索引的mysql 是一辆超跑,没有设计和使用索引的mysql就是一辆牛车”---------彩币运维。看到这里是不是觉得索引很重要 ,sql优化当然因素有很多,今天我这里只提索引。

             要优化好索引首先就要知道索引的工作结构和概念?给你一分钟想一下 什么是索引?

索引是帮助mysql高效获取数据的排好序数据结构

排序和数据结构整明白这个两个东西索引基本就搞定啦 。

      索引我们都知道快,是因为他会将我们的数据单独通过表的形式存储起来(大多数存储磁盘地址),那么为什么索引查询就会很快(数量级的区别)单独查询表就不快了?且看下面》》》》》》

       数据结构自然少不了二叉树,红黑树,BTree,B+Tree,那么索引的存储是否用到了tree结构,其实mysql索引底层用的是一个B+Tree的数据存储结构,或者是说是一个复杂二叉树存储结构上图》

雪花算法是一种生成唯一ID的方法,由LinkedIn开源并广泛应用于各种分布式系统中,包括数据库、缓存等场景。这种算法能够生成足够大的空间用于ID分配,同时保证生成的ID全局唯一。 雪花算法的基本思想: 1. **时间戳** - 41位数字表示当前时间(从1970年1月1日到当前的时间),每秒可以产生大约16亿个ID(因为有10毫秒级的时间戳精度)。 2. **工作机器ID** - 10位数字标识了服务器的工作节点,通常是一个三位数范围内的值。理论上可以支持4096个工作节点(即2^12 = 4096)。 3. **序列号** - 最后的12位数字表示同一毫秒内产生的序号,它可以提供大约16384次连续操作的可能性(即2^12)。这意味着在同一毫秒内,最多可以有16384个独立的操作(如创建一个新的会话或事务)得到相同的序列号,但这不会影响整体的唯一性。 ### UUID(Universally Unique Identifier) UUID是一个通用的唯一识别符,主要用于跨平台应用及需要长时间保持唯一性的场景。UUID由四个部分组成: 1. **时间戳** - 类似于雪花算法的时间戳部分,表示生成该ID的时间点。 2. **设备ID** - 包含用于生成UUID的设备信息,通常是MAC地址的一部分。 3. **随机数** - 可能是从真随机数生成器(TRNG)获取的数据,用于增强UUID的随机性和安全性。 4. **版本号** - 表示UUID的生成方式或兼容性级别。 UUID具有更高的唯一性,因此更适合对数据一致性要求较高的场景,比如在不同服务器间共享的唯一标识。 ### MySQL主键索引 MySQL主键索引是指定表中用于唯一标识每一行数据的一个字段或一组字段。当创建一张表并定义某个列作为主键时,MySQL自动为其建立一个B树索引,这使得基于这个字段的查询非常高效。 关键特点: 1. **唯一性** - 主键约束要求主键值在整个表中必须是唯一的。 2. **非空性** - 主键列不允许为空值,除非明确指定允许NULL值。 3. **查询效率** - 使用主键可以快速定位表中的特定行,特别是在大数据量的情况下。 4. **触发器和外键关联** - 主键常常与其他表的外键关联,帮助维护数据的一致性和完整性。 主键索引对于优化查询性能至关重要,尤其是涉及到大量数据和频繁查询的场景。合理设计和选择主键字段可以极大地提高数据库系统的运行效率。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值