您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

配置SQLServer(2)——32位和64位系统中的内存配置

bubuko 2022/1/25 20:08:44 sqlserver 字数 9426 阅读 1804 来源 http://www.bubuko.com/infolist-5-1.html

前言: 本文讲述32位和64位系统中的内存配置,在SQLServer 2005/2008中,DBA们往往尝试开启AWE来限制内存。但是,在SQLServer2012以后,这个选项将被弃用,所以不能使用这种方式来控制32位实例的虚拟地址空间。如果你服务器上有很多内存,就只能升级到64位系统。下面是微软 ...

前言:

        本文讲述32位和64位系统中的内存配置,在SQLServer 2005/2008中,DBA们往往尝试开启AWE来限制内存。但是,在SQLServer2012以后,这个选项将被弃用,所以不能使用这种方式来控制32位实例的虚拟地址空间。如果你服务器上有很多内存,就只能升级到64位系统。下面是微软给出的内存限制:

技术分享图片

        虽然2012以后已经弃用AWE,但是了解一下32位系统如何使用AWE(Address WindowingExtensions)来使得操作系统能够访问更多的内存。如果可用的物理内存比Maximum Server memory选项的还要多,那么SQLServer会锁定在Maximum Server memory选项,如果Maximum Server memory选项没有设置或者物理内存比这个选项设置得还要少,那么SQLServer实例会占用所有可用内存,仅保留256MB。

   

准备工作:

记住当前的Maximum Server memory和Minimum Server memory的值,可以在视图sys.configurations表中查看,这个视图包含有系统级别的的配置信息。

   

步骤:

1、 用以下语句设置SQLServer的最小内存:

[sql] view plaincopyprint?

  1. EXEC sp_configure ‘min server memory (MB)‘, 1024  
  2. GO  
  3. RECONFIGURE  WITH OVERRIDE ;  
  4. GO  



2、 用以下脚本设置最大内存: 

[sql] view plaincopyprint?

  1. EXEC sp_configure ‘max server memory (MB)‘, 3000  
  2. GO  
  3. RECONFIGURE  WITH OVERRIDE ;  
  4. GO  

 

分析:

        步骤1配置最小内存给SQLServer,默认值为0,可以设置最小值小于或等于max server memory的值。

        步骤2配置SQLServer的最大分配内存,默认值为2TB,这个值不能少于64M。

        所有的设置都储存在SQLServer的buffer pool中。如果你使用32位系统,你的SQLServer不能使用超过3G的内存。不管你有多少可用内存在服务器上。除非开启了AWE和PAE。

        如果系统中的系统服务仅仅运行了SQLServer,那么设置最大内存即可,但是如果有多个服务同时运行。并且域控制器使用了最大内存,SQLServer将会内存不足,换个角度,如果SQLServer使用了最大内存,那么域控制器又会内存不足,引起,应该合理配置内存,以避免内存的溢出。

 

 查找问题过程是痛苦的,解决完问题是快乐!

   兄弟帮助一个公司开发了一个旅游网站(asp.net+sqlsever2005),一直还算稳定,但是最近网站却慢的可以,让人头疼。登录服务器,进入任务管理器,发现数据库文件sql.exe 文件占用内存很大,于是兄弟就限制了sqlserver2005 的内存大小,具体如下。

  1、登录SQL SERVER Management Studio;

  2、对象资源管理中第一项上单击右键,选择属性,切换内存选项卡如下图;

技术分享图片

 

    3、在AWE分配内存上打勾,解释一下:AWE地址窗口化扩展插件,允许在 32 位版本的 Microsoft Windows 操作系统上使用超过 4 GB 的物理内存,最多可支持 64 GB 的物理内存;在最大服务器内存中输入合适的数据,那没多大的数据合适呢?建议输入服务器的物理内容一半多一些比较好;在每次查询占用的最小内存内输入一个数据,点击确定就ok了。

  通过上述设置果然,sql.exe的内存大幅度下降,服务器很流畅,但是网站的速度并没有提高,头疼啊。通过查找发现sql.exe 占用CPU非常大,达到60%-70%,并且始终居高不下。哈哈发现了问题就不怕解决问题,于是乎我开始对数据库优化来降低cpu使用率。

  1、既然CPU很高,我就要找到那些语句占用cpu较高,然后好进行优化,编写如下语句,通过语句查找确实发现了一些sql语句需要优化,而且还发现了一个影响速度的原因,就是有些表缺少索引;查找这些占用CPU的SQL语句,我还用到了sqlserver2005的自带的性能优化工具SQL Server Profiler,进行分析查找。

1
2
3
SELECT  TOP  10 [session_id],[request_id],[start_time]  AS  ‘开始时间‘ ,[status]  AS  ‘状态‘ ,[command]  AS  ‘命令‘ ,dest.[text]  AS  ‘sql语句‘ ,<br> B_NAME([database_id])  AS  ‘数据库名‘ ,[blocking_session_id]  AS  ‘正在阻塞其他会话的会话ID‘ ,[wait_type]  AS  ‘等待资源类型‘ ,[wait_time]  AS  ‘等待时间‘ ,<br>[wait_resource]  AS  ‘等待的资源‘ ,[reads]  AS  ‘物理读次数‘ ,[writes]  AS  ‘写次数‘ ,[logical_reads]  AS  ‘逻辑读次数‘ ,[row_count]  AS  ‘返回结果行数‘ FROM  <br>sys.[dm_exec_requests]  AS  der  CROSS  APPLY sys.dm_exec_sql_text](der.[sql_handle])  AS  dest  WHERE  [session_id]>50  AND <br> DB_NAME(der.[database_id])= ‘数据库名称‘   ORDER  BY  [cpu_time]  DESC
 
        

 

  ok我对语句进行了优化,又对没有索引的表建立索引(索引对查找数据的速度影响很大,所以大家一定要对所有表,经常查询的字段都要添加索引),发现CPU虽然下降了但是很不稳定以下60%,一下10%,网页打开依然很慢,怎么办呢?痛苦的争战中...打开window系统自带的事件查看器--》应用程序发现大量的数据库登录失败日志,点开查看发现“用户 ‘NT AUTHORITY\SYSTEM‘ 登录失败。 [客户端: <local machine>]”,如下图。

技术分享图片技术分享图片

从网上查找了好多方法但是问题依然存在,试过N多办法,最后发现SQL Server Configuration Manager中的一个服务需要‘NT AUTHORITY\SYSTEM’登录,如下图,既然找到原因了,那就解决吧,这个服务对我们的网站没用,所以我把停掉了,服务器一切正常了。

技术分享图片

配置SQLServer(2)——32位和64位系统中的内存配置

原文:https://www.cnblogs.com/Alex80/p/12398530.html


如果您也喜欢它,动动您的小指点个赞吧

除非注明,文章均由 laddyq.com 整理发布,欢迎转载。

转载请注明:
链接:http://laddyq.com
来源:laddyq.com
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


联系我
置顶