SQL Server 数据页面缓存持续增长的疑难杂症

山寨DBA 2013-12-13 06:45:28
请大神们指教为什么我64位的服务器上查出来的“数据页面缓存”竟然会存在awe_allocated_kb,而且会不断的持续增大,如果不重启sql server服务,此值会一直增大,直到把服务器内存几乎占光。
select
type,
SUM(virtual_memory_reserved_kb) as VM_Reserved,
SUM(virtual_memory_committed_kb) as VM_Committed,
SUM(awe_allocated_kb) as AWE_Allocated, SUM(shared_memory_reserved_kb) as SM_Reserved,
SUM(shared_memory_committed_kb) as SM_Committed,
SUM(multi_pages_kb) as Multipage_Allocator,
SUM(single_pages_kb) as SinlgePage_Allocator
From sys.dm_os_memory_clerks
where type='MEMORYCLERK_SQLBUFFERPOOL'
group by type

附截图,就是其中红色部分得出的结果会持续不断的增加,按照常理64位系统是不支持AWE的,并且我也确实查了,我的服务器并没有开启AWE选项。求大神指点。
...全文
255 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
引用 7 楼 hwhmh2010 的回复:
我的服务器版本:windows server 2003 R2 Enterprise x64 Edition ,数据库是08 R2的版本,没有启用Lock Pages In Memory ,也没有启用AWE 。。。
按照楼上说的,可能是通过awe来把页锁定在内存吧,也就是awe显示的是锁定在内存中的页。
山寨DBA 2013-12-16
  • 打赏
  • 举报
回复
我的服务器版本:windows server 2003 R2 Enterprise x64 Edition ,数据库是08 R2的版本,没有启用Lock Pages In Memory ,也没有启用AWE 。。。
山寨DBA 2013-12-16
  • 打赏
  • 举报
回复
这个问题我自己已经琢磨清楚了。 1,实际上这个问题是由sql server独特的内存申请和管理机制导致的,因为我的服务器内存特别充足,所以在没有设置sql server max server memory的前提下sql server的memory clerk会尽可能多的申请系统的内存,用来缓存其database cache等信息,所以到致PF居高不下。 2,AWE并不是32位系统的专利,实际上AWE在64位系统上的效果比32位更好,只不过64位系统不需要这么做,因为直接买内存插上就可以了,系统就能访问到。 3,设置lock pages in memory权限,能有效防止其他应用程序抢夺sql server的内存资源,但是不能阻止windows系统收回sql server的内存资源,即:即使设置了lock pages in memory,windows也是可以拿走的。
  • 打赏
  • 举报
回复
"64 位操作系统上不需要 AWE,也不能在该系统上配置 AWE。" http://technet.microsoft.com/zh-cn/library/ms190731%28v=sql.105%29.aspx 上面MSDN上的那句话,慢容易误导人的,准确一点的说法是:64 位操作系统上不需要 AWE来访问超过4G地址空间的那部分地址,但是需要AWE API来分配locked page。
  • 打赏
  • 举报
回复
AWE在32跟64位下有不同的用处, 在32下AWE通过PAE是利用超过4G地址空间的那部分内存。 而在64位上,AWE的作用是锁定分配的内存,使之不paged。 设置一个maximum memory吧, 不过maximum memory设置为多少才算合适呢? 没有一个具体的计算公式,要根据通过一些performance counter来判断了。
KevinLiu 2013-12-13
  • 打赏
  • 举报
回复
引用 3 楼 stublue 的回复:
楼主用的什么版本的sql server? http://technet.microsoft.com/en-us/library/ms175019(v=sql.105).aspx 对于sql server 2012 awe_allocated_kb: Specifies the amount of memory in kilobytes (KB) locked in the physical memory and not paged out by the operating system. Is not nullable. 我的理解,这个已经不是指awe了。在2012中
查一下你的数据库是否启用了Lock Pages In Memory的功能,可能跟这个有关。
Leon_He2014 2013-12-13
  • 打赏
  • 举报
回复
楼主用的什么版本的sql server? http://technet.microsoft.com/en-us/library/ms175019(v=sql.105).aspx 对于sql server 2012 awe_allocated_kb: Specifies the amount of memory in kilobytes (KB) locked in the physical memory and not paged out by the operating system. Is not nullable. 我的理解,这个已经不是指awe了。在2012中
  • 打赏
  • 举报
回复
你的机器是64位的,为什么还需要用awe中的内存呢? 一般只有在系统是32位的情况下,才会开启awe,来让sql server使用更多的内存
小魚人 2013-12-13
  • 打赏
  • 举报
回复
設定最大內存不可以嗎?

22,206

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧