【问题标题】:Windows Server 2012 R2 & SQL Server 2012 Memory low usageWindows Server 2012 R2 和 SQL Server 2012 内存使用率低
【发布时间】:2016-02-07 07:39:59
【问题描述】:

我找不到我的问题的解决方案...

我们安装了 Windows Server 2012 R2 和 SQL Server 2012。我还没有安装这个服务器,所以我不能说是否在启动时为每个用户分配了一些资源。

我的问题是,如果我通过远程桌面连接到服务器并运行查询,即使它是一个简短的查询,它们也需要很长时间才能执行,索引/键已设置但我在任务管理器中发现我无法克服SQL Server 使用 200GB 内存。

SQL Server 中的最大内存设置为 2147483647

如果我的帐户只分配了一些内存,我在哪里可以找到?

谢谢

【问题讨论】:

    标签: sql-server windows-server-2012-r2


    【解决方案1】:

    内存使用可能并不总是一个问题。您可以使用以下 dmvs 检查查询是否正在等待内存授予

    --below dmv 给了我正在等待内存授予的查询文本

    select * from sys.dm_exec_query_memory_grants mg
     join
    sys.dm_exec_requests ec
     on ec.session_id=mg.session_id
     --left join
     --sys.dm_exec_connections con
     --on con.session_id=ec.session_id
     outer apply
     sys.dm_exec_sql_text(ec.sql_handle) txt
     outer apply
     sys.dm_exec_query_plan(ec.plan_handle) qp
    

    您还可以检查哪个内存管理员使用的内存最多

    select (sum(pages_kb)*128)/1024 as 'sizein_mb',type as 'clerkttype'
    from sys.dm_os_memory_clerks
    group by type
    order by (sum(pages_kb)*128)/1024 desc
    

    在此之前,您可能需要检查您是否有锁定、阻塞

    select 
     session_id,status,blocking_session_id,wait_type,txt.text from sys.dm_exec_requests ec
    cross apply
    sys.dm_exec_sql_text(ec.sql_handle) txt
    

    希望这有助于您进行故障排除。从任务管理器检查内存不会让您获得准确的统计数据。.下面的问题和答案有理由和一些很好的链接来进一步检查。

    https://dba.stackexchange.com/questions/35418/why-is-sql-server-memory-showing-in-task-manager

    【讨论】:

    • [results][1] [1]: i.stack.imgur.com/DTyXy.jpg 我不确定问题出在哪里,我们有其他服务器,CPU 更少,但 2 TB 内存,运行相同的查询集有 20 分钟,在这台服务器上需要 2 小时 .. 表和键/索引是相同的 ...
    • 您所问的问题似乎对于即使是小查询也很慢,根据您的截图,似乎只有一个查询 (UDF) 存在近 200000 KB 的内存授予问题,您能否确认如果这是单独的问题还是普遍存在的问题?
    • 不仅如此,运行的查询确实做得很糟糕,它来自以前的同事,我重写了所有表,但甚至加入了 3 个表,其中 1 个在其他 44000 周围有 1000 行,第 3 个是日历需要执行时间真的很长,7分钟。在其他服务器上,它在 20 秒内完成..
    • 请发布查询和执行计划
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-23
    • 1970-01-01
    • 1970-01-01
    • 2014-03-27
    • 1970-01-01
    相关资源
    最近更新 更多