我有一个在循环上工作的查询,每次从DB查询30K行。这适用于某些类型的数据(让我们将该组称为公司),因此公司A和B数据在表中相对较小,但对于公司C而言,规模非常大。 对于30000行公司A和B大小约为24 MB,但对于公司C,它是700 MB。由于这种情况,系统C公司的内存开始耗尽。
现在我已经将提取大小从30K减少到5K,这样公司C也可以毫无问题地获取。
我希望这是动态发生的,因为对于公司A和B,如果我减少到5K,数据流量会急剧增加,只需要公司C。
所以我需要开发一个代码,它可以知道公司A,B,C的最大列大小(BLOB),所以基于我可以决定30K或5K作为提取大小的大小。
整个代码是Java,Hibernate和Postgres
答案 0 :(得分:0)
知道大小的方法很少,例如:pg_column_size,octet_length。但在我的情况下,由于需要花费的时间,它们效率低下。所以我改变了主意:)。
答案 1 :(得分:0)
使用PostgreSQL的示例:
SELECT table_name, pg_size_pretty(pg_relation_size(quote_ident(table_name)))
FROM information_schema.tables
WHERE table_schema = 'public'
ORDER BY 2
不知道你是否可以拥有特定的列大小