微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

PostgreSQL:额外列的性能影响

如何解决PostgreSQL:额外列的性能影响

在大多数情况下,NULL可以将具有值的列添加到行中,而无需更改数据页的其余部分。 仅需设置一位。因此,是的,在大多数情况下,添加稀疏列要便宜得多。

创建一个 是否是一个好主意,在很大程度上取决于用例。它通常更昂贵。对于初学者,每行有28个字节的开销(堆元组标头加项目标识符),每个表有一些额外开销。与JOIN单行读取相比,查询中的行也要昂贵得多。并且您需要添加一个主/外键列以及一个索引。如果您在大多数查询中不需要其他列,则拆分可能是一个好主意。通常这是一个坏主意。

在Postgresql添加列很快速。 列中的值可能会很昂贵,因为每个人都会UPDATE写入新行(由于MVCC模型)。因此,最好一次更新多个列。

手册中的数据库页面布局。

解决方法

给定一个大表(10至1亿行),向其中添加一些额外的(未索引)列的最佳方法是什么?

  1. 只需添加列即可。
  2. 为每个额外的列创建一个单独的表,并在需要访问额外值时使用联接。

答案会根据额外的列是密集的(通常不是null)还是稀疏的(通常是null)而改变吗?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。