数据库
首页 > 数据库> > SQLServer内存用不上,执行计划不缓存,磁盘压力大

SQLServer内存用不上,执行计划不缓存,磁盘压力大

作者:互联网

  最近在项目中遇到这样一个问题,客户反馈卡顿,但是卡顿语句已经很难优化了,而且卡顿的地方也很多。此时数据库服务器性能指标:cpu40%,磁盘等待10,内存7G/64G。

明显感觉到服务器有性能没充分发挥,都说SQLServer是非常吃内存的,内存一但吃了就不会吐出来,但是这个项目的内存却还有这么多,显然不对,我问了公司的一些老手,他们让我不用管内存,只要磁盘和CPU没爆就没问题。但是苦于内存不够,执行计划一直都没缓存,那么就无法通过一些执行计划有关的视图查询出消耗CPU、磁盘性能较多语句。后来经过几番百度,原来是因为配置的AWE分配内存没有开启,而且SQLServer是32位的,导致SQLServer最多使用服务器的4G内存。后来开启AWE配置,并且重启数据库服务后内存终于飙了上去。有了足够的内存之后,CPU和磁盘的压力也明显小了,因为查询就可以从内存读取数据了,可以更多的使用内存而不是tempdb了,cpu也因为执行计划的缓存而减少了使用。

 

总结: CPU和磁盘的压力可能来自于内存过低,就像木桶的短板决定木桶的容量,内存不能决定,但是能很大程度影响。

    内存不够导致执行计划无法缓存,一些系统视图 例如:sys.dm_exec_query_stats没有执行计划的数据

    内存使用上不去是因为在32位的SQLServer中没有开启AWE分配内存

 

标签:缓存,SQLServer,内存,用不上,磁盘,AWE,CPU
来源: https://www.cnblogs.com/chenshiheng/p/12418329.html