我有一个 SQL 表和 VB.NET 应用程序。应用程序将 sql 表加载到数据表,然后通过获取一些网站开始将数据更新到记录,平均需要 1.4 秒才能用新数据填充数据表行。
现在我想知道是否可以使用 sql update 命令更新 sql 表中的单个记录并在每次更新记录时运行它,这意味着每 1.4 秒对单个记录运行更新命令
问题是其他应用程序同时使用该表,其中一个写入同一个表但其他列,在此过程中该表是否会被其他应用程序锁定?
我有一个 SQL 表和 VB.NET 应用程序。应用程序将 sql 表加载到数据表,然后通过获取一些网站开始将数据更新到记录,平均需要 1.4 秒才能用新数据填充数据表行。
现在我想知道是否可以使用 sql update 命令更新 sql 表中的单个记录并在每次更新记录时运行它,这意味着每 1.4 秒对单个记录运行更新命令
问题是其他应用程序同时使用该表,其中一个写入同一个表但其他列,在此过程中该表是否会被其他应用程序锁定?
您需要找出为什么更新一条记录需要 1.4 秒。可能是因为 VB.NET 需要做一些处理(虽然它是fetching some websites
)。例如,执行必要的计算可能需要 1.3 秒(客户端时间),更新一条记录可能需要 0.1 秒(服务器时间)。在这种情况下,您可以批量执行更新,以最大限度地减少数据库访问时间。
表会被锁定,但只会锁定很短的时间,因此您通常无需担心这一点。
默认情况下,SQL 不会锁定表,但您可能应该在更新表时锁定表,以防止这些应用程序进行更改时数据损坏。是的,性能会受到一点影响,但比因为它搞砸了而不得不重建它要好。这是对锁定的一个很好的解释
http://www.developerfusion.com/article/84509/managing-database-locks-in-sql-server/
如果其他应用程序只是在您更新时查询表,那么应该不会有任何影响,但是如果他们在更新过程中查询它,它们可能会得到一些奇怪的结果。锁定主要是关于2个人同时修改同一记录的风险。