我正在考虑为即将到来的项目选择各种MVCC-capable数据库,而PostgreSQL引起了我的注意。
我的程序要求大致如下:
1. 从当前版本的数据库中读取一些信息,在一个或多个事务中修改80-90%的数据,并将其写回(想象一下更新康威生命游戏中的网格,需要旧网格和新网格的状态)。 2. 提交后等待1-2分钟。在此期间,客户端可以针对新数据发出读取请求。 3. 重复进行。
数据库将被限制在2-4GB左右。
约90%的更改是对现有对象的更新,约5%是新对象,另外约5%是删除对象。
那么我的问题是,我能否合理地运行一个纯粹的VACUUM命令作为步骤1.5,每1-2分钟一次,并让PostgreSQL能够跟上每次可能进行的2-3+GB的更改?
我的程序要求大致如下:
1. 从当前版本的数据库中读取一些信息,在一个或多个事务中修改80-90%的数据,并将其写回(想象一下更新康威生命游戏中的网格,需要旧网格和新网格的状态)。 2. 提交后等待1-2分钟。在此期间,客户端可以针对新数据发出读取请求。 3. 重复进行。
数据库将被限制在2-4GB左右。
约90%的更改是对现有对象的更新,约5%是新对象,另外约5%是删除对象。
那么我的问题是,我能否合理地运行一个纯粹的VACUUM命令作为步骤1.5,每1-2分钟一次,并让PostgreSQL能够跟上每次可能进行的2-3+GB的更改?