1. 背景本人所在单位是传统企业,借着数字化转型的东风,我也加入到了转型大军,从传统领域转到了IT领域。经过了1年的培训后,我光荣的成为了一个数字化领域的底层农民工。之前公司的很多项目都是外包团队开发,但这几年开始组建了自己的开发团队。最近接触到了很多使用UUID作为数据库的主键和业务ID的项目,这对于读了多遍阿里Java开发手册的我来说,总觉得有点别扭。所以有了写这个分享的想法。上述现象分解一下
之前文章中介绍Snowflake的时候其实已经说过了,自增id做主键对于InnoDB更友好,如果用uuid做主键数据插入时会伴随大量的数据迁移,导致插入性能降低,今天从InnoDB数据结构聊聊数据是如何插入的。表空间数据库中所有数据都需要记录在磁盘、磁带、光盘等存储介质上实现长期保存。这些介质被划分成文件,他们是存储数据的物理空间。当将数据写到文件上时,首先需要指定文件路径。而我们主要操作的是表,
转载
2024-05-06 16:36:23
235阅读
序言看了b站IT老齐的架构三百讲的其中一个短视频,有所体会并记录一下。视频中所讲的财经部门使用的UUID主键,在日终结算时出现磁盘的IO异常,导致应用出现高延迟。最后发现是UUID的问题,UUID作为主键在数据进行插入的时候对于系统的压力是非常大的。UUID(Universally Unique Identifier)介绍 UUID结构如上图所示,比如7bf13c38-00a1-484e
转载
2024-06-29 08:21:24
99阅读
在系统中生成ID的方式有很多种,现在简单分析一下各种方式的适用场景以及优缺点。1. UUID. 唯一性,在单体环境下或者分布式环境下都不会出现重复。但是UUID的劣势也是一大堆 a.没有可读性,导致程序在调试的时候数据不直观,不能像整型ID一样直观的看到大致运行到了哪条记录,如果比对两条数据,也不能很快看出谁先谁后。 b. 32位字符串太长,占用数据库资源。 c. 在
1. UUIDUUID经由一定的算法机器生成,为了保证UUID的唯一性,规范定义了包括网卡MAC地址、时间戳、名字空间(Namespace)、随机或伪随机数、时序等元素,以及从这些元素生成UUID的算法。优点:本地生成ID,不需要进行远程调用,时延低,性能高。缺点:UUID过长,16字节128位,通常以36长度的字符串表示,很多场景不适用,比如用UUID做数据库索引字段。没有排序,无法保证趋势递增
转载
2024-10-14 17:10:36
47阅读
MySQL Index索引是一种数据结构,可以是B-tree、R-tree、或者hash结构。其中,B-tree适用于查找某范围内的数据,可以快速地从当前数据找到吓一跳数据;R-tree常用于查询比较接近的数据;hash结构适用于随机访问场景,查找每条数据时间几乎一致。优化查询的有效方法是为经常查询的字段建立索引,如无索引查询数据时,会遍历整张表;若建立索引后查找起来会更快速。当进行update、
转载
2024-03-19 10:43:56
37阅读
上图:索引建立规则:1、表的主键、外键必须有索引; 2、数据量超过300的表应该有索引; 3、经常与其他表进行连接的表,在连接字段上应该建立索引; 4、经常出现在Where子句中的字段,特别是大表的字段,应该建立索引; 5、索引应该建在选择性高的字段上; 6、索引应该建在小字段上,对于大的文本字段甚至超长字段,不要建索引; 7、复合索引的建立需要进行仔细分析;尽量考虑用单字段索引代替: 8、频繁进
转载
2024-03-18 10:12:48
142阅读
这次来聊一下唯一索引和普通索引。这两者的区别就不赘述了,通俗来说,唯一索引不允许出现重复,在插入或者修改操作的时候都需要进行判断是否发生唯一性冲突,若有,则不能进入插入或者修改操作。有一个数据库相关的面试题:如果数据表中更新操作经常发生阻塞,操作命中率也低,可能是什么原因导致的?这个问题的答案就是可能错误地使用了唯一索引。在不影响业务正确性的前提下,将唯一索引改成普通索引可以避免该问题。那到底从何
转载
2024-04-19 13:25:12
95阅读
1. 无序型id1. 优点 无序,无规律,不容易被遍历 2. 缺点 无顺序,没有实际意义,不容易记忆 3. 方案1. UUID2. 根据自己的规则生成例如数字+字母的唯一id2. 自增型id1. 优点 InnoDB 使用两种索引来组织数据,Clustered Index 和 Second Index Clustered Index 与 主键有千丝万缕的关系,可以简单认为是相
转载
2024-06-28 13:40:12
58阅读
string类封装了char*,是由一个char*型容器管理这个字符串的。和char*比较起来,string类不必担心内存是否足够、字符串长度等,而且作为一个类出现,它集成的操作函数足以满足大多数情况下的需求。并且string重载了左移运算符和右移运算符,可以把它看成是一个C++的基本数据类型。 string类的使用需要包含头文件#include<string>
索引优化思路:索引的创建 如何查 如何分析 保证索引不失效(一)、SQL性能下降的原因:1、查询语句写的不好:2、索引失效:(单值索引,符合索引)3、关联查询太多join(设计缺陷或不得已的需求)4、服务器调优及各个参数设置(缓冲,线程数等)总结:对web开发而言:搞好1和2和3就好:(二)、人写SQL顺序:select from join on where group by having ord
转载
2024-06-14 22:03:40
33阅读
我是少侠露飞。学习塑造人生,技术扭转世界。引言我在之前一篇博客专门介绍了MySQL聚簇索引和非聚簇索引,附传送门:【享学MySQL】系列:MySQL索引的数据结构,索引品种及聚簇索引和非聚簇索引简略来说,就是咱们设计表的时候,根本都会人为设定一个主键,这就是聚簇索引(如果没有设定主键,MySQL会抉择非空不惟一的字段作为聚簇索引,如果仍然没有,则MySQL会抉择本人暗藏列row_id作为聚簇索引)
转载
2024-08-15 11:21:27
124阅读
# Android UUID作为设备ID
在Android开发中,设备ID是一个重要的标识符,用于唯一标识设备。在过去,通常使用IMEI(International Mobile Equipment Identity)作为设备ID,但是随着Android系统版本的更新和权限的限制,IMEI不再被推荐使用。因此,开发者们开始寻找新的方法来生成设备ID,其中UUID(Universally Uniq
原创
2024-03-24 03:45:15
142阅读
# Java中JWT作为Token与UUID作为Token的比较
在现代的Web应用程序中,用户认证和授权变得越来越重要。为了确保安全性,开发人员需要使用令牌(token)来验证用户身份。在这里,我们将讨论Java中两种常见的令牌生成方式:JWT作为Token和UUID作为Token。
## JWT作为Token
JWT(JSON Web Token)是一种开放标准(RFC 7519),它定
原创
2024-04-24 07:11:55
547阅读
# 使用Java UUID作为关联键的指导
在现代应用开发中,特别是涉及分布式系统或需要高并发的环境,使用像UUID这样的唯一标识符作为主键或关联键越来越流行。本文将引导你实现这一功能,帮助你理解流程和每一步的代码实现。
## 流程概述
我们将在以下表格总结使用Java UUID作为关联键的主要步骤:
| 步骤 | 描述 |
|--
世界上本没有程序员老鸟,菜鸟踩的坑多了也就成了老鸟。今天菜鸟在做项目的时候发现系统里面使用的主键UUID,于是我想着使用Long类型的自增主键他不香嘛。于是找我老鸟理论一番,于是有了以下的对话:菜鸟:我看到项目里面使用的主键类型是UUID,使用Long类型的自增不好嘛?老鸟:你先理出Long类型的自增ID的优点。菜鸟:自增Long类型的主键可以主键自增,数字类型占用空间小,走索引速度更快,对于排序
转载
2023-12-18 06:39:51
121阅读
在之前的文章《聊聊Mysql优化之索引优化》中,笔者简单介绍了Mysql索引优化的原理和一些使用场景,然而Mysql索引优化的内容还远远不止这些。在实际工作中,我们有时候会碰到明明已经建了索引,但是查询速度还是上不去的问题,这时候就要当心了,有可能你的查询语句根本就没使用到索引,因为Mysql索引在某些情况下会失效,今天我将为大家介绍下Mysql索引优化中
在分布式系统,有些数据会存在全局唯一的需求,生成全局唯一的分布式ID也很重要。分布式ID需要具备的特点全局唯一:最基本的要素趋势递增:分布式ID用来标识数据的唯一性,往往会被用作主键或者是唯一索引。常用的MySQL InnoDB,使用的索引往往是BTree索引,自增的数据在插入时会有较高的效率。信息安全:避免恶意用户直接根据自增ID获取数据信息几种分布式ID的实现方式UUIDUUID(Univer
1. UUID在Java的世界里,想要得到一个具有唯一性的ID,首先被想到可能就是UUID,毕竟它有着全球唯一的特性。那么UUID可以做分布式ID吗?答案是可以的,但是并不推荐!public static void main(String[] args) {
String uuid = UUID.randomUUID().toString().replaceAll("-","");
转载
2024-05-28 19:12:45
32阅读
1.B+树一个节点有多个元素所有元素都在叶子节点冗余叶子节点间有指针且有序推荐一个B+树演示网站 https://www.cs.usfca.edu/~galles/visualization/BPlusTree.html2.InnoDB数据引擎中的页默认页大小为16kbmysql> show global status like 'Innodb_page_size';
+-----
转载
2024-05-31 11:49:30
42阅读