SQL SERVER 7.0,NT 4.0 SERVER,在SQL SERVER 使用几天后,内存占用很大,有5\6百兆大,我看了一下,是缓存大.我平时一直使用SQL SERVER,数据量比较大,但数据量没有这么大. 有没有办法知道问题出在那里,如何解决.
还是我开的数据库的临时库变的很大,有没有办法变小.
...全文
5936打赏收藏
SQL SERVER 占用内存不断变大,有没有办法解决或知道问题所在
SQL SERVER 7.0,NT 4.0 SERVER,在SQL SERVER 使用几天后,内存占用很大,有5\6百兆大,我看了一下,是缓存大.我平时一直使用SQL SERVER,数据量比较大,但数据量没有这么大. 有没有办法知道问题出在那里,如何解决. 还是我开的数据库的临时库变的很大,有没有办法变小.
查询内存分配
check the memory allocate in master sysperinfo table.loke below:
SELECT 'Procedure Cache Allocated',
CONVERT(int,((CONVERT(numeric(10,2),cntr_value) * 8192)/1024)/1024)
as 'MBs'
from master.dbo.sysperfinfo where object_name = 'SQLServer:Buffer Manager' and
counter_name = 'Procedure cache pages'
UNION
SELECT 'Buffer Cache database pages',
CONVERT(int,((CONVERT(numeric(10,2),cntr_value)* 8192)/1024)/1024)
as 'MBs'
from master.dbo.sysperfinfo where object_name = 'SQLServer:Buffer Manager' and
counter_name = 'Database pages'
UNION
SELECT 'Free pages',
CONVERT(int,((CONVERT(numeric(10,2), cntr_value)* 8192)/1024)/1024)
as 'MBs'
from master.dbo.sysperfinfo where object_name = 'SQLServer:Buffer Manager' and
counter_name = 'Free pages'
我们先来看数据缓存对性能的影响,如果系统中没有其它应用程序来争夺内存,数据缓存一般是越多越好,甚至有些时候我们会强行把一些数据pin在高速缓存中。但是如果有其它应用程序,虽然在需要的时候MSSQL会释放内存,但是线程切换、IO等待这些工作也是需要时间的,所以就会造成性能的降低。这样我们就必须设置MSSQL的最大内存使用。可以在SQL Server 属性(内存选项卡)中找到配置最大使用内存的地方,或者也可以使用sp_configure来完成。如果没有其它应用程序,那么就不要限制MSSQL对内存的使用。