PostgreSQL之TOAST

1、什么是TOAST?

TOAST,全称是The Oversized-Attribute Storage Technique, 超大属性存储技术,顾名思义,就是说Pg中超长字段在数据库中的存储方式。

主要用来应对物理数据行超过数据块(页)大小的场景。

在PG中,页(或者叫block)是数据在文件存储中的基本单位,它的大小是固定的,并且只能在编译期指定,之后无法修改,默认的大小为8kb。同时PG不允许一行数据跨页存储。因此页大小就是行大小的硬上限,因此,数据库就无法直接存储很大的字段值,为了克服这一限制,Pg引入了TOAST技术,TOAST技术是采用压缩和切片的方式,使得行的大小变小。

注意:这一技术对用户来说是完全透明的,用户不需要关注这一技术实现。

 

2、怎么理解压缩和切片?

我们创建的每个表都有自己关联且唯一的TOAST表。当数据超过TOAST_TUPLE_THRESHOLD(默认2KB)时,Postgres将压缩数据,以适应2KB的缓冲区大小。如果对大列数据的压缩没有导致更小的块(<2KB),那么它将被拆分为更小的块,并存储在相关TOAST表中的多个物理行(行外存储)。每个原始字段值都被一个指针替换,根据这个指针可以找到行外存储的数据。

 

3、怎么查看与原始表相关的TOAST表?

select relname from pg_class where oid = (select reltoastrelid from pg_class where relname=’TABLE_NAME’)

通常表名为&

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值