前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >MySQL 8.0 体验 UUID v7

MySQL 8.0 体验 UUID v7

原创
作者头像
贺春旸的技术博客
修改2024-12-20 10:50:11
修改2024-12-20 10:50:11
5670
举报
文章被收录于专栏:DBA 平台和工具DBA 平台和工具

UUID v7 和 UUID v1 之间存在几个显著的区别,主要体现在生成方式、结构、安全性和适用场景等方面。

主要区别

  • UUID v1:由时间戳、MAC 地址和时钟序列生成。它依赖于设备的硬件地址(MAC 地址),因此在同一设备上生成的 UUID 可能会泄露设备信息。
  • UUID v7:结合了 Unix 时间戳和随机数生成。UUID v7 不使用 MAC 地址,而是完全依赖随机数,从而提高了隐私和安全性。
  • UUID v7 是对 UUID v1 的一种改进,提供了更好的安全性、简化的结构以及在高并发环境下更优的性能。由于去除了 MAC 地址,UUID v7 更加适合现代应用需求。

MySQL 默认情况下使用的是 UUID v1,目前原生并不支持。可通过社区插件进行安装。

https://github.com/hcymysql/mysql-component-uuid_v7 代码库中获取到component_uuid_v7.so文件(Centos 7系统),并将其拷贝到/usr/local/mysql/lib/plugin/目录下。

一、插件安装

代码语言:sql
复制
mysql> install component "file://component_uuid_v7";
Query OK, 0 rows affected (0.00 sec)

mysql> select uuid_v7();
+--------------------------------------+
| uuid_v7()                            |
+--------------------------------------+
| 0193e1e3-a6ee-7411-9c5c-0e448fd93911 |
+--------------------------------------+
1 row in set (0.00 sec)

mysql> select uuid_v7_to_timestamp("0193e1e3-a6ee-7411-9c5c-0e448fd93911");
+--------------------------------------------------------------+
| uuid_v7_to_timestamp("0193e1e3-a6ee-7411-9c5c-0e448fd93911") |
+--------------------------------------------------------------+
| 2024-12-20 10:26:53.294                                      |
+--------------------------------------------------------------+
1 row in set (0.00 sec)

使用 UUID v7作为表的主键

代码语言:sql
复制
mysql> create table tb1 (id varbinary(16) primary key, name varchar(20), 
created timestamp default current_timestamp());
Query OK, 0 rows affected (0.01 sec)

mysql> insert into tb1 (id, name) values (UUID_TO_BIN(uuid_v7()), "张三");
Query OK, 1 row affected (0.01 sec)

mysql> select BIN_TO_UUID(id), name, created from tb1;
+--------------------------------------+--------+---------------------+
| BIN_TO_UUID(id)                      | name   | created             |
+--------------------------------------+--------+---------------------+
| 0193e1e6-fee6-79ad-860d-8616086234af | 张三   | 2024-12-20 10:30:32 |
+--------------------------------------+--------+---------------------+
1 row in set (0.00 sec)

UUID v7:更适合现代分布式系统,尤其是在需要高并发和良好排序性能的数据库应用中,UUID v7 的时间可排序性使得数据插入和查询更加高效。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 主要区别
    • MySQL 默认情况下使用的是 UUID v1,目前原生并不支持。可通过社区插件进行安装。
  • 一、插件安装
  • 使用 UUID v7作为表的主键
    • UUID v7:更适合现代分布式系统,尤其是在需要高并发和良好排序性能的数据库应用中,UUID v7 的时间可排序性使得数据插入和查询更加高效。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档