日期:2014-05-17  浏览次数:20674 次

SQLserver2008 物理内存高占用和存储过程效率优化方案实解
环境:win2008r2 8g内存 4核cpu sql2008 
配置:最小服务区内存0 MB 最高服务器内存6500 MB

问题描述:开机后第一次执行复杂的存储过程且效率最好,但以后物理内存就居高不下、而且重复执行同一大数据量存储过程效率就越来越低下,分析是缓冲区独占并逐步增加,尝试删除缓冲区:
DBCC FREEPROCCACHE 
DBCC Freesessioncache
DBCC freesystemcache('All')
DBCC DROPCLEANBUFFERS 
内存仍高居不下在95以上,且执行效率时间越来越长,而sqlserver进程所占内存只有 125512 k显示没使用多少内存,
请教优化或管理方法能够提高存储过程的执行效率
------解决方案--------------------
用sql profile跟踪一下
------解决方案--------------------
需要以下结果来分析:

SELECT @@VERSION

SELECT *,cntr_value*1.0/1024/1024 as Memory_GB
FROM sys.dm_os_performance_counters
WHERE ([OBJECT_NAME] like '%Memory Manager%') and
counter_name in( 'Target Server Memory (KB)','Total Server Memory (KB)')

SELECT 
SUM(single_pages_kb)*1.0/1024 as total_single_pages_MB, 
SUM(multi_pages_kb)*1.0/1024 as total_multi_pages_MB, 
SUM(virtual_memory_reserved_kb)*1.0/1024 as total_virtual_memory_reserved_MB, 
SUM(virtual_memory_committed_kb)*1.0/1024 as total_virtual_memory_committed_MB,
SUM(awe_allocated_kb)*1.0/1024 as total_awe_allocated_MB,
SUM(shared_memory_reserved_kb)*1.0/1024 as total_shared_memory_reserved_MB,
SUM(shared_memory_committed_kb)*1.0/1024 as total_shared_memory_committed_MB
FROM sys.dm_os_memory_clerks

------解决方案--------------------
希望能从sqlserver管理角度来优化和配置,脚本的跟踪和优化一直在进行、不知道如何能将服务器资源最大限度提供给sqlserver服务来提高数据处理效率?
------解决方案--------------------
这只有实地<远程即可>评估、分析才能下结论。。估计八成是开发质量问题。。若是有偿,乐意接手
------解决方案--------------------
SQL2005 用了才多久 就换2008了
------解决方案--------------------
这是真的还是吓我啊。。。。本来想尝试08。。。的