有什么好的策略可以更新活动数据库表?

| 我有一个数据库表,它会定期完全重新填充新数据。然后需要将此数据推入相应的实时数据库表中,以覆盖先前的实时数据。 随着表大小的增加,将数据推送到活动表所需的时间也增加了,该应用看起来像丢失了数据。 一种解决方案是将新数据推送到live_temp表中,然后在该表上运行SQL RENAME命令以将其重命名为活动表。重命名通常在不到一秒的时间内运行。这是解决此问题的“正确”方法吗? 还有其他解决此问题的策略或工具吗?谢谢。     
已邀请:
        我不喜欢以这种方式弄乱架构对象-它会使查询优化器混乱,而且我不知道在执行重命名时正在进行的任何事务将发生什么。 我更喜欢在表中添加一个version列,并有一个单独的表来保存当前版本。 这样,客户端代码变为
select * 
from myTable t, 
     myTable_currentVersion tcv
where t.versionID = tcv.CurrentVersion
这也保留了历史记录-可能有用或无效如果在设置CurrentVersion列后没有删除旧记录。     
        创建一个重复表-精确副本。 创建一个新表,该表除了跟踪\“最新\\”表外无所不包。 最新(表格) id(列)-保存包含“最新”数据的表的名称。 重新填充时,填充旧表并更新MostCurrent.id以反映该表。 现在,在将数据绑定到页面的应用程序中,绑定最新的表。     
        仅将更改推送到实时数据库表是否合适?对于大多数应用程序,我所做的更改很少。您应该能够在单个事务中应用所有更改。提交交易将使它们可见,并且桌上没有中断。 如果数据确实发生了完全更改,则可以配置数据库,以便可以在单个事务中替换所有数据。     

要回复问题请先登录注册