IDEA2023.1.3破解,IDEA破解,IDEA 2023.1破解,最新IDEA激活码

MySQL 8.0 的 UUID 新特性,MySQL 8.0 的 UUID 性能提升

IDEA2023.1.3破解,IDEA破解,IDEA 2023.1破解,最新IDEA激活码

背景

UUID 是大家常用的,是一个 128bit 的字符串,例如:

12345678-1234-5678-1234-567812345678

UUID 是有版本的,不同版本有不同的底层结构,RFC4122 定义了5个版本,MySQL 实现的是版本1,由 时间戳UUID版本MAC地址构成

好处

MySQL 中使用 UUID 是对 AUTO_INCREMENT PRIMARY KEY的一个很好的替代,有如下好处:

  • keys 在不同 表、库、服务器 中都是唯一的
  • 安全性更好,很难猜
  • 可以离线生成
  • 可以简化数据库复制

不足

但也有不好的地方:

  • 增加了存储空间
  • 增加了问题调试的难度
  • 有性能问题,因为长度更长,并且无序

MySQL 8.0 的处理方法

MySQL8.0 新增了3个函数:

1、 UUID_TO_BIN
2、 BIN_TO_UUID
3、 IS_UUID

通过这3个函数,使我们可以更方便的应用UUID,并且是对上面提到的几点不足的一个解决方案

UUID_TO_BIN 用于对 UUID 字符串进行二进制压缩,32字符–>16bit

BIN_TO_UUID 是相应的解压操作,16bit–>32字符

用法示例:

  • 建表
CREATE TABLE t (id binary(16) PRIMARY KEY); 
  • 插入
INSERT INTO t VALUES(UUID_TO_BIN(UUID()));
  • 查询
SELECT BIN_TO_UUID(id) FROM t; 

+--------------------------------------+ 
| BIN_TO_UUID(id); | 
+--------------------------------------+ 
| 586bcc2d-9a96-11e6-852c-4439c456d444 | 
| 5942e49a-9a96-11e6-852c-4439c456d444 | 
| af0f27e2-9aad-11e6-852c-4439c456d444 | 
+--------------------------------------+ 

通过压缩,很好的改善了存储空间过大的问题,但还存在性能问题,无序意味着要向索引树中随机位置插入,在不能很好的利用内存的情况下,将会产生不少IO操作,也就明显的影响了性能

UUID_TO_BIN 有一个可选的第二个参数,就是用来解决无序引起的性能问题的

把第二个参数设置为 true,将会生成连续的有序值

INSERT INTO t VALUES(UUID_TO_BIN(UUID(), true));

IS_UUID 可以帮助我们验证传递过来的参数是否为有效的 UUID,合法的 UUID 是由 32个十六进制字符与几个可选字符(’{’, ‘-‘, ‘}’)构成

下面几个示例都会返回 true,是合法的

SELECT is_uuid('{12345678-1234-5678-1234-567812345678}'); 
SELECT is_uuid('12345678123456781234567812345678'); 
SELECT is_uuid('12345678-1234-5678-1234-567812345678');

文章永久链接:https://tech.souyunku.com/?p=12299

赞(102) 打赏



未经允许不得转载:搜云库技术团队 » MySQL 8.0 的 UUID 新特性,MySQL 8.0 的 UUID 性能提升

IDEA2023.1.3破解,IDEA破解,IDEA 2023.1破解,最新IDEA激活码
IDEA2023.1.3破解,IDEA破解,IDEA 2023.1破解,最新IDEA激活码

评论 抢沙发

大前端WP主题 更专业 更方便

联系我们联系我们

觉得文章有用就打赏一下文章作者

微信扫一扫打赏

微信扫一扫打赏


Fatal error: Uncaught Exception: Cache directory not writable. Comet Cache needs this directory please: `/data/wangzhan/tech.souyunku.com.wp/wp-content/cache/comet-cache/cache/https/tech-souyunku-com/index.q`. Set permissions to `755` or higher; `777` might be needed in some cases. in /data/wangzhan/tech.souyunku.com.wp/wp-content/plugins/comet-cache/src/includes/traits/Ac/ObUtils.php:367 Stack trace: #0 [internal function]: WebSharks\CometCache\Classes\AdvancedCache->outputBufferCallbackHandler() #1 /data/wangzhan/tech.souyunku.com.wp/wp-includes/functions.php(5109): ob_end_flush() #2 /data/wangzhan/tech.souyunku.com.wp/wp-includes/class-wp-hook.php(303): wp_ob_end_flush_all() #3 /data/wangzhan/tech.souyunku.com.wp/wp-includes/class-wp-hook.php(327): WP_Hook->apply_filters() #4 /data/wangzhan/tech.souyunku.com.wp/wp-includes/plugin.php(470): WP_Hook->do_action() #5 /data/wangzhan/tech.souyunku.com.wp/wp-includes/load.php(1097): do_action() #6 [internal function]: shutdown_action_hook() #7 {main} thrown in /data/wangzhan/tech.souyunku.com.wp/wp-content/plugins/comet-cache/src/includes/traits/Ac/ObUtils.php on line 367