【发布时间】:2008-12-08 10:41:13
【问题描述】:
我正在针对托管在 Microsoft SQL Server 中的数据库运行升级脚本。这需要一段时间。由于各种原因,有些查询不值得进一步优化。
我是唯一使用这个数据库的人:有没有办法让 SQL Server 不用担心事务/锁定?
例如,在 DELETE ... WHERE 上,SQL 是否需要在即将删除的行上获得排他锁?如果是这样,我可以告诉它不要打扰,因为这是唯一正在运行的查询?
【问题讨论】:
我正在针对托管在 Microsoft SQL Server 中的数据库运行升级脚本。这需要一段时间。由于各种原因,有些查询不值得进一步优化。
我是唯一使用这个数据库的人:有没有办法让 SQL Server 不用担心事务/锁定?
例如,在 DELETE ... WHERE 上,SQL 是否需要在即将删除的行上获得排他锁?如果是这样,我可以告诉它不要打扰,因为这是唯一正在运行的查询?
【问题讨论】:
见SQL Query Performance - Do you feel dirty? (Dirty Reads)。
编辑:这只是推测,但如果您是 SQL Server 的唯一连接,您可以使用WITH (TABLOCKX) 在表级别获得排他锁。您正在牺牲并发性,但它可以变得更快。
【讨论】:
关闭自动提交(又名隐式事务);你需要在最后做一个 commit() 。日志文件会相应变大,请确保您有足够的磁盘空间。 tempdb 在同一个磁盘上吗?
【讨论】: