相关疑难解决方法(0)

SQL Server 随着时间的推移变得越来越慢,直到我们必须重新启动它

我们有一个混合 OLAP/OLTP 工作负载的数据库。查询是非常临时的,并且是在中间层应用服务器中动态创建的。当我们启动服务器时,性能还算可以接受,但是内存消耗会越来越多,直到所有可用内存(30GB)耗尽。之后,系统变得越来越慢。

命令之类的Dbcc freeproccache无效。

没有多少交易select * from sys.dm_tran_session_transactions(不超过系统正常时),有时这个列表是空的。

第一个结果dbcc memorystatus

VM Reserved               42136628
VM Committed               1487176
Locked Pages Allocated    24994048
Reserved Memory               1024
Reserved Memory In Use           0
Run Code Online (Sandbox Code Playgroud)

重新启动 SQL Server 可以暂时解决问题。

  1. 是什么导致了这种行为?如何避免?
  2. 如果真正解决原因太困难,是否有命令强制 SQL Server 实际释放所有内存而无需完全重启 DBMS?

服务器在专用硬件(不是虚拟机)上运行。我们有一些预定的工作,但我们暂时禁用了它们,没有任何变化。在同一台服务器上还有其他中层应用程序运行,但它们使用的内存不超过 2GB,CPU 可以忽略不计,并且几乎没有 I/O。我们重新启动了所有此类应用程序,没有任何更改。

performance sql-server memory sql-server-2008-r2

8
推荐指数
1
解决办法
3万
查看次数

调查高 SQL 等待,特别是 LCK_M_U

最近我一直在努力解决 SQL 服务器的性能问题,尽管我们已经修复了配置中的大量基本错误,但它的性能仍然很差。澄清这不是整体性能,而是相当频繁的超时(来自客户端应用程序)。 以前我曾将内存视为原因,但现在已解决,我们仍然得到相同的行为。

查看来自管理数据仓库的图表,我可以看到 LCK_M_U/X/IX 在用户遇到超时时导致了我们的大部分等待。我正在阅读的所有内容都表明我需要查看正在运行的查询和进程,但我还没有找到任何针对我可以理解的级别的内容。如下图所示,锁似乎尖峰,这与用户端的错误一致。是否有一个聪明的 DMV 或一些我可以解决的问题,以尝试找出正在运行的查询正在创建锁定?是否是通过跟踪来查找详细信息的情况?如果信息不清楚,任何指导都非常感谢和道歉。

在此处输入图片说明

performance sql-server-2008 wait-types

7
推荐指数
2
解决办法
2万
查看次数