首页 > 解决方案 > 在 Postgreql 中,如何确定 postgres 表中的列是否为 LOB 类型,然后如何找到模式中最大 LOB 值的大小?

问题描述

使用 Postgres 10.6。

我的目标是找到最大尺寸

如果 中的列的数据类型oid,我从https://www.postgresql.org/docs/9.2/largeobjects.html了解到它可以断定为 LOB 列。我可以得出结论,如果列的数据类型 not oid,那么该列不是 LOB?

如果不是,我该如何查找架构中的 LOB 列及其最大大小?

如果是,我在这里找到(Get size of large object in PostgreSQL query?)如何在给定 oid 的情况下找到 LOB 的大小。到目前为止,我能想到的最佳方法是查找模式中最大 LOB 值的大小,即遍历所有表中的所有 LOB 行,并取最大值。有更好的方法吗?

标签: postgresqlblobdatabase-administration

解决方案


这个结论在任何一个方向上都是不安全的。我当然可以创建一个 OID 类型的列,并用来自序列、随机数生成器或 generate_series 的整数填充它。我还可以创建 LO,并将生成的 OID 填充到其他类型的列中,例如int(int 已签名,因此最终会溢出/环绕,但这还有很长的路要走),bigint甚至text.

做这些事情并没有真正的意义,但人们有时会做一些没有意义的事情。


推荐阅读