Postgres 数据库中 ULID 和 UUID 的性能

本文比较了PostgreSQL中的UUID和ULID作为数据库键的数据类型对搜索速度的影响,发现ULID以bytea格式存储在某些情况下性能更好。作者强调了在选择数据类型时要考虑的因素和特定场景下的优化策略。
摘要由CSDN通过智能技术生成

大家好!在本文中,我想分享我对经常用作标识符的数据类型的知识和看法。今天我们将同时讨论两个主题。这些是数据库端按键和键的数据类型衡量的搜索速度。

我将使用PostgreSQL数据库和演示Java服务来比较查询速度。

UUID 和 ULID

为什么我们需要某种难以理解的 ID 类型?我不会谈论分布式系统、服务的连接性、敏感数据等。如果有人对此感兴趣,他们可以谷歌它 - 目前我们对性能感兴趣。顾名思义,我们将讨论两种类型的键:UUID 和 ULID。

UUID早已为大家所熟知,但ULID可能有些人感到陌生。ULID 的主要优点是它是单调递增的并且是可排序的类型。当然,这些还不是全部差异。就我个人而言,我也喜欢其中没有特殊字符的事实。

一个小题外话,我很早之前注意到很多团队varchar(36)在PostgreSQL数据库中使用数据类型来存储UUID,而我不喜欢这样,因为这个数据库有UUID对应的数据类型。稍后,我们将看到哪种类型在数据库方面更可取。因此,我们不仅会在后端比较两种数据类型,还会在数据库端以不同格式存储 UUID 时的差异。

比较

那么让我们开始比较一下吧。

  • UUID长度为36个字符,占用128位内存。

  • ULID 长度为 26 个字符,也占用 128 位内存。

对于我的示例,我在数据库中创建了两个包含三个字段的表:

CREATE TABLE test.speed_ulid(    id      varchar(26) PRIMARY KEY,    name    varchar(50),</
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值