2009-02-09 50 views
1

我打算讓一個python腳本在2,433,000行上每秒執行很多更新。我目前正在試圖將python中的動態列作爲python字典中的值。然而,讓我的python詞典與其他欄目的變化保持同步變得越來越困難或無法實現。postgresql中的動態數據

我知道我可以將autovacuum設置爲overdrive,但我想知道這是否足以趕上絕對數量的UPDATE。如果只有我可以將python變量關聯到每行...

我擔心VACUUM和磁盤寫入開銷會殺死我的服務器?

有關如何將極其動態變量與行/鍵關聯的建議?

THX

回答

3

PostgreSQL支持使用LISTENNOTIFY命令異步通知。應用程序(客戶端)偵聽使用通知名稱的通知(例如「table_updated」)。可以使數據庫本身手動發出通知,即在執行插入或修改的代碼(在進行大量更新時有用,允許批量通知)或在行更新TRIGGER內自動發出通知。

您可以使用此類通知來保持您的數據結構處於最新狀態。

或者(或者你可以結合以上使用),您可以自定義的Python字典,通過重寫__getitem__()has_key(),方法,讓他們執行查找根據需要,讓您緩存使用超時等結果

+0

來自PostgreSQL文檔:「NOTIFY在一個重要方面的行爲類似於Unix信號:如果相同的通知名稱被快速連續多次發信號通知,則接收者可能只獲得一次NOTIFY執行的通知事件。重寫__getitem __()代替保持同步。 – 2009-02-11 08:56:11