我希望您对此提出意见。我有一个 sql server 2008r2 Ent。埃德。64 位,16 核和 64GB RAM。截至 20111014,有一个 SQL Server 实例已完全修补。
最大内存设置为 60000MB。在线几天后根据任务管理器的可用内存量为 0。
如果我将最大内存更改为 53GB 以下,它会在几天后稳定下来并有一些可用内存。
根据任务管理器分配内存的是sql进程。我如何接受问题的真正含义?不用说,我已经做了很多测试,但还没有按照我的喜好解决这个问题。哦,当可用内存降至 0 空闲时,我们不会出现典型的内存饥饿滞后。
更新 1:
受到本页https://dba.stackexchange.com/a/7062/2744上另一个与 RAM 相关的 Q/A 的启发。我使用这两个来查看 RAM 的用途。
SELECT TOP ( 10 )
[type] AS [Memory Clerk Type] ,
SUM(single_pages_kb) AS [SPA Mem, Kb]
FROM sys.dm_os_memory_clerks
GROUP BY [type]
ORDER BY SUM(single_pages_kb) DESC
OPTION ( RECOMPILE ) ;
SELECT DB_NAME(database_id) AS [Database Name] ,
COUNT(*) * 8 / 1024.0 AS [Cached Size (MB)]
FROM sys.dm_os_buffer_descriptors …
Run Code Online (Sandbox Code Playgroud) 这是一个非常笼统的问题,所以我不提供太多具体信息。我对并行性及其可能的缺点更感兴趣。一般来说,我完全支持并行性,因为它是有用和积极的。
我似乎遇到越来越多的系统,这些系统拥有一个或多个存储过程,但这些存储过程存在过多的并行性问题。有没有什么好方法可以确定这是否真的是问题所在,或者是否还有其他潜在问题?
通常 sql 有点复杂,可能有 5 个或更多连接,还有一些 udf 甚至更复杂。到目前为止,我通过检查所有常见的性能问题以及更极端的情况(如“无法创建线程...”)以及同一存储过程的多个同时副本导致的死锁,发现了这些问题。
我真的很好奇你们是如何找到这些问题的,以及如何解决这些问题。重新编码?玩MAXDOP
(最大并行度)?等等...