Dar*_*lic 9 sql-server memory sql-server-2012
我从 System Center Operations Manager (SCOM) 收到错误消息。
如何解决这个错误?
SQL DB 2012 Engine Stolen Server Memory 过高。
我运行查询并得到这个计数器:
???????????????????????????????????????????????
? Stolen Server Memory (MB) ? 7354.773437 ?
? Lock Memory (MB) ? 106.195312 ?
? Free Memory (MB) ? 64.632812 ?
? Connection Memory (MB) ? 24.203125 ?
? Log Pool Memory (MB) ? 14.085937 ?
? Optimizer Memory (MB) ? 2.351562 ?
? Granted Workspace Memory (MB) ? 1.296875 ?
? Cursor memory usage ? 0.000000 ?
? Cursor memory usage ? 0.000000 ?
? Cursor memory usage ? 0.000000 ?
???????????????????????????????????????????????
Run Code Online (Sandbox Code Playgroud)
Sha*_*nky 12
你看到多少次这样的消息?如果是一次或两次,则可以忽略。
这篇较早的支持文章和如何使用 DBCC MEMORYSTATUS 中描述的“被盗内存”是:
被盗内存描述了用于排序或散列操作(查询工作区内存)的缓冲区,或用作分配的通用内存存储区以存储内部数据结构(例如锁、事务上下文和连接信息)的缓冲区. 不允许惰性写入器进程将 Stolen 缓冲区刷新出缓冲池。
内存通常取自缓冲池。如果您运行DBCC MEMORYSTATUS
并且输出显示高Stolen Pages,这意味着某些进程正在从缓冲池中窃取内存超过必要的内存,您需要找到该进程。
很可能有一些操作正在运行,执行了一个巨大的排序操作,同时 SQL Server 大量消耗内存,从而导致此消息。除非您面临一些 OOM 问题,否则此消息将更被视为警告。