呵呵这是SQL Server2000的新功能!SQL Server 2000 实例使用的内存池大小可以是动态的,尤其是在运行其它应用程序或其它 SQL Server实例的计算机上。默认情况下,SQL Server 力求使计算机的虚拟内存分配量保持在比物理内存少 4 MB 到 10 MB 的水平上。SQL Server 实例可以实现此目的的唯一方法是改变它的地址空间大小。SQL Server 实例的地址空间中唯一可变的组件是内存池。SQL Server 地址空间中的其它可变组件(如 OLE DB 提供程序、OLE 自动化对象和扩展存储过程的数目和大小)全都由应用程序请求控制。如果应用程序执行分布式查询,SQL Server 必须装载相关联的 OLE DB 提供程序。这意味着如果装载 SQL Server 组件或其它应用程序启动,SQL Server 实例释放新组件或应用程序所需的内存的唯一机制只能是减少内存池的大小。SQL Server 管理员可以通过 min server memory 和 max server memory 配置选项限制内存池大小的改变量。内存池内的区域也是高度动态的。SQL Server 代码不停地调整分配给不同区域的内存池量以优化性能。在内存池内,用于存储连接环境和系统数据结构的区域由用户请求控制。当建立新连接时,SQL Server 须分配数据结构存储连接环境。当定义新数据库时,SQL Server 须分配数据结构定义数据库的属性。当引用表和视图时,SQL Server 须分配数据结构描述它们的结构和属性。这使缓冲区高速内存、过程高速缓存和日志高速缓存成为内存单元,其大小由 SQL Server 控制。SQL Server根据需要动态调整这些区域的大小以优化性能。
我把内存池大小设为0-4M,但是一启动sqlservr.exe
占的内存就超过了10M,而且仍然不断增加,
打开enterprise manager玩了会,就到20M了
谁能解释啊
http://www.csdn.net/expert/topic/831/831449.xml?temp=.4277765
原理:
SQL SERVER 有很多的缓存,其中有一个比较重要的是脏数据缓存,它的作用是当对数据修改时候首先放在该缓存中,由检查点放入数据页中!
这样根本无法支持不间断应用嘛
你可以通过SP_WHO,SP_WHO2,SP_LOCK....看看那一个连接占用了MEMORY,再仔细分析......