第一种状况: 动态改变它的内存需求。 默认状况下,SQL Server 会依据可得到的系统资源动态改变它的内存需求。若是 SQL Server 须要更多的内存,它会要求操做系统肯定是否有空闲的物理内存可用,并使用可用的内存。若 SQL Server 再也不须要当前分配给它的内存,它就将内存释放给操做系统。当 SQL Server 动态使用内存时,它要求系统按期地检测可用的物理内存数量。SQL Server 根据服务器活动增大或收缩高速缓冲存储器,以使可用物理内存保持在 4 MB 到 10 MB 之间。这就避免了系统进行换页操做。 [也就是说,这种状况下SQL SERVER 自己不会使物理可用内存小于4M,若是比较长的时间内都小于4M的话,则要看一下是否是该服务器上其它应用程序有问题] 第二种状况:限制使用内存 使用 set working set size 为sql server保留等于服务器内存设置的物理内存空间。即便是sql server 进程此时是空闲的,系统也不会将 SQL Server 页交换出去。 使用min server memory 保证sql server 使用的最小内存。SQL Server 启动时不当即分配 min server memory 中所指定的内存量。可是,当内存使用因为客户端负荷而达到该值后,SQL Server 将没法从已分配的缓冲池中释放内存。 使用max server memory 则防止 SQL Server 使用多于指定数量的内存,这样剩余的可用内存能够快速运行其它应用程序。SQL Server 启动时不当即分配 max server memory 中所指定的内存。内存使用随 SQL Server 的须要而增加,直到达到 max server memory 中所指定的值。SQL Server 没法超过该内存使用值,除非增长 max server memory 值。 第一种状况比较适用于服务器专作sql server服务器的状况,第二种状况适用于为在同一台计算机上运行的其它应用程序保留必定的内存以便于快速响应。(另:若是想动态分配sql server 的内存,则不要设置set working set size 选项,使用默认值便可。至于这些参数如何设置参见另外的文档) 监视 SQL Server 所使用的内存和计数器有助于肯定: 是否因为缺乏可用物理内存存储高速缓存中常常访问的数据而致使瓶颈存在。若是是这样,SQL Server 必须从磁盘检索数据。 是否可经过添加更多内存或使更多内存可用于数据高速缓存或 SQL Server 内部结构来提升查询性能。 SQL Server 须要从磁盘读取数据的频率。与其它操做相比,例如内存访问,物理 I/O 会耗费大量时间。尽量减小物理 I/O 能够提升查询性能。 对sql server服务器内存的监视: Memory:Available Bytes 计数器表示当前进程可以使用的物理内存字节数。 若是小于4M或更小,说明计算机上总的内存可能不足,或某个程序没有释放内存 ● Memory: Page Faults / sec 每秒软性页面失效的数目(包括有些能够直接在内存中知足而有些须要从硬盘读取)较page/sec只代表数据不能在内存指定工做集中当即使用。 若是该值偶尔走高,代表当时有线程竞争内存。若是持续很高,则内 存多是瓶颈。 Memory:Pages/sec 计数器表示因为缺页处理而从磁盘取回的页数,或因为缺页处理而写入磁盘以释放工做集空间的页数。 ● Page Reads/sec 每秒发出的物理数据库页读取数。这一统计信息显示的是在全部数据库间的物理页读取总数。因为物理 I/O 的开销大,能够经过使用更大的数据高速缓存、智能索引、更高效的查询或者改变数据库设计等方法,使开销减到最小。 ● Page Writes/sec 所发出的物理数据库页写入的数目。 监视 SQL Server 正在使用的内存量: Process:Working Set 计数器表示的是一个进程所占用的内存数量。 若这一数值持续低于 SQL Server 配置使用的内存数量(由"最小服务器内存"和"最大服务器内存"服务器选项设置,( min server memory 的默认设置为 0,max server memory 的默认设置为 2147483647。),则表示 SQL Server 所配置的内存比它所须要的多。不然,用"设置工做集大小"服务器选项修改工做集大小。 [在设置了sql server 使用的最小 和 最大内存后,查看此参数比较有意义。若是没有设置sql server 内存使用范围,则该值能够与系统总的内存比较,设置分配给sql server 的最大最小内存分配的是物理内存+虚拟内存的一部分] ● SQL Server:Buffer Manager:Buffer Cache Hit Ratio 数据请求能够从数据缓冲区中得到所需数据的成功率 计数器值依应用程序而定,但比率最好为 90% 或更高。增长内存直到这一数值持续高于 90%,表示 90% 以上的数据请求能够从数据缓冲区中得到所需数据。 ● SQL Server:Buffer Manager: Total Pages 缓冲区池中页的数目(包括数据库、可用页和被盗用页) 若 Total Server Memory (KB) 计数器值与计算机的物理内存大小相比一直很高,可能表示须要更多的内存 结论: 对sql server 服务器内存的监视,能够看出该服务器总体的内存的占用状况 对 sql server 使用内存的监视, 能够看出是不是sql server 使用了大多数内存 根据监视的结果肯定是不是内存不够。 其它: 内存相关参数调整(见后面) SQL Server 对象内存使用状况说明(见后面) 疑问: 使用 set working set size =1 后,系统是在sql server 启动时就分配给它要求的内存 仍是 开始不分配这么多,而是等到用了这么多以后不释放就好了? SQL Server 对象内存使用状况说明 下表列出 Microsoft® SQL Server™ 中不一样对象的内存使用量。下表中的信息不适用于 Microsoft® SQL Server 2000™ Windows® CE 版。 对象大小 对象 SQL Server 7.0 SQL Server 2000 锁 96 字节 每一个全部者 64 字节外加 32 字节。 开放式数据库 2.880 字节 每一个文件 3924 字节外加 1640 字节,每一个文件组 336 字节。 开放式对象1 276 字节 每一个对象上打开的索引 256 字节外加 1724 字节2。 用户联接 12 KB +(3 * 网络数据包大小)3。 12 KB +(3 * 网络数据包大小)3。 3 开放式对象包括全部的表、视图、存储过程、扩展存储过程、触发器、规则、默认值及约束。 2 在表或视图上能够打开索引。 3 网络数据包大小是表格格式数据方案 (TDS) 数据包的大小,该数据包用于应用程序和关系数据库引擎之间的通信。默认的数据包大小为 4 KB,由 network packet size 配置选项控制。 内存相关: 服务器虚拟内存的配置 页面文件和物理内存或RAM构成虚礼内存 虚拟内存设置方法: 启动"控制面板"的"系统"选项,而后选择"虚拟内存"按钮来建立一个附加的页面文件或增长当前页面文件的大小。 虚拟内存不足: 当服务器上运行的应用程序请求的内存超过服务器上可用的内存时,Microsoft® Windows® 打开"服务器进程 — 虚拟内存用完"对话框,其文本以下所示: 系统的虚拟内存已经不足。请关闭一些应用程序。能够启动"控制面板"的"系统"选项,而后选择"虚拟内存"按钮来建立一个附加的页面文件或增长当前页面文件的大小。 通常状况下,将虚拟内存大小设置为计算机中安装的物理内存的 1.5 倍 若是另外安装了全文检索功能,并打算运行 Microsoft 搜索服务以便执行全文索引和查询,可考虑: 将虚拟内存大小配置为至少是计算机中安装的物理内存的 3 倍。 ● 将 SQL Server max server memory 服务器配置选项配置为物理内存的 1.5 倍(虚拟内存大小设置的一半)。 如考虑其它服务须要的虚拟内存,则配置 SQL Server max server memory 选项,使得留有足够的虚拟内存知足全文检索内存需求。所有虚拟内存 -(SQL Server 最大虚拟内存 + 其它服务须要的虚拟内存)>= 1.5 倍物理内存。 Sql server 使用的内存参数的配置: 手工配置给 SQL Server 多于物理内存数量的虚拟内存会致使性能较低。默认状况下,SQL Server 可以可用系统资源动态改变它的内存需求。min server memory 的默认设置为 0,max server memory 的默认设置为 2147483647。能够为 max server memory 指定的最小内存量为 4 MB。 做用:若是在运行 SQL Server 实例的计算机上频繁启动或中止其它应用程序,启动这些应用程序所需的时间可能会因 SQL Server 实例分配和释放内存而延长。另外,若是 SQL Server 是几个在一台计算机上运行的服务器应用程序中的一个,系统管理员可能须要控制分配给 SQL Server 的内存量。在这些状况下,可使用 min server memory 和 max server memory 选项控制 SQL Server 可使用的内存量。 对SQL Sserver 使用内存的配置主要是对如下三个参数进行配置: min server memory 保证了 SQL Server 实例使用的最小内存量。 max server memory 则可防止 SQL Server 使用多于指定数量的内存,这样剩余的可用内存能够快速运行其它应用程序。 set working set size 为 SQL Server 保留等于服务器内存设置的物理内存空间。 手工设置 SQL Server 内存选项有两种主要方法: 第一种方法,设置 min server memory 和 max server memory 为同一数值。该数值与分配给 SQL Server 的固定内存量相对应。 ● 第二种方法,把 min server memory 和 max server memory 数量设置到一个范围段内。这种方法在系统或数据库管理员但愿配置 SQL Server 实例,使其适应在同一台计算机上运行的其它应用程序的内存需求时颇有用。 若是只设置了min server memory 和 max server memory ,sql server 使用的内存值在最小和最大值之间变更(若是sql server 使用的值超过过最小值的话) 若是设置set working set size =1,必须先将min server memory 和 max server memory的值设成同一个值,这个值就是为sql server 保留的物理内存空间。即便当 SQL Server 空闲,另外一个进程可使用 SQL Server 页时,系统也不会将 SQL Server 页交换出去。 参数的设置方法: 1. 在查询分析器中运行 [要先运行下面的语句,不然内存页面打不开] use master exec sp_configure 'show advanced option','1' 2. 在企业管理器中配置,步骤: 打开Sql Server 属性配置,选择内存页面,而后在里面配置就好了。 (不过这里用图形界面配置内存的时候好像不能超过物理内存的大小,能够用命令来分配大于物理内存的内存空间,下面有简单的介绍。 ) 对上图的说明: 动态配置 SQL Server 内存 指定在更改服务器属性以后当即配置 Microsoft® SQL Server™ 内存。 使用固定的内存大小 为 SQL Server 指定固定的内存大小。 为 SQL Server 保留物理内存 为 SQL Server 保留与内存设置相等的物理内存空间。这意味着 Microsoft Windows NT® 4.0 或 Windows® 2000 不会将 SQL Server 页交换出去,即便当 SQL Server 闲置时能够更容易地使用这些页。 最小查询内存 设置能够分配给每一个用户执行查询的最小内存大小。默认为 1024 KB。 配置值[显示如今配置的值,不作其它用途] 查看或更改此选项卡上的选项的配置值。若是更改了这些值,单击"运行值"查看更改是否已生效。若是没有,必须从新启动 SQL Server 实例才能使更改生效。 运行值[显示如今运行值,不作其它用途] 查看此选项卡上的选项的当前运行值。这些值为只读值。 另:若是要用命令来设置比较麻烦。以下简单举个例子: Set working set size 设置方法: set working set size 是一个高级选项。若是要用 sp_configure 系统存储过程改变该选项,必须把 show advanced options 设置为 1,该选项在中止并从新启动服务器后生效。 设置 show advanced options 设置为 1,在查询分析器中运行如下命令: use master exec sp_configure 'show advanced option','1' 若是成功,会返回以下结果: DBCC 执行完毕。若是 DBCC 输出了错误信息,请与系统管理员联系。 已将配置选项 'show advanced options' 从 1 改成 1。请运行 RECONFIGURE 语句以安装。 设置set working set size =1,运行以下命令: use master exec sp_configure 'set working set size','1' 若是成功,会返回以下结果: DBCC 执行完毕。若是 DBCC 输出了错误信息,请与系统管理员联系。 已将配置选项 'set working set size' 从 0 改成 1。请运行 RECONFIGURE 语句以安装。 ………………………………………… Cache Hit Ratio(高速缓存命中率,全部Cache”的命中率。在SQL Server中,Cache能够包括Log Cache,Buffer Cache以及Procedure Cache,是一个整体的比率。) 高速缓存命中次数和查找次数的比率。对于查看SQL Server高速缓存对于你的系统如何有效,这是一个很是好的计数器。若是这个值很低,持续低于80%,就须要增长更多的内存。 设置架构高速缓存: 架构高速缓存可显著提升 XPath 查询的性能。当对带批注的 XDR 架构执行 XPath 查询时,架构存储在内存中,而必要的数据结构内置在内存中。若是设置了架构高速缓存,架构仍保留在内存中,于是提升了后续 Xpath 查询的性能。 解释: 架构-SCHEMA CREATE SCHEMA 建立一个架构,而且能够在概念上将其看做是包含表、视图和权限定义的对象。 CREATE SCHEMA 提供了在单个语句中建立表、视图以及授予对象权限的方法。若是在建立任何对象或授予任何权限(这些是在 CREATE SCHEMA 语句中指定的)时发生错误,则不会建立任何对象。 XPath查询-Xpath(XML Path 语言)是一种图形导航语言 我的理解简单的说就是在URL中指定查询。[详细知识参照sql server 联机帮助文档] 设置方法: 可经过在注册表中添加下列键来设置架构高速缓存的大小: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Client\SQLXMLX\SchemaCacheSize。 [我在注册表中没找到位置!?] 根据可用内存和要使用的架构数设置架构大小。默认的架构高速缓存大小为 31。若是设置更高的架构高速缓存大小,需使用更多的内存。所以,若是架构访问速度慢,可增长高速缓存大小,若是内存少则可减少高速缓存的大小。 出于性能方面的考虑,建议将架构高速缓存的大小设得比一般所用的映射架构数多。当架构数增长时,若是架构高速缓存的大小比所拥有的架构数少,性能会下降