我正在运行一个Python脚本,它处理许多不同指标的时间序列数据,然后将结果写入Postgres数据库。
时间序列假定为40个时期,存储为……
正如其他人正确提到的那样,这种方法并不适合PostgreSQL的操作模式。
但是,您可以使用名为HOT的优化:
用a声明你的表 fillfactor 不到100这样的 INSERT 在每个街区留出自由空间:
fillfactor
INSERT
ALTER TABLE my_table SET (fillfactor = 50);
此设置仅影响将来的活动,您必须重新组织表以影响现有数据。如果更新表中的每一行,您可能需要一个低至30的设置才能生效。
确保更新的列具有 不 有一个索引。
然后PostgreSQL可以使用& ldquo; HOT update“并在运行中回收死表条目,这避免了需要autovacuum,这显然无法跟上你的桌面。
检查 n_tup_hot_upd 列中的 pg_stat_user_tables 你的表行,看看它是否正常工作。
n_tup_hot_upd
pg_stat_user_tables
Postgres使用MVCC,它可以写入copy。
该 UPDATE 将整行复制到新行并将旧行标记为删除,但删除本身仅在真空期间发生,这由autovacuum守护程序定期发生。
UPDATE
你可以通过跑步自己腾出空间
VACUUM
它有多少磁盘空间用完了?我从来没有听说过这个非庞大的数据库存在这样的问题。