2011-12-28 56 views
1

我有一个包含天气信息的Postgres 9.1数据库。该数据集由大约310万行组成。如何批量刷新postgres数据库

从CSV文件加载数据需要大约2分钟的时间,创建多列索引需要的时间少一点。

每6个小时我需要完全刷新数据集。我目前的想法是,我会将新数据集导入到不同的数据库名称,例如“weather_imported”,一旦导入和索引创建完成,我将删除原始数据库并重命名导入的数据库。

从理论上讲,在这个操作过程中,客户端会继续查询数据库,但如果这样做有不良影响,我可能会安排让客户端默默地忽略一些错误。

问题:

  1. 意志战略的工作?

  2. 如果客户碰巧在DB下降的时间运行查询的 过程中,我的假设是 数据库将无法完成下降,直至查询中 成品 - 真的吗?

  3. 如果在删除数据库和重命名数据库之间发生查询会发生什么?我假设“数据库未找到” 错误。

  4. 有没有更好的策略?

回答

0

考虑以下策略作为替代:

  • 包含在主表中的“数据集版本”字段。
  • 将“当前数据集版本”存储在某个中央位置,并编写您的选择以仅搜索具有当前数据集版本的行。
  • 要更新数据集:
    1. 插入具有新数据集版本的所有数据。 (您可以使用更新作业的开始时间作为版本。)
    2. 将“当前数据集版本”自动更新为您刚插入的值。
    3. 删除版本号比您刚插入的版本号旧的所有数据。

普雷斯托 - 无需四处洗牌数据库。

+0

哈...更简单。咄。 – wadesworld 2011-12-28 07:02:32