如何创建慢视图?

Posted

技术标签:

【中文标题】如何创建慢视图?【英文标题】: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 链接表只能是表或视图。存储过程是不可能的。 【参考方案1】:

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

BEGIN TRAN

SELECT *
FROM MyTable with(tablockx)

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

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

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

【讨论】:

超级方便,因为我可以手动定义,什么时候要查询返回。或者,可以在选择后放置一个WAITFOR DELAY '00:01:05' ROLLBACK,持续一段预定义的持续时间。 回滚大多是单线程的,所以最好提交。对于此语句,这无关紧要,因为事务日志保持不变,但供将来参考。

以上是关于如何创建慢视图?的主要内容,如果未能解决你的问题,请参考以下文章

SQL Server 视图查询慢,如何优化?请不要复制粘贴谢谢

mysql的 视图触发器事务存储过程函数索引与慢查询优化

unity游戏启动如何调出

iOS:在 willDisplayCell 中做动画时,UITableView 加速变慢

我如何使用视图和索引来提高性能

mysql的查询表与查询视图的问题