第一类、

根据申请方式分:

commit 型

它是指先reserve申请一大块,再通过commit提交后得到的空间。这种方式申请到的空间可以启用 awe !

stolen型

与commit 相对应!它不用reserve只是直接申请。它不能申请 AWE 扩展出的内存。

第二类、

根据申请空间的大小分:

single page allocation(buffer pool)型:

如果要申请的空间大小小于8KB SQL Server会慷慨的分给8KB(一个数据页)!

multiple page allocation(MemToLeave)型:

如果申请的页面内存大于8KB 、它申请多 SQL Server 就给它多少!

-----------------------------------------------------------------------------------------------------------------------------------------------

总结:

1、database cache 由于都是数据页、所以它存储在single page allocation(buffer pool)里

2、connection 它存储在哪这个它自己说了不算,要看network package size 的脸色、

network package size默认是4KB所以connection 默认存储在single page allocation(buffer pool)里,不幸的是

network package size 的大小是可以通过 sp_configure 调整的。所以connection 也可能存储在multiple page allocation中

3、 general (锁的数据结构、事务上下文、表格索引的元数据)它们也是动态的,如果它们比较小就存储在single page allocation中

如果你把语句写的比较长它们就存储在multiple page allocation 中

4、第三方的代码、SQL server是不知道它有多长的、所以把它存储在mulitple page allocation 中。

5、线程、因为每个线程的数据结构大小最小为512KB、所以把它存储在mulitple page allocation 中。

下面说明一下内存的去向、

(以下以32位系统 4G内存为例,256 线程)

1、multiple page allocation:

之所以又叫  MemToLeave 是因为SQL  Server 在启动时把这块地址预留了一下、预留多少

是这样算出来的。 256 + threads*0.5MB ; threads 是指最大线程数、可以通过sp_configure查看。

根据上面表达式可以算出 multiple page allocation = 384MB;当sql server的mulitple page allocation

到达384MB时、sql server 也就再也没有办法申请这种内存了。

2、single page allocation :

multiple page allocation 的大小确定后 、single page allocation 的大小也就知道了

single page allocation = (2G - 384MB) = 1664MB 、也就是 single page allocation 的最大值

SQL server 刚刚启动时用不了 1664MB、当sql server 使用量达到 1664MB 或 max server memory

参数所指定的值时、sql server就再也不能申请这种内存了、single page allocation 的值也就被限制了下来。

然、

如果内存大于 4G 也就说用户太的内存也就大于2G、且开启了 AWE 的话、多余的内存也是可以被使用上的。

前面说了AWE 的内存只可以通过  reserve\commit 方式供database cache 使用,别的用不了这块内存,这

样  singel page allocation 的stolen 最多可以用 1664MB ,database cache 可以用AWE 扩展出来的空间。

然、

如果在64的机器上装 32位的SQL Server 、因为64位的操作系统不用32位应用程序的地址空间、所以啊SQL

server 最高可用4G;   所以 single page allocation = (4G-384) = 3664MB;

SQL server 用最近最少使用算法淘汰内存中的页面。

SQL Server 的内存分类的更多相关文章

  1. 浅谈SQL Server 对于内存的管理

    简介 理解SQL Server对于内存的管理是对于SQL Server问题处理和性能调优的基本,本篇文章讲述SQL Server对于内存管理的内存原理. 二级存储(secondary storage) ...

  2. (转)浅谈SQL Server 对于内存的管理

    简介 理解SQL Server对于内存的管理是对于SQL Server问题处理和性能调优的基本,本篇文章讲述SQL Server对于内存管理的内存原理. 二级存储(secondary storage) ...

  3. Performance Monitor3:监控SQL Server的内存压力

    SQL Server 使用的资源受到操作系统的调度,同时,SQL Server在内部实现了一套调度算法,用于管理从操作系统获取的资源,主要是对内存和CPU资源的调度.一个好的数据库系统,必定在内存中缓 ...

  4. SQL Server占用内存的认识

    SQL Server占用的内存主要由三部分组成:数据缓存(Data Buffer).执行缓存(Procedure Cache).以及SQL Server引擎程序.SQL Server引擎程序所占用缓存 ...

  5. SQL Server 2012 内存管理 (memory management) 改进

    SQL Server 2012 的内存管理和以前的版本相比,有以下的一些变化. 一.内存分配器的变化 SQL Server 2012以前的版本,比如SQL Server 2008 R2等, 有sing ...

  6. SQL Server 2014内存优化表的使用场景

    SQL Server 2014内存优化表的使用场景 最近一个朋友找到走起君,咨询走起君内存优化表如何做高可用的问题 大家知道,内存优化表是从SQL Server 2014开始引入,可能大家对内存优化表 ...

  7. SQL Server 2008内存及I/O性能监控

    来源: it168  发布时间: 2011-04-12 11:04  阅读: 10820 次  推荐: 1   原文链接   [收藏]   以下均是针对Window 32位系统环境下,64位的不在下面 ...

  8. 优化SQL Server的内存占用之执行缓存

    在论坛上常见有朋友抱怨,说SQL Server太吃内存了.这里笔者根据经验简单介绍一下内存相关的调优知识   首先说明一下SQL Server内存占用由哪几部分组成.SQL Server占用的内存主要 ...

  9. SQL Server“吃内存”的解决

    现象:Web服务器中SQL Server占用内存非常高,加内存后,SQL Server又吃掉新加的内存,好像内存永远不够用一样. 分析:其实这并不一定是由于SQL Server活动过度造成的,在启动S ...

随机推荐

  1. 在CentOS 7下试验Drupal 7

    按顺序安装好Apache.MariaDB和PHP,启动Apache和MariaDB,创建一个UTF-8字符集的数据库. > create database if not exists drupa ...

  2. UPX和WinUpack压缩壳的使用和脱法 - 脱壳篇06

    UPX和WinUpack压缩壳的使用和脱法 - 脱壳篇06 让编程改变世界 Change the world by program 今天小甲鱼给大家介绍两款压缩壳:UPX和WinUpack. UPX是 ...

  3. JAVA JNI学习

    JAVA JNI   JNI是Java Native Interface的缩写,中文为JAVA本地调用.从Java1.1开始,Java Native Interface(JNI)标准成为java平台的 ...

  4. Palindrome(POJ 1159 DP)

      Palindrome Time Limit: 3000MS   Memory Limit: 65536K Total Submissions: 58168   Accepted: 20180 De ...

  5. html css 笔记

    cursor其他取值 鼠标移入    auto          :标准光标    default        :标准箭头    pointer        :手形光标    wait       ...

  6. HDOJ-1010 Tempter of the Bone(dfs+剪枝)

    http://acm.hdu.edu.cn/showproblem.php?pid=1010 给出一个n*m的迷宫 X为墙 .为空地 S为起点 D为终点 给出时间T 每走一步花费一单位的时间 走过的空 ...

  7. RBF径向基神经网络——乳腺癌医学诊断建模

    案例描述 近年来疾病早期诊断越来越受到医学专家的重视,从而产生了各种疾病诊断的新方法.乳癌最早的表现是患乳出现单发的.无痛性并呈进行性生长的小肿块.肿块位于外上象限最多见,其次是乳头.乳晕区和内上象限 ...

  8. WebBot - Build Web Apps as Easily as Native Ones - Home

    Python-based Template Packages Python-based Template Packages WebBot - Build Web Apps as Easily as N ...

  9. vi常用命令笔记

    1.Vi 删除全部内容,删除某行到结尾,删除某段内容 (1)转到文件指定行 nG (2)删除所有内容(先用G转到文件尾) ,使用: $G :1,.d (3)删除第9行到第200行的内容(先用200G转 ...

  10. jQuery -> end方法的使用方法

    我们在对结果集使用find.filter等方法时,会改变结果集. 这样的改变原先结果集的方法被称作destructive jQuery method jQuery cookbook有例如以下定义: A ...