也许是个愚蠢的问题,但由于我不知道数据库引擎是如何在引擎罩下工作的,所以我不知道答案。
更特殊的是,我了解到sql总是调整查询,使其成为服务器最优化的查询。不仅要优化速度,还要进行资源管理。
那么,我对查询的调优会不会比原始的长期运行的查询对服务器资源的影响更大呢?
如果是这样的话,有什么常见的方法可以使服务器关闭试图调优查询呢?
例如:如果我有一个运行时间为1000万的查询,并且优化到30时,那么这30秒对服务器性能的影响会比10分钟的查询更大吗?
发布于 2017-01-30 14:32:32
查询在执行速度更快时可以消耗更多的服务器资源。
例如,使用SOTRT_IN_TEMPDB = ON重新创建索引会影响tempdb。
此选项增加了用于创建索引的临时磁盘空间的数量,该选项可以减少在与用户数据库不同的一组磁盘上创建或重新生成索引所需的时间。https://msdn.microsoft.com/en-us/library/ms188281.aspx
发布于 2017-01-30 16:47:06
在运行过程中,运行速度更快的查询会对整个服务器性能产生更大的影响,甚至在您询问的极端程度上也是如此。
例如,对整个表进行10分钟的基于游标的更新可能需要30秒的单个update语句,但在这30秒期间对IO和其他对同一表的读写查询的阻塞/死锁都会产生巨大影响。
对于读取查询,时间差可能没有那么极端,但是请考虑一个用于运行串行的查询,但是当重写时,这个查询是并行的。在这种情况下,我相信(但我不能完全确定),当查询启动时,它将获得最免费的CPU核心,而其他传入的查询将需要排队等待剩余的核心,直到大型查询完成为止。并行IO消耗也可能减缓其他查询的速度。
https://dba.stackexchange.com/questions/162623
复制相似问题