我有一个产品表,我们的生产数据库有4200万条记录。 为了建立索引和备份,我们在名为“ProductsDB”的同一个框中创建了另一个数据库
如果我将带有SSMS导入向导的产品表的所有记录从DB1导入DB2,它会在DB1(生产)上创建任何锁定或缓慢吗?
我不关心DB2(ProductsDB)在锁定或缓慢方面的问题,在我们调整代码之前无法访问它们。
这不是一个有效的答案,但我的经验是:
由于我无法找到问题的“确切”答案(我在线搜索了很多),我冒了风险并在此表上使用了导入向导。完成时间不到5分钟,并且没有注意到Web服务器或数据库服务器上的性能/锁定问题。
此交易的缺点; - 它没有创建任何主键 - 它没有从源表
创建任何现有索引我需要再次创建它们,但它仍然很好,这就是我想要的。
希望这有助于将来的参考,我会继续寻找它。
答案 0 :(得分:2)
This文章可以帮助您。
部分内容:
Bulk Update Locks
Bulk update (BU) locks are used when bulk copying data into a table and either the TABLOCK hint is specified or the table lock on bulk load table option is set using sp_tableoption. Bulk update (BU) locks allow processes to bulk copy data concurrently into the same table while preventing other processes that are not bulk copying data from accessing the table.
答案 1 :(得分:2)
您可以使用Table Hints来阻止SQL Server锁定数据。以NOLOCK为例。
请注意,这可能非常危险,因为您可能最终会读取随后回滚的未提交数据;所以要知道你在做什么并小心。