[译] 一个TOAST适配所有:JSONB TOASTER | PG 15 特性预览

[译] 一个TOAST适配所有:JSONB TOASTER | PG 15 特性预览

严少安 Lv.6

原文地址:https://obartunov.livejournal.com/205362.html
原文作者:obartunov

我们已经为 PG 15 提交了 TOAST API。

下面是JSONB的性能分析,它使用了TOAST API实现的JSONB TOASTER。

每个jsonb,诸如:key1, looong key2[], key3, loong key4[]。 关于基准测试中使用的数据和查询的描述,请查看我们在 pgvision 2021 演讲中的第10张幻灯片。

下图中可以清晰的看出 jsonb 缩放的问题。

1.png

我们使用TOAST API实现了自定义的JSONB TOASTER(作为一个扩展!),并依据JSONB大小(inline, compressed inline, toasted)和关键位置的不同展示了优化结果集。 我们可以看到(第一张图),所有的优化(+all)都会导致两个数量级的性能提升。

2.png

其他图片显示了关键访问性能受不同指标和jsonb大小的影响情况。

3.png 4.png 5.png

备注:

TOAST API是基于postgres可扩展性的扩展插件,它允许按自数据类型定制长值存储(以扩展插件形式实现)。我们的计划是将API包含在PG15,以及GSON,一个通用 JSON API ,这样我们之后可以发布jsonb_toaster扩展插件。因为我们决定只专注于JSONB,所以我们将移除GSON对JSON的支持(以后可以恢复),以使得补丁更小。


https://www.modb.pro/db/375626

  • Title: [译] 一个TOAST适配所有:JSONB TOASTER | PG 15 特性预览
  • Author: 严少安
  • Created at: 2022-03-15 09:03:08
  • Updated at: 2022-03-15 09:03:08
  • Link: https://shawnyan.cn/2022/postgresql/fanyi-pg-15-jsonb-toaster/
  • License: This work is licensed under CC BY-NC-SA 4.0.
if (hexo-config('comment.enable') == true && hexo-config('comment.system') != "") { if (hexo-config('comment.system') == "waline") { @require "./waline.styl" } else if (hexo-config('comment.system') == "gitalk") { @require "./gitalk.styl" } else if (hexo-config('comment.system') == "twikoo") { @require "./twikoo.styl" } } .comments-container display inline-block margin-top $spacing-unit width 100% #comment-anchor width 100% height 10px .comment-area-title width 100% margin 10px 0 font-size 1.38rem color var(--default-text-color) font-family 'Consolas', '宋体', sans-serif font-weight bold i color var(--default-text-color) +redefine-tablet() margin 5px 0 font-size 1.2rem
On this page