数据库服务器吃内存疑问

0
最近用户反映页面读取插入数据速度比以前慢很多

我看了数据库服务器
发现物理内存总共48G,已经占用了46个G。。。
1.我想问 为何内存会吃的那么厉害
2.应该如何优化调整

谢谢
已邀请:
1

天涯浪子 - SSRS开发、数据仓库设计 2013-11-16 回答

个人猜测:
1、过多的增删改操作,导致碎片增多。
2、库越来越大,索引效率降低,或者以前小表的时候即使没有索引都没所谓,现在很大了就显示出重要性。
3、有新的程序部署,影响了既有性能。
4、数据的增长没有计划性,比如短期内操作数量巨大的数据。
5、没有定期维护,到了一定时间段,就从量变到质变。
结论:
1、用性能监视器看看CPU,磁盘、内存等资源,参考网上的“建议”,初步评估和定位问题再哪里。
2、借助sqlserver自带功能,如profiler、dmv、DTA等来找到比较大开销的语句。进行优化。
3、做好定期维护,如索引维护、磁盘空间维护等。
0

梁勇 - 天道酬勤、上善若水。爱好商业智能 2013-11-16 回答

1.首先,占用那么多内存并不表示,就不正常。

2.但如果觉得查询变慢了,那就得关注一下了。但查询变慢,和占用那么多的内存,并没有什么必然联系。

3.为了能了解是否真的有问题,首先,你得知道,这些内存都是花在哪儿了。

一般的内存,主要是由数据库页、sql执行计划、网络包等,如果数据大部分都是缓存的数据,那应该问题不大。但如果大部分都由sql执行计划,那就有问题了,可能是由于没有使用绑定变量,导致大量的重复语句,都缓存在内存中。


4.接下来,是查询为什么变慢的问题。
向上面说的,可能是由于表经常进行插入,删除,修改,导致了存储碎片,这样会导致查询同样的数据,需要更多的IO,也需要更多的内存,那么效率自然下降,同时内存的效率下降,间接导致需要吃更多的内存,这个可以通过重建表和索引,来完成。

还有,就是随着数据的变化,表的统计信息不够准确,导致查询优化器不能够生成足够优化的执行计划,
那么查询自然会慢,这个主要是通过update statistics 表 ,来更新统计信息就可以。

还有最关键的是,你的查询是否通过索引来访问数据,因为索引的效率更高,否则,用表扫描的话,效率非常差。

要回复问题请先登录注册