基于事务的表编辑

时间:2012-09-12 21:55:18

标签: database sql-server-2008

我的任务是编写Java流程,将一些信息从旧版as400系统移动到我们新的SQL Server 2008安装。因为信息是在as400系统上管理的,所以这需要一个“随需应变”的解决方案(IE有人每天开一两次,它应该用最新版本的数据填充SQL Server)。这是一个使用频繁的数据集,因此我认为使用事务清除表并重建它是个好主意。该交易应该通过在我的流程中途请求数据来防止任何人意外地获取不完整的列表。这是管理这种情况的正确方法吗?

如果需要,可以进一步说明:

我是团队中较新的开发人员之一,其中一位资深开发人员正试图坚持我们执行“内存替换”流程。他希望更新两个表中存在的每个记录,插入不存在的新记录,然后删除不再存在的旧记录。我不相信这是一个好主意,特别是因为在整个过程中途的任何请求都会返回一个混乱的数据。我只是想知道从技术角度来看我应该有多强烈的努力。

1 个答案:

答案 0 :(得分:1)

根据填充所需的时间长短,如果表已锁定且无法访问,则从用户角度来看,可能无法获得可接受的性能。

考虑尝试这个(假设你没有子表)。创建两个具有相同结构的表。 创建视图,从table1中选择所有列。让您的流程填充table2。完成后,将视图更改为引用table2(应该花费几秒或几毫秒)。让所有应用程序代码引用视图而不是基表。执行此操作时,您可以构建一个大型表,并重建索引,用户甚至不会知道它,因为从他们的角度来看,唯一的延迟是重新创建视图所需的时间。我们已经完成了几次,重新创建表需要几分钟甚至几小时。当然,下次你反转它并填充第一个表然后再改变视图。