问题已在标题中,但我会在这里提供一些背景知识。
我有一个表myTable
,通过nHibernate从Web应用程序中查询。它包含500K行。
每隔一段时间(让我们说每15分钟一次。)我需要刷新这个表格内容,即删除所有内容并插入另外500K行(可能不同)。
免责声明:是的,我知道这不是正确的架构:-)但我还是需要理解这种行为。
由于插入大约需要60秒,这就是我这样做的方式:
myTable_backup
myTable
重命名为myTable_temp
myTable_backup
重命名为myTable
myTable_temp
重命名为myTable_backup
第2-4点用于快速交换表格,以便myTable
几乎始终可用。
尽管我有最好的意图,但是在尝试访问myTable
时我得到了SQL超时 - 这种情况或多或少地发生在执行“重命名”的时候。
我的问题是:为什么?
可以,myTable
不可用,因为500K插入后索引仍在重建吗?虽然它已经设法更改名称,但仍然有背景重新索引?
如果是这样,可以在第1点和第2点之间明确执行的myTable_backup
上重建索引,有帮助吗?
然后弹出另一个问题,这是我对本文的官方问题:是否重点3 myTable_backup
重命名为myTable
导致索引重建?这对我来说似乎是一个奇怪的想法,但是它可以解释我的超时(索引重建大约需要10秒)。
谢谢, PKD