1

我打算让一个 python 脚本每秒在 2,433,000 行上执行许多更新。我目前正在尝试将 python 中的动态列作为 python dict 中的值。然而,让我的 python dict 与其他列中的更改保持同步变得越来越困难或不可行。

我知道我可以将 autovacuum 置于超速状态,但我想知道这是否足以赶上大量的更新。如果我能将一个 python 变量关联到每一行就好了……

我担心 VACUUM 和磁盘写入开销会杀死我的服务器?

关于如何将极其动态的变量与行/键关联的任何建议?

谢谢

4

1 回答 1

3

PostgreSQL 支持使用LISTENNOTIFY命令的异步通知。应用程序(客户端)使用通知名称(例如“table_updated”)监听通知。数据库本身可以手动发出通知,即在执行插入或修改的代码中(在进行大量更新时很有用,允许批量通知)或在行更新TRIGGER中自动发出通知。

您可以使用此类通知来使您的数据结构保持最新。

或者(或者您可以将其与上述结合使用),您可以通过覆盖__getitem__()has_key()contains()方法来自定义 Python 字典,并让它们根据需要执行查找,允许您使用超时等缓存结果。

于 2009-02-09T06:04:10.837 回答