我们有一个具有混合OLAP/OLTP工作负载的数据库。查询非常特别,是在中间层应用程序服务器中动态创建的。当我们启动服务器时,性能是可以接受的,但是内存消耗越来越多,直到所有可用内存(30 we )耗尽为止。在那之后,系统变得越来越慢。
像Dbcc freeproccache这样的命令没有效果。
select * from sys.dm_tran_session_transactions中的事务不多(不超过系统正常时),有时此列表为空。
dbcc memorystatus的第一个结果是
VM Reserved 42136628
VM Committed
在之前,当父进程和子进程共享相同的地址空间时,意味着它们共享相同的代码段、数据段、堆和堆栈对吗?如果父进程和子进程在copy on write (COW)之前共享相同的地址空间,the page table entries are copied from parent process to child process是什么意思?复制页面表条目是否意味着重复地址空间?< code >G 29</code>
在Server中分配给内存组件的内存究竟是什么?
我认为committed内存是正在使用的物理内存量,而reserved是虚拟地址空间中尚未映射到物理内存的内存量。
但当涉及到allocated记忆时,我感到困惑。当内存组件从内存管理器请求内存时,授予该内存的性质是什么?真实的/物理的还是VAS的?
以下是DMV的一个示例:
SELECT pages_kb AS A
,virtual_memory_committed_kb AS C
,virtual_memory_reserved_kb AS R
FROM sys.dm_os_memory_clerks;
列A、C和R之间没有任何关系,最初我