博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PostgreSQL 11 preview - TOAST切片阈值表级可配置
阅读量:5956 次
发布时间:2019-06-19

本文共 1570 字,大约阅读时间需要 5 分钟。

标签

PostgreSQL , toast阈值表级动态设置 , 增强 , 11


背景

还记得我在13年的时候写过几篇关于变长字段优化的CASE,如果变长字段不怎么被更新,建议放到TOAST存储,因为放TOAST后,TUPLE中就只存指向TOAST的指针了。

那么多大的数据会放到TOAST呢?之前是代码中TOAST_TUPLE_THRESHOLD常量控制的,大概是PAGE_SIZE/4, 8K的PAGE_SIZE,就是2K。

也就是说,只有变长字段(s)的值占用的空间超过2K(而且是指pglz压缩后超过2K),才会写入TOAST中。

那么问题就来了,如果变长字段的值都小于2K,并且又不怎么变化,是不是得在数据库安装前,修改一下源码中的TOAST_TUPLE_THRESHOLD定义,再编译。这种静态编译太麻烦了。不适合灵活的业务。

方法如下:

PostgreSQL 11给出了一个很好的特性,支持表级动态设置TOAST_TUPLE_THRESHOLD,终于不用静态编译了。

Add storage parameter  to control the minimum length before TOAST storage will be considered for new rows (Simon Riggs)

The default TOAST threshold has not been changed.

toast_tuple_target (integer)

The toast_tuple_target specifies the minimum tuple length required before we try to move long column values into TOAST tables, and is also the target length we try to reduce the length below once toasting begins. This only affects columns marked as either External or Extended and applies only to new tuples - there is no effect on existing rows. By default this parameter is set to allow at least 4 tuples per block, which with the default blocksize will be 2040 bytes. Valid values are between 128 bytes and the (blocksize - header), by default 8160 bytes. Changing this value may not be useful for very short or very long rows. Note that the default setting is often close to optimal, and it is possible that setting this parameter could have negative effects in some cases. This parameter cannot be set for TOAST tables.

语法如下:

将t_loc1表的TOAST阈值设置为128字节:

postgres=# alter table t_loc1 set (toast_tuple_target=128);  ALTER TABLE

参考

转载地址:http://wvrxx.baihongyu.com/

你可能感兴趣的文章
知道双字节码, 如何获取汉字 - 回复 "pinezhou" 的问题
查看>>
linux中cacti和nagios整合
查看>>
Parallels Desktop12推出 新增Parallels Toolbox
查看>>
Python高效编程技巧
查看>>
Kafka服务端脚本详解(1)一topics
查看>>
js中var self=this的解释
查看>>
面试题
查看>>
Facebook 接入之获取各个配置参数
查看>>
linux的日志服务器关于屏蔽一些关键字的方法
查看>>
事情的两面性
查看>>
只要会营销,shi都能卖出去?
查看>>
sed单行处理命令奇偶行输出
查看>>
走向DBA[MSSQL篇] 从SQL语句的角度 提高数据库的访问性能
查看>>
VC++深入详解学习笔记1
查看>>
安装配置discuz
查看>>
CentOS7 64位小型操作系统的安装
查看>>
线程互互斥锁
查看>>
KVM虚拟机&openVSwitch杂记(1)
查看>>
win7下ActiveX注册错误0x80040200解决参考
查看>>
《.NET应用架构设计:原则、模式与实践》新书博客--试读-1.1-正确认识软件架构...
查看>>