[译] 一个TOAST适配所有:JSONB TOASTER | PG 15 特性预览
原文地址: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 缩放的问题。
我们使用TOAST API实现了自定义的JSONB TOASTER(作为一个扩展!),并依据JSONB大小(inline, compressed inline, toasted)和关键位置的不同展示了优化结果集。 我们可以看到(第一张图),所有的优化(+all)都会导致两个数量级的性能提升。
其他图片显示了关键访问性能受不同指标和jsonb大小的影响情况。
备注:
TOAST API是基于postgres可扩展性的扩展插件,它允许按自数据类型定制长值存储(以扩展插件形式实现)。我们的计划是将API包含在PG15,以及GSON,一个通用 JSON API ,这样我们之后可以发布jsonb_toaster
扩展插件。因为我们决定只专注于JSONB,所以我们将移除GSON对JSON的支持(以后可以恢复),以使得补丁更小。
- 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