我有一个相当简单的命令,我偶尔运行:快速,原子表替换
BEGIN TRAN T1;
truncate table mytable
insert into mytable select name from myview
COMMIT TRAN T1;
该命令有两个丑陋的副作用:首先,mytable上选择请求经常超时。其次,在mytable上选择请求有时不会返回任何结果。我不在乎它是否返回事务前结果或事务后结果,但不希望它返回中间的任何内容或超时。我想到的一个解决方案,几乎肯定会有所帮助,首先将视图复制到临时表(因为视图有点贵)。这并不能完全解决问题,但它几乎肯定会使窗口变得狭窄,使问题被忽略。坦率地说,窗口很窄,可以忽略它现在,但我不喜欢忽略它。另一个解决方案是疯狂的过度工程,它将用两个表(例如双缓冲区)替换表,并调用最新的,正确填充的表。
是否有一个更优雅的方式来替换一个新的表?
您使用的是什么事务隔离级别? – mwigdahl 2009-12-08 19:49:01
我不知道如何设置它或我正在使用什么。 – Brian 2009-12-08 21:11:57