我有一个较早执行缓慢的查询。后来我发现它没有并行运行,这使得查询执行速度变慢。
查询涉及一个 big view,然后使用大量temp tablesand查询视图sub query。
我UDF从视图中删除了一个并使用inline functions并使用了一个标量TVF,然后它开始在parallel execution.
这几天一切顺利,有一天我注意到查询运行缓慢。于是查了一下执行计划,发现查询是在串行模式下执行的。我检查了查询的计划缓存,我看到了很多涉及该视图的缓存计划。我删除了不并行的计划,然后查询运行得很快。
现在我每天早上都这样做以强制查询并行运行。
额外细节:
如何强制查询永远并行运行?
performance sql-server optimization parallelism plan-cache query-performance
我从我的 .net 应用程序中收到以下错误。
Source: xxx.Services.xxx.xxx.xxxx.xxxx.xxxxRequest
---
System.Data.Entity.Core.EntityException: The underlying provider failed on Open. ---> System.InvalidOperationException: Timeout expired. The timeout period elapsed prior to obtaining a connection from the pool. This may have occurred because all pooled connections were in use and max pool size was reached.
Run Code Online (Sandbox Code Playgroud)
我看过几篇关于这个连接池错误的帖子。我已经阅读了其中的大部分内容,我明白为什么会发生这种情况,以及应用程序端的可能解决方案,比如关闭应用程序打开的连接。这些是我的理解:
我如何从数据库端监控这一点。我看到了一些建议,例如使用 sp_who 或 sp_who2 查看现有会话。当我看到这些错误时执行 sp_who2 时,我看到很多活动会话,但是我怎么能看到连接池池下的信息和连接。问题:
我注意到当问题发生时,通常运行得更快的查询会变慢。
在 SQL Server 2016 数据库服务器上,我几乎没有查询非常慢并且需要更多内存(查询未优化)。这使得整个数据库变慢,因为许多用户正在运行相同的查询。这导致其他查询等待。我CXCONSUMER等待(由于并行执行)和RESOURCE_SEMAPHORE.
所以这造成了内存压力(我相信这些缓慢的查询正在为其他查询造成内存争用,进而造成内存压力),我认为这导致我的计划缓存以固定的时间间隔清除。
我读到默认情况下Memory Grant %为 25%。我正在考虑增加这 25% 来为查询提供内存。我现在正在尝试暂时解决这个问题。
未优化的查询是 LINQ 查询,更改将需要团队一些时间。
所以请建议在资源调控器中增加Memory Grant %是否是一个好主意?
我总共有 128GB RAM,其中 75% (102 GB) 分配给 SQL Server。
我知道这是一个笼统的问题,但我必须澄清一些基本问题。
我知道当对 SQL Server 数据库表进行写入时,对该表的读取将不得不等待。
我的问题是:我正在使用的 SQL 数据库服务器暴露于多次写入和少量读取。一些 SSRS 报告也在同一台服务器上运行。
我知道最好从同一数据库的重复实例执行报告。但是对于一些报表,是否值得设置一个重复的实例进行报表?
有时我会抱怨某些报告运行缓慢。
DELETE我的生产 SQL 服务器中的查询导致死锁。我知道 DELETE 导致了这种情况,因为我检查了扩展事件并检查了死锁 XML 并发现此 DELETE 正在阻塞,这最终导致死锁。
所以DELETE是发生在两个表格,TB1和TB2。tb1 的主键在 tb2 中可用作外键,并CASCADE DELETE在 tb2 外键中使用。
我什Allow Page Locks至FALSE在 tb1 和 tb2 中创建了聚集索引,但仍然没有运气。
我想READ COMMITTED SNAPSHOT在我的数据库中尝试之前尝试所有其他选项。
任何帮助将不胜感激。
附加信息:
使用READ COMMITTED SNAPSHOT也是一个挑战,因为它涉及风险。
这是 XDL
<deadlock>
<victim-list>
<victimProcess id="process257a65d6ca8" />
</victim-list>
<process-list>
<process id="process257a65d6ca8" taskpriority="0" logused="6024" waitresource="KEY: 6:72057794784329728 (bb7a6e52eae1)" waittime="4485" ownerId="45816472292" transactionname="user_transaction" lasttranstarted="2019-01-08T11:30:06.837" XDES="0x24883ec2a70" lockMode="RangeS-U" schedulerid="26" kpid="39320" status="suspended" spid="217" sbid="2" …Run Code Online (Sandbox Code Playgroud) sql-server ×5
locking ×2
blocking ×1
deadlock ×1
delete ×1
memory ×1
optimization ×1
parallelism ×1
performance ×1
plan-cache ×1
reporting ×1
timeout ×1
transaction ×1
waits ×1