| 你提高SQL Server的默认网络包的大小为8K., 立即,SQL SERVER立刻开始在ERROR LOG中写错误信息,提示预留虚拟内存在MemToLeave (内存释放区)区有问题.在看到这样的信息后你立刻会知道这个改变至少是问题的一部分,因为你知道分配8K或更多的内存是在MemToLeave (内存释放区)区. 这样SQL Server连接相关联的缓存也是来自这个区域,因为你已经配置网络包的大小太高了.配置默认的网络包适合于.NET framework的SQLClinet Provider 8KB.这种情况并不象听起来那么合理.实际上,这是非常常见的问题,由于MemToLeave (内存释放区)缺乏内存空间而引起的,因为网络包的大小太大,至少有些部分是这样的.
同时,了解SQL Server划分内存的方法可以帮助你了解你定制在SQL Server中运行的代码是否在系统资源的临界值,比如数据缓存. 比如说,你建立一个扩展存储过程调用SRV_PRO()函数来分配内存.假设,暂时你代码中分配的缓存小于8KB.根据我们前面的讨论,我们知道扩展存储过程是从Bpool (缓冲池区)来分配内存.—可以用作数据缓存.
了解SQL Server是如何管理内存的 上一页 [1] [2] [3] [4] [5] [6] [7] [8] [9] 下一页 |