| ||||
【文章简介】 MSSQL内存模式(细节)不断补充1.BufferDistribution:stolen+BufferDistribution:Procedures=DynamicMemoryManager:Stolen2.DynamicMemoryManger:Stolen是由bpool中分配出,bpool中分配的都是小于8KB的页。3.大于8KB的内存分配使用MemToLeave区域来分配,MemToLe
【文章正文】
1. Buffer Distribution:stolen + Buffer Distribution:Procedures=Dynamic Memory Manager:Stolen
2. Dynamic Memory Manger:Stolen是由bpool中分配出,bpool中分配的都是小于8KB的页。
3. 大于8KB的内存分配使用MemToLeave区域来分配,MemToLeave与bpool无任何关系,通常这些大于8KB的内存分配都由一些组件完成的(COM组件、链接服务器、第三方扩展存储过程)
【MemToLeave也可以由mssql进程使用的,但分配的空间是大于8KB的】
只有mssql进程直接使用MemToLeave所分配的页才能够在dbcc memorystatus中反映出来,其他一些组件 (如:COM组件、链接服务器、第三方扩展存储过程)使用MemToLeave所分配的页是没法观察到的。
我仅仅是根据经验探讨这个mssql的内存模式,很多的认识也不一定正确,欢迎指正。
4. 虚拟地址空间是32位系统中的宝贵资源,默认方式下,mssqlserver(sql2000)启动后会保留384MB的虚拟地址空间以供线程堆栈及一些组件(COM组件、俩将服务器、第三方扩展存储)使用,这类组件要么所需较大(大于8KB)以至于bpool无法支持,要么不知如何从缓冲池中分配。电子商务辩论台: |
|
载入中…
|