SQL Server 2000内存管理内幕
2007-05-19 09:40:34 来源:WEB开发网Introduction
在这篇专栏里,我们将从开发者的角度来探讨SQL Server内存管理内幕。就是说,我们将讨论SQL Server使用API和操作系统功能管理内存的方式及其工作原理。通过这种方式探讨一个产品,将有助于我们理解产品开发者的思路,以及他们所设计的使用方法。理解一个产品的工作原理和它的设计用途,是掌握这个产品的关键。
我们将从一些基础的Windows内存管理基本原理介绍开始。和所有的32位Windows应用程序一样,SQL Server使用Windows内存管理功能分配、释放、管理内存资源。正如所有其它的Windows应用程序,SQL Server调用Win32内存管理API函数,与操作系统提供的内存资源进行交互。
由于SQL Server中几乎所有的内存分配都使用虚拟内存(不是内存堆),因此绝大部分内存分配代码最终都是通过调用Win32的VirtualAlloc或者是VirtualFree函数完成。SQL Server调用VirtualAlloc保留、提交分配的虚拟内存,调用VirtualFree释放虚拟内存。
Virtual Memory vs Physical Memory
在x86系列处理器上,Windows为所有进程提供一个4GB虚拟内存工作空间。用"虚拟"这个词,意思是这个内存并不是通常意义上的内存,它只是一个地址范围,并没有和物理存储单元关联在一起。当进程请求内存分配时,这些地址空间才被使用,和具体的物理存储单元关联起来。然而这些物理存储单元并不一定是物理内存,它通常可能会是磁盘空间,确切的说,是操作系统的分页文件(System Paging Files)。这就是为什么多个应用程序可以同时运行在一个128M内存的系统上,每个应用程序都有一个4GB的虚拟内存地址空间--它不是真正的内存,但对应用程序来说可以理解为内存。Windows透明的处理paging files的数据拷贝,以使应用程序能够使用的内存可以超过机器的实际物理内存,并使应用程序能够公平的存取机器的物理内存。
- ››SQL Server 2008 R2 下如何清理数据库日志文件
- ››sqlite 存取中文的解决方法
- ››SQL2005、2008、2000 清空删除日志
- ››SQL Server 2005和SQL Server 2000数据的相互导入...
- ››sql server 2008 在安装了活动目录以后无法启动服...
- ››sqlserver 每30分自动生成一次
- ››sqlite 数据库 对 BOOL型 数据的插入处理正确用法...
- ››sql server自动生成批量执行SQL脚本的批处理
- ››sql server 2008亿万数据性能优化
- ››SQL Server 2008清空数据库日志方法
- ››sqlserver安装和简单的使用
- ››SQL Sever 2008 R2 数据库管理
更多精彩
赞助商链接