【问题标题】:How to create a slow view?如何创建慢视图?
【发布时间】:2020-09-23 08:36:18
【问题描述】:

我想测试我的 MS-Access 应用程序(使用链接表)的超时行为。进行慢速数据库查询会非常方便。如果可能,即使有预定义的查询持续时间。

我试过这个:

CREATE VIEW slow_view AS
WAITFOR DELAY '00:01:05'
SELECT 1 AS one

WAITFOR 不允许在 tsql 视图定义中。

如何在 SQL Server 中创建导致超时的慢速数据库视图?

【问题讨论】:

  • VIEW 只是一个由SELECT 定义的虚拟表。它不能有像WAITFOR 这样的命令,它实际上可以有一个导致SELECT 的语句。这听起来像是XY Problem,但如果您必须这样做,请使用不同的对象类型,例如存储过程。
  • @Larnu MS-Access 链接表只能是表或视图。存储过程是不可能的。

标签: sql-server performance sql-server-2012 query-performance


【解决方案1】:

一种选择是锁定一张桌子。 在 SSMS 或其他工具中,使用开始事务执行查询,但不包括提交或回滚。

BEGIN TRAN

SELECT *
FROM MyTable with(tablockx)

然后尝试从不同的会话访问同一张表,它会一直等到事务完成/回滚。

在 SSMS 中,左侧是锁定查询,右侧是阻塞查询。

要停止阻塞查询,您可以在锁定查询会话中执行COMMIT,方法是选择COMMIT 并执行它F5

【讨论】:

  • 超级方便,因为我可以手动定义,什么时候要查询返回。或者,可以在选择后放置一个WAITFOR DELAY '00:01:05' ROLLBACK,持续一段预定义的持续时间。
  • 回滚大多是单线程的,所以最好提交。对于此语句,这无关紧要,因为事务日志保持不变,但供将来参考。
猜你喜欢
  • 2012-03-07
  • 2012-06-18
  • 2012-01-04
  • 2019-08-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-25
相关资源
最近更新 更多