• 给sqlserver配置内存参数


    操作环境:windows server 2003 R2 Enterprise Edition SP1 + 4G 内存 + Sqlsever 2005

    在以上环境中,运行公司的ERP数据服务,sqlserver进程的内存占用在稳定期一直是1600到1700之间,再高也没有超过1700,然后ERP客户端用户经常发生保存单据几分钟都不成功的情况,具体原因不明,但重启sqlserver服务就恢复正常,因此怀疑是内存过小的原因。

    以下步骤实现增加sqlserver内存分配量:

    首先,在sqlserver management studio 中,在数据库的服务器属性中(非数据库实例的属性),是有内存配置选项的,其中最大服务器内存默认值是一个很大很大的值,但实际上根本没有起作用,像我上面说的一样,我服务器上的sqlserver进程占用的

    内存从来没有超过1700。

    也可以通过以下语句实现配置:

    复制代码
    sp_configure 'show advanced options', 1
    RECONFIGURE
    GO
    sp_configure 'awe enabled', 1
    RECONFIGURE
    GO
    sp_configure 'min server memory', 1024
    RECONFIGURE
    GO
    sp_configure 'max server memory', 3072
    RECONFIGURE
    GO
    复制代码

    但是如果没有在操作系统的启动配置文件里(boot.ini)修改相关配置(添加/PAE),上面的设置是没有起作用的。

    所以要使上面的设置可用,需要完成下面的两个必要条件:

    一、编辑 Boot.ini 文件,请按照下列步骤操作:

    1. 单击“开始”,指向“设置”,然后单击“控制面板”。
    2. 在“控制面板”中,双击“系统”。
    3. 单击“高级”选项卡,然后单击“启动和故障恢复”下的“设置”。
    4. 在“系统启动”下,单击“编辑”。

    下面是我在原有配置下添加“ /PAE”后的结果

    multi(0)disk(0)rdisk(0)partition(2)WINDOWS="Windows Server 2003, Enterprise" /noexecute=optout /fastdetect /PAE

    二、可以运行sqlserver.exe的用户(在服务的属性中查看“登录”)需要有“锁定内存页”的权限。在组策略中进行设置:

    开始->运行->gpedit.msc->组策略->计算机配置->windows配置->安全设置->本地策略->用户权限分配->内存中锁定页面->属性->添加用户或组

    完成以上步骤后,重启服务器,再看sqlserver进程占用的内存,发现很小很小,90M左右,但这个其实不是真实的占用,上面给它锁定的内存页应该没有加进去。

    昨天下班完成的设置,今天一天ERP没有反馈任何保存不成功的问题,后续再进行观察相关情况。

    再提醒下,以上设置都是基于文章开头描述的运行环境,其它系统和环境可能已做改变,具体请查阅相关官方文档。

  • 相关阅读:
    html+css设计简单的博客首页
    js基础知识总结(一)
    css基础知识总结
    HTML基础知识
    链表常见题目--附具体分析和代码
    程序的内存分配
    python线程互斥锁递归锁死锁
    动态规划算法python实现
    ECMAScript 6 开篇准备
    弦生成器
  • 原文地址:https://www.cnblogs.com/linjincheng/p/9773383.html
Copyright © 2020-2023  润新知