如何设置SQLServer数据库内存

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何设置SQLServer数据库内存相关的知识,希望对你有一定的参考价值。

1、打开SQL Sever 2008 R2数据库

2、在打开的连接到服务器对话框中,输入相关连接信息后,点击“连接”

3、右键数据库根节点,选择“属性”

4、弹出服务器属性页,选择页中包含常规、内存、处理器等选项

5、在选择页中我们点击“内存”,我们可以修改每次查询占用的最小内存值

6、在选择页中切换到“安全性”,我们可以重新设置服务器身份验证的模式

参考技术A

如果能在实例级别为同一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以前的数据库版本)

参考技术B 在安装有SQLServer数据库的计算机上,我们在使用数据库的过程中,有时候会在任务管理器里发现sqlservr.exe这个进程的内存和CPU占用率较高。

接下来我们来看一下,如何解决上面这个问题,需要设置SQLServer数据库的内存配置。登录数据库,这里使用的是SQLServer2008,右键点击最上方的服务器名,在弹出的菜单中,点击【属性】

打开服务器属性窗口。默认显示的是第一项【常规】内容,点击第二项【内存】进行内存配置。

点击【内存】后,打开服务器内存选项配置界面。这里的【使用AWE分配内存】可以对内存进行扩展支持,我们要做的是更改下方的最大服务器内存。这个数值根据自己服务器内存大小来做适当设置。

个人建议设置本机内存的一半或稍微高一点,如机器内存为2G,那么我们这里填写1000。需要注意的是内存设置调小以后,在数据库执行较复杂SQL语句的时候,可能会比较慢,出现这种情况,我们再适当上调最大内存配置大小。
参考技术C 1、起动 SQL Server Management Studio。
2、对目录材的最高节点 点右键 点“属性”,点内存,然后自个去设。
3、注意,内存的设置应根据数据库的实际情况及技术人员的经验去设。在生产用的服务器上,原则是,保存别的应用的足够内存的情况下,省下的全给它。
参考技术D 最简单的方法: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

如图 SQL Server数据库占用的内存每天都在自己变大 实在受不了了 如何完全的删除它 包括注?

如图 SQL Server数据库占用的内存每天都在自己变大 实在受不了了 如何完全的删除它 包括注册表这些东西 不想要了

参考技术A 启动项里面关闭自动启动服务
直接删删不干净的, 不像重装系统就找个sqlserver同版本的安装包, 步骤中有选卸载功能的

以上是关于如何设置SQLServer数据库内存的主要内容,如果未能解决你的问题,请参考以下文章

windows server 2003如何设置最大用户连接数

如何清除SQLserver 日志

如何增加windows server 2003远程连接数?

如何设置SQLServer数据库内存

如何设置SQLServer数据库内存

sql server 如何限制某一列值的数值长度 如:在某一数据库中图书证号必须是6位数字???谢谢啦