OKHK 👀
✨ Thinking ❤️
-
-
-
- PostgreSQL 使用 UUID 作为主键的总结
https://maciejwalkowiak.com/blog/postgres-uuid-primary-key/
本文探讨了在 PostgreSQL 数据库中使用 UUID 作为主键的有效方法,以及如何提升性能。
核心观点:
● UUID 作为主键虽然易于生成和在分布式系统中共享,但其长度可能会影响数据库性能,尤其在大型数据库中。
● 使用 PostgreSQL 内置的uuid数据类型存储 UUID 比使用text类型更有效率,原因在于uuid类型占用更少的存储空间。
● 原始的 UUID 生成方式 (UUID v4) 不利于 B-tree 索引的性能,因为其值是随机的。
● 使用 UUID v7 (时间排序的 UUID) 可以显著提高插入性能,因为其值是时间相关的,有利于 B-tree 索引的排序。
详细总结:
文章通过实验对比了使用text和uuid作为主键的性能差异,结果显示uuid类型在表大小和索引大小方面更占优势,尤其是在百万级数据量的情况下,这将显著影响数据库的插入和查询效率。
文中重点说明了使用uuid类型的潜在性能问题在于其随机性。B-tree 索引对有序数据操作效率更高。UUID v4 的随机性导致索引无法充分利用,而 UUID v7 的时间排序特性使得其更适合 B-tree 索引。
性能优化建议:
● 使用uuid数据类型而不是text。
● 使用 UUID v7 (时间戳 UUID) 来生成主键,以提高 B-tree 索引效率,特别是对于大型数据集和高频插入场景。
● 文中建议使用 Java 的java-uuid-generator库来生成 UUID v7。
结论:
虽然 UUID 作为主键在很多情况下是可接受的,但是为了获得最佳性能,尤其是在大型数据库中,建议使用 UUID v7 并恰当利用 PostgreSQL 的uuid数据类型,避免使用text来存储 UUID 字符串。文章强调了如果需要选择主键类型,TSID 可能是一个更好的选择,但如果必须使用 UUID,文中提到的优化策略非常重要。
#DB #DevOps #Doc - MySQL 数据库中使用 UUID 主键的缺点及解决方案
https://planetscale.com/blog/the-problem-with-using-a-uuid-primary-key-in-mysql
本文探讨了在 MySQL 数据库中使用 UUID 作为主键的优缺点,并提供了解决方案。
UUID 的概述:
UUID (Universally Unique Identifier) 旨在确保在分布式系统中生成唯一 ID,无需了解其他系统。 然而,错误使用 UUID 作为主键会显著降低数据库性能。
UUID 的不同版本:
本文详细介绍了五种官方 UUID 版本和三种提议版本:
● UUIDv1 (时间戳型): 基于时间戳,但使用格里高利历 1568 年 10 月 10 日作为基准时间,并以 100 纳秒为增量。节点信息也包含其中。
● UUIDv2 (时间戳+用户 ID 型): 改进了 UUIDv1,用 POSIX 用户 ID 替换了低位时间戳部分,增加了冲突的可能性。实际使用较少。
● UUIDv3 和 v5 (命名型): 基于命名空间和名称,用哈希算法生成唯一值,UUIDv3 使用 MD5,UUIDv5 使用 SHA1。
● UUIDv4 (随机型): 值几乎完全随机,第三段第一个位总是 4。
● UUIDv6 和 v7 (时间戳型): 类似于 UUIDv1,但 UUIDv6 将时间戳的位翻转,UUIDv7 使用 Unix 时间戳和随机性节点。
● UUIDv8: 允许厂商特定实现,但版本号被指定在第三段的第一个位置。
UUID 作为 MySQL 主键的缺点:
● 插入性能: 随机生成的 UUID 会导致索引 B+ 树重新平衡,页面分裂,影响插入性能,尤其在高负载环境下。
● 存储空间: UUID 使用 128 位,比 32 位整数占用空间大 4 倍,如果以字符串形式存储,空间消耗更大,还会影响二级索引。
● InnoDB 效率: InnoDB 假设主键是顺序递增的,随机的 UUID 使得 InnoDB 无法充分利用页面空间。
使用 UUID 作为 MySQL 主键的最佳实践:
● 使用二进制类型: 将 UUID 存储为BINARY(16),而不是CHAR(36),减少存储空间。
● 使用有序 UUID 版本: 选择时间戳型 UUID,例如 v6 或 v7,以确保唯一性和部分顺序性。
● 使用 MySQL 内置 UUID 函数: MySQL 提供UUID_TO_BIN函数,可以用swap_flag参数优化。
● 使用替代 ID 类型: 如果可能,考虑使用 Snowflake ID、ULID 或 NanoID 等替代方案。
结论:
尽管 UUID 在分布式系统中能保证唯一性,但作为 MySQL 主键时存在性能和存储空间上的缺点。 选择合适的 UUID 版本和替代方案,并结合存储类型,可以有效地降低这些负面影响。
#DB #DevOps #Doc - Codia AI
https://codia.ai/
Anything to Design,
Anything to Code
Codia AI 是一款利用人工智能技术进行设计和开发的平台。它可以将截图转换为 Figma 设计、将 Figma 设计转化为代码、生成响应式网站 UI、将图像转换为矢量图、以及将 PDF 和 HTML 转化为 Figma 设计,从而提高设计和开发效率,促进设计师和开发人员的协作。该平台的核心技术包括视觉 AI 和大型语言模型 (LLM),以及专用于编码和设计的自定义 AI 模型。
#AI #Tool #URL #Design - 运营商现在自带的骚扰电话拦截功能方便实用,联通、移动和电信均提供免费服务,直接在对应微信公众号即可开通,无需安装 App。
电信:在「天翼防骚扰」中启用智能拦截
联通:在「联通助理」中开启手机管家拦截功能
移动:在「中国移动高频骚扰电话防护」中设置拦截
#Life -
- 一觉醒来发生了什么 11月10日
2024年11月10日
🌍资讯快读
1、巴西政府正在中国卫星生产者中寻找替代Starlink的产品
https://36kr.com/newsflashes/3027569489831174
2、多处路面被共享单车等物品占用,郑州开封对郑开大道非机动车道实施20小时禁行
https://www.thepaper.cn/newsDetail_forward_29296566
3、巴基斯坦火车站爆炸事件已致24死,恐怖组织“俾路支解放武装”宣称负责
https://www.jiemian.com/article/11964148.html
4、特朗普已准备再次退出《巴黎协定》,美环保署总部或迁出华盛顿
https://www.jiemian.com/article/11963823.html
5、美国43只雌猴逃出实验室:或携带对人致命病毒,目前仍未抓获
https://www.thepaper.cn/newsDetail_forward_29297368
👬即刻镇小报
1、「华尔街日报」采访那个在博彩平台下注2800万美金的法国人
https://m.okjike.com/originalPosts/672c3fb47de7a85862d26e31
2、围绕你的休息来设计你的生活和工作,而不是围绕工作再嵌入休息
https://m.okjike.com/originalPosts/672ad6414b51510e0a43b5ec
3、男女关系上,不需要把任何人看得过于特殊,和你合适的不是一个人,而是一类人
https://m.okjike.com/originalPosts/672bfe397de7a85862cd5e22
4、本书对我最大的启发,来自于对于语言,对于秩序,对于进化的重新思考
https://m.okjike.com/originalPosts/6729fe079d53db7b4467bc71
5、男性最重要的特质,要在少年时期就形成
https://m.okjike.com/originalPosts/672ad1d7e217cf2efa171a79
今日即刻镇小报内容来自 @阑夕ོ @二当家李多余 @鳄鱼先生很忙 @Diiiii @广屿Ocean的笔记本 ,感谢以上即友的创作与分享。 -
-