SQL SERVER2005 内存问题 最近公司刚买新服务器32G内存 系统是2008的 SQL是2005 64位的。 只要数据量一多,sql内存就占用到31G去了,想问一些有什么好的方法能能够解决(除了重启sql服务以外)。sql server 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 如果是数据库专用服务器,可以考虑设置最大内存(MAX MEMEORY)至28左右http://msdn.microsoft.com/en-us/library/ms178067.aspx 对于内存,mssql 就是个吃货! 有多少来多少! 同上面方法,设定最大内存数 设最大内存是必要的,但是我相信对于所有关系数据库管理系统,都是有多少吃多少的。要重点理解内存存了什么?正常来说主要是执行计划缓存和数据缓存,如果是这些,那么内存占了很多完全没什么可担心的。可以用性能计数器来监控某些指标值,如果有问题,才应该处理内存,不然一般不成问题。另外强烈建议不要把其他应用和SQLServer放到一起抢资源。这些计数器可以考虑:Memory: Available Mbytes:提供系统上可用内存的数量。Memory: Pages/sec:显示有多少页被用于读或写入硬盘,这些基于硬页面错误。Paging File:%Usage:显示挂起的总数的百分比。SQL Server: Buffer Manager: Buffer cache hit ratio:返回SQLServer从缓存但不是从硬盘返回的数据的百分比。SQL Server: Buffer Manager: Page life expectancy:显示数据驻留在内存的平均秒数。SQL Server: Buffer Manager: Memory Grants Pending:等待内存工作区授予的进程数。首先先检查Memory: Available Mbytes,这个值意味着系统的可用内存。如果发现这个值经常很低,可能表示服务器内存不足,在生产数据库中,这个值可以使用GB为单位。然后检查Memory: Pages/sec ,以为这因为硬页面错误导致的从磁盘读或写页面。这个值如果长期高于20,意味着内存不足使得应用程序使用虚拟内存,从而导致挂起。接着是Memory: pages/sec ,同时也要检查Paging File:%Usage去预估内存挂起。如果这个值经常超过20%,可能意味着内存不足。SQL Server: Buffer Manager: Buffer cache hit ratio:意味着数据从缓存中读取的次数,比较合理的值为大于90%。如果该值很低,可能内存不足或者需要检查索引和查询。如果你需要获得大量数据,这一步可能就会占用大量内存然后引起SQLServer从磁盘读数据而不是从内存。检查索引,确保在大表中能尽可能笔描扫描。并尽可能限制查询返回的结果行。检查SQL Server: Buffer Manager: Page life expectancy的值,表示数据页驻留在内存的秒数。微软建议最少300秒。如果在一个实例中经常低于300秒,意味着数据保留的时间少于5分钟就被移出内存。如果SQL Server: Memory Manager: Memory Grants Pending经常建议等待进程,你可能需要增加服务器的内存了。不管什么原因,如果你发现内存不足和挂起发生得比较频繁,你首先应该检查是否有非SQL Server的其他应用或者服务耗费了比SQL Server更加多的内存。如果你发现这些应用或者服务,尝试移到别的服务器。如果做不到,那么需要增加更多的内存,以供SQLServer使用。如果服务器仅仅工SQL Server使用且没有上面说的情况,那么要分析你的查询和索引,以确保他们是最优化的。如果已经优化好,还是存在这些问题,那么才需要考虑增加内存。除了可靠性和性能监视器,还可以使用SQL Server Profiler来监控性能,创建一个用户自定义收集器并存为文件,当你从性能监视器中获取性能数据时,SQL Server Profiler会同步运行。一旦你完成收集,可以把性能数据导入到SQLServer Profiler中供任何时候分析。 默认配置适合95%的情况,不用折腾如果要限制内存使用,可SP_Configure Max memoery如果是数据库专用服务器,一切保持默认即可 数据库通过内存缓存数据,这样查询的时候性能才会提升,如果每次直接从磁盘读数据就该哭了。如果内存使用多,但是SQL SERVER没有错误信息就不用担心。当然如果怕出问题可以配置最大内存使用。 内存不给sql,还想给谁(别的应用、服务)?不管设多少,sql都是按一定的算法切换(硬盘-内存)的,切换多了,肯定就慢了如果有好的索引,会比扫描数据会少读很多 Excel导入SQL Server时出现为空的数据,,,如果处理, 这种查询sql如何写? 打开表后在表中输入具体内容时弹出“键列信息不足或不正确,更新影响到多行”是什么意思? 如何删除数据表中重复的记录 应用与SQL服务器在同一台机器和在局域网内的情况,均得到同样的结果。即CPU,READ两个值在情况1时都很大,不知为什么? 数据库恢复 存储过程怎么传表名? SQL性能优化? MSSQL 数据同步 订阅超时 如何处理 怎样把数据转过来??? SQL SERVER内存使用问题。 SQL Server2005做的软件如何安装成单机版
http://msdn.microsoft.com/en-us/library/ms178067.aspx
这些计数器可以考虑:
Memory: Available Mbytes:提供系统上可用内存的数量。
Memory: Pages/sec:显示有多少页被用于读或写入硬盘,这些基于硬页面错误。
Paging File:%Usage:显示挂起的总数的百分比。
SQL Server: Buffer Manager: Buffer cache hit ratio:返回SQLServer从缓存但不是从硬盘返回的数据的百分比。
SQL Server: Buffer Manager: Page life expectancy:显示数据驻留在内存的平均秒数。
SQL Server: Buffer Manager: Memory Grants Pending:等待内存工作区授予的进程数。首先先检查Memory: Available Mbytes,这个值意味着系统的可用内存。如果发现这个值经常很低,可能表示服务器内存不足,在生产数据库中,这个值可以使用GB为单位。
然后检查Memory: Pages/sec ,以为这因为硬页面错误导致的从磁盘读或写页面。这个值如果长期高于20,意味着内存不足使得应用程序使用虚拟内存,从而导致挂起。
接着是Memory: pages/sec ,同时也要检查Paging File:%Usage去预估内存挂起。如果这个值经常超过20%,可能意味着内存不足。
SQL Server: Buffer Manager: Buffer cache hit ratio:意味着数据从缓存中读取的次数,比较合理的值为大于90%。如果该值很低,可能内存不足或者需要检查索引和查询。如果你需要获得大量数据,这一步可能就会占用大量内存然后引起SQLServer从磁盘读数据而不是从内存。检查索引,确保在大表中能尽可能笔描扫描。并尽可能限制查询返回的结果行。
检查SQL Server: Buffer Manager: Page life expectancy的值,表示数据页驻留在内存的秒数。微软建议最少300秒。如果在一个实例中经常低于300秒,意味着数据保留的时间少于5分钟就被移出内存。
如果SQL Server: Memory Manager: Memory Grants Pending经常建议等待进程,你可能需要增加服务器的内存了。
不管什么原因,如果你发现内存不足和挂起发生得比较频繁,你首先应该检查是否有非SQL Server的其他应用或者服务耗费了比SQL Server更加多的内存。如果你发现这些应用或者服务,尝试移到别的服务器。如果做不到,那么需要增加更多的内存,以供SQLServer使用。
如果服务器仅仅工SQL Server使用且没有上面说的情况,那么要分析你的查询和索引,以确保他们是最优化的。如果已经优化好,还是存在这些问题,那么才需要考虑增加内存。
除了可靠性和性能监视器,还可以使用SQL Server Profiler来监控性能,创建一个用户自定义收集器并存为文件,当你从性能监视器中获取性能数据时,SQL Server Profiler会同步运行。一旦你完成收集,可以把性能数据导入到SQLServer Profiler中供任何时候分析。
如果要限制内存使用,可SP_Configure Max memoery
如果是数据库专用服务器,一切保持默认即可
如果有好的索引,会比扫描数据会少读很多