我只是想知道TABLOCK是否会提高BULK INSERT的性能?
基于中的第一个答案https://dba.stackexchange.com/questions/165966/how-does-one-investigate-the-performance-of-a-bulk-insert-statement,看来TABLOCK会的。
根据官方文件https://learn.microsoft.com/en-us/sql/t-sql/statements/bulk-insert-transact-sql?view=sql-server-ver15,它说"如果一个表没有索引并且指定了TABLOCK,那么多个客户端可以同时加载该表。"但对于我的情况,只有一个会话需要将数据大容量插入数据库,所以我似乎根本不需要指定TABLOCK。
我在上问过这个问题https://social.msdn.microsoft.com/Forums/sqlserver/en-US/a957cd37-ec96-4beb-8a4b-03d783c7f91e/whether-tablock-will-improve-the-performance-of-bulk-insert-or-not?forum=transactsql但是没有得到一个满意的答案,所以我不得不把这个问题放在这里。
感谢
如果您的数据插入到只有一个会话的表中,表锁对您没有任何好处,但当许多会话可以将数据插入到表中时,表锁可以减少过程中的锁争用。但当您的表具有表锁定时,另一个会话无法访问该表。