sqlserver内存最佳配置,如何设置SQLServer数据库内存
sqlserver内存最佳配置,如何设置SQLServer数据库内存详细介绍
本文目录一览: 如何设置SQLServer数据库内存
如果能在实例级别为同一SQL服务器上的不同实例限制其能够使用的最大和最小内存,就能降低这种情况对其他应用系统的影响。具体的操作如下:
(一)实例的最大和最小内存设置
右击数据库,选择属性,如图。
为实例设置合适的最大和最小内存,如图。
(二)为操作系统预留足够的内存
假如一台8GB的服务器,我们可以限制数据库使用的内存上限不超过6GB,剩下的2GB留给操作系统使用。
(三)配置lockpagesinmemory
查看SQL进程的启动账户,如图。
在组策略里设置启动SQL Server的账户拥有锁定内存页的权限。如图。
在下图的添加用户或组界面,添加SQL server的服务启动账户,如图。
如何设置SQLServer数据库内存
如果能在实例级别为同一SQL服务器上的不同实例限制其能够使用的最大和最小内存,就能降低这种情况对其他应用系统的影响。具体的操作如下:
(一)实例的最大和最小内存设置
右击数据库,选择属性,如图。
为实例设置合适的最大和最小内存,如图。
(二)为操作系统预留足够的内存
假如一台8GB的服务器,我们可以限制数据库使用的内存上限不超过6GB,剩下的2GB留给操作系统使用。
(三)配置lock pages in memory
查看SQL进程的启动账户,如图。
在组策略里设置启动SQL Server的账户拥有锁定内存页的权限。如图。
在下图的添加用户或组界面,添加SQL server的服务启动账户,如图。
设置完成后,需要关注的两个问题:
1、因为SQL Server锁定了内存页,当Windows内存告急时,SQL Server就不能对Windows的内存告急做出响应,因为SQL Server的特性是内存有多少用多少,因此很有可能在无法做出对Windows低内存的响应时造成Windows的不稳定甚至崩溃。因此开启了”Lock Page In Memory”之后,要限制SQL Server Buffer Pool的内存使用
2、还有一个问题是当Buffer Pool通过AllocateUserPhysicalPages分配内存时,我们在任务管理器中看到的sqlservr.exe占用的内存就仅仅包含Buffer Pool中非Data Cache部分和MemToLeave部分,而不包含Data Cache部分,因此看起来有可能造成sqlservr.exe只占用了几百兆内存而内存的使用是几十G。这时我们就需要在Perfmon.exe中查看SQL Server:Memory Manager\Total Server Memory计数器去找到SQL Server真实占用的内存。(由于SQL server 2012内存管理机制的变化,所以个人认为这一条原则可能只适用于SQL server 2008R2以前的数据库版本)
在安装有SQLServer数据库的计算机上,我们在使用数据库的过程中,有时候会在任务管理器里发现sqlservr.exe这个进程的内存和CPU占用率较高。
接下来我们来看一下,如何解决上面这个问题,需要设置SQLServer数据库的内存配置。登录数据库,这里使用的是SQLServer2008,右键点击最上方的服务器名,在弹出的菜单中,点击【属性】
打开服务器属性窗口。默认显示的是第一项【常规】内容,点击第二项【内存】进行内存配置。
点击【内存】后,打开服务器内存选项配置界面。这里的【使用AWE分配内存】可以对内存进行扩展支持,我们要做的是更改下方的最大服务器内存。这个数值根据自己服务器内存大小来做适当设置。
个人建议设置本机内存的一半或稍微高一点,如机器内存为2G,那么我们这里填写1000。需要注意的是内存设置调小以后,在数据库执行较复杂SQL语句的时候,可能会比较慢,出现这种情况,我们再适当上调最大内存配置大小。
1、起动 SQL Server Management Studio。
2、对目录材的最高节点 点右键 点“属性”,点内存,然后自个去设。
3、注意,内存的设置应根据数据库的实际情况及技术人员的经验去设。在生产用的服务器上,原则是,保存别的应用的足够内存的情况下,省下的全给它。
最简单的方法:sql管理器-- 对象资源管理器--根节点--右键菜单--属性--内存--修改
可以先在该界面按F1看帮助。
代码
查看
SELECT * FROM sys.configurations;
看到name=‘max server memory (MB)’
设置 因为该项的 is_advanced=1 so 以下代码有开关部分。
--开启
EXEC sys.sp_configure N'show advanced options',N'1';
RECONFIGURE WITH OVERRIDE;
GO
--设置 如设置为 2G,注意单位,2048MB
EXEC sys.sp_configure N'max server memory (MB)',N'2048';
RECONFIGURE WITH OVERRIDE;
GO
--关闭
EXEC sys.sp_configure N'show advanced options',N'0';
RECONFIGURE WITH OVERRIDE;
GO
1、 主要设置min server memory 和 max server memory ,如果同台服务器有多台吃内存大户服务, max server memory 给设置一个值稍大的值出来,别让SQL server把WINDOWS内存都吃完了也别让其他的服务把WINDOWS内存吃完了,这样才会相安无事2.设置方法可以通过命令方式的,楼上的挺好,还有就是通过SQL SERVER企业管理器进行:鼠标右键服务器\属性\内存 可以看多最大内存和最小内存设置选项。
1、打开SQL Sever 2008 R2数据库
2、在打开的连接到服务器对话框中,输入相关连接信息后,点击“连接”
3、右键数据库根节点,选择“属性”
4、弹出服务器属性页,选择页中包含常规、内存、处理器等选项
5、在选择页中我们点击“内存”,我们可以修改每次查询占用的最小内存值
6、在选择页中切换到“安全性”,我们可以重新设置服务器身份验证的模式
如何设置SQLServer数据库内存
如图所示,就可以设置SQLSERVER的最大最小内存了,其实如果是生产环境,建议给OS预留2~4G的内存,极限情况下至少预留1.5G,这样才是最佳,如果你的生产环境内存都不超过4G的话,那还是不要修改自动分配的好。
sqlserver2008r2x64最大内存限制是否需要设定?设置多少为宜
个人学习用不建议修改,如果是生产用,建议根据自己机器配置及业务进行配置。
如果内存小于等于8G,建议OS预留1.5GB内存,如果小于8G就别修改了,自动吧;
如果内存大于等于12G,建议OS预留2GB内存,SQLSERVER最大限制为9GB;
如果内存大于等于24G,建议OS预留4GB内存,SQLSERVER最大限制20GB;
以上最佳实践仅限于DB服务器,如果你的服务器是混合服务器,那就在SQLSERVER的最大限制上减去其他APP或服务占用的内存。
sqlserver2008r2x64最大内存限制是否需要设定?设置多少为宜
初始值=总内存-(总内存/8)-2
EXEC sys.sp_configure N'max server memory (MB)', N'初始值'
GO
RECONFIGURE WITH OVERRIDE
GO
先预留1GB给OS
4~16GB RAM,则每4GB留1GB,
16GB RAM+,则每8GB留1GB
然后根据Memory\Available Mbytes的值(建议在300MB左右),再逐渐调高MAX Memory Value。
默认值就行了,如果你操作系统上sqlserver不想占用太多,那么就设个你内存的80%左右
SQL是自动调用内存机制的,初始占用内存大小取决你的系统内存大小,最低约需要2GB,最高约可占用系统内存的80%。
sqlserver内存大小设置多少合适
我们在使用电脑的过程中,偶尔会遇到提示“虚拟内存不足,请增加你的虚拟内存”的情况,那虚拟内存是什么?该怎样增大虚拟内存呢?听“电脑那些事儿”跟大家说说!
虚拟内存的含义就是在磁盘上划出一块区域,用来当作内存来使用,弥补内存条不足的一种方法。电脑系统有虚拟内存设置功能,我们可以自定义设置虚拟内存的大小。
1、右击“计算机”,选择“属性”;
2、在打开的“系统”界面中,单击左侧的“高级系统设置”;
3、在打开的“系统属性”界面中,切换到“高级”标签,单击性能选项框里面的“设置”按钮。
4、在打开的“性能选项”的窗口中,选择“高级”标签,然后选择“更改”;
5、去掉“自动管理所有驱动器的分页文件大小”的“√”,选择一个盘符,不建议放到系统盘,可以找一个空间比较大的盘符,自定义大小即可,如果不知道设置为多少,可以设置成下面的推荐值。
6、设置完成以后,重启计算机即可。
注意:如果物理内存偏小,可以把虚拟内存设置得大一点,可以为物理内存的2倍或3倍。如果物理内存已经很大,比如有4G或者8G,那就只可以保持默认状态或1.5倍即可,太大了,反而会影响电脑性能。
顺手收藏并转发一下吧,让更多的朋友受益!
最后,有问题可以关注“电脑那些事儿”微信公众号留言哦【问题+邮箱】(电脑系统、软件应用等各种问题都可以),小编晚间会一一回复。
sql server 属性配置最大内存设为多少合适?
看你数据库本身的容量是多大的,一般有一个G就差不多了。还有,进程占用内存的算法是:物理内存+虚拟内存,你可以在任务管理栏中点到进程,然后在查看下拉菜单中点选择列,把虚拟内在勾上。这样你就可以看到一个进程占用的实际内在了
SQL Server 使用内存有两种情况:
第一种情况: 动态改变它的内存需求。
默认情况下,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。如果设置更高的架构高速缓存大小,需使用更多的内存。因此,如果架构访问速度慢,可增加高速缓存大小,如果内存少则可减小高速缓存的大小。
出于性能方面的考虑,建议将架构高速缓存的大小设得比通常所用的映射架构数多。当架构数增加时,如果架构高速缓存的大小比所拥有的架构数少,性能会降低。
sqlserver 设多大的内存合适?
根据常用的数据 做存储过程 比较省内存
电脑虚拟内存怎么设置最好。
1,首先打开我的电脑,在系统桌面上找到“此电脑”的图标,鼠标右键点击这个图标在弹出的菜单中点击“属性”选项。
2,在打开的系统页面,点击左侧导航栏中的“高级系统设置”标签。
3,在弹出的系统属性界面中,点击“高级”标签选项卡,在性能那一栏下面有个“设置”按钮,点击这个按钮进入性能选项页面。
4,在“性能选项”窗口中,点击顶端的“高级”标签选项卡,在“虚拟内存”一栏下面有个“更改”按钮,请点击这个按钮。
5,在弹出的虚拟内存窗口中,点击“自动管理所有驱动器的分页文件大小”复选框,去掉复选框里的小勾。
6,点击你电脑系统所在的驱动器,再点击“自定义大小”选项,在“初始大小”和“最大值”的输入框里输入设定的大小数值,最后再点击“设置”按钮和底部的“确定”按钮即大功告成。须知:虚拟内存容量一般设置为物理内存的1.5-3倍左右才是最合适的,按照1G等于1024MB计算,设置合适的虚拟内存数值。
电脑虚拟内存最优配置是初始值设置为当前内存条相同大小,最大值是内存条的两倍。下面给出WIN10设置虚拟内存的操作流程:
一、鼠标右键点击“此电脑”,右键菜单中点击“属性”。
二、打开属性窗口后,点击左侧“高级系统设置”。
三、点击进入“高级”属性面板,点击打开“设置”。
四、点击进入“高级”面板,点击“更改”。
五、取消勾选“自动管理所有驱动器的分页大小”。
六、勾选“自定义大小”,初始大小设置为和内存大小一样大,最大值设置为内存的二倍,点击“确定”,最后重启电脑完成设置。