zoukankan      html  css  js  c++  java
  • 给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没有反馈任何保存不成功的问题,后续再进行观察相关情况。

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

  • 相关阅读:
    108. Convert Sorted Array to Binary Search Tree
    107. Binary Tree Level Order Traversal II
    106. Construct Binary Tree from Inorder and Postorder Traversal
    105. Construct Binary Tree from Preorder and Inorder Traversal
    104. Maximum Depth of Binary Tree
    103. Binary Tree Zigzag Level Order Traversal
    102. Binary Tree Level Order Traversal
    系统和进程相关信息
    文件I/0缓冲
    系统编程概念(文件系统mount等函数的使用)
  • 原文地址:https://www.cnblogs.com/linjincheng/p/9773383.html
Copyright © 2011-2022 走看看