windows2008 R2 Enterprise(64位) +sql2005 64位 这个组合基本上不会有很多bug,内存使用是正常的,不吃内存的数据库管理系统(包括SLQ Server、mysql、db2、Oracle等)是不正常的。内存很大程度是数据缓存、计划缓存等等,缓存了,数据库才运行得快,只要没有明显的内存压力,否则不用太在意,唯一需要配置的可能就是sqlserver的最大内存配置,一般留2~3G给操作系统,其他全给sqlserver就好了(数据库专用服务器的情况下)。

解决方案 »

  1.   

    本帖最后由 DBA_Huangzj 于 2014-08-05 08:20:49 编辑
      

  2.   

    64位系统没必要开AWE,如果有内存问题,可以考虑锁定内存页。总的来说,不要太过担心内存占用率。做好数据库优化即可,不要动不动就全表扫描,这些会加载大量不必要的数据到内存,然后就显式内存已满。
      

  3.   

    我原来使用windows2003 + sql2005就是使用多少内存占用多少,不用后自动释放,当时把业务系统和数据库放在一起都没感觉到卡。
      

  4.   

    那你要检查是否有阻塞问题,阻塞问题很多时候不是内存引起的,而是锁,假设你有100G内存给SQL Server,而且除了你完全没有其他人用,如果你用某些黑科技锁住数据,另外一个会话又要更新这个数据,那么第二个会话就要等待,也就是被第一个会话阻塞了。索引、编码、表结构、业务逻辑的设计比硬件资源更能影响系统性能
      

  5.   

    sqlserver从2000~2012,Windows从2003~2012,我都没见过有自动释放的功能
      

  6.   

    有一种常见的可能性是升级了之后缺乏维护导致的,你可以先做一下下面的操作:
    1、完整备份数据库
    2、日志备份(非简单模式下)
    3、重建所有聚集索引
    4、更新统计信息做完之后再进行监控,不要过多地“猜测”,要监控才能知道问题所在。监控常见手段:
    1、Windows 日志、sqlserver 日志,看看有没有什么明显错误。
    2、等待状态。看看高峰时期都在等待着什么导致卡,是资源等待还是其他等待
    3、检查一下数据库文件的读写情况,比如是TempDB所在的磁盘IO不足导致的,还是业务数据库所在的文件IO过高
      

  7.   

    确实我现在sql2008r2 + windows2008 server  之前每天上班前看一下 内存占用也很高。我现在做了一个小处理。就是每天凌晨1:00 时候 加了一个任务计划程序 执行这样一个批处理 bat每天执行一次。就是重启下sqlserver服务.echo 正在 关闭 SQL SERVER服务,请稍等......
    net stop  mssqlserverecho 正在 启动 SQL SERVER服务,请稍等......
    net start mssqlserver
      

  8.   

    重启服务会导致buffer pool 的数据、执行计划全部清掉,第一次运行时严重影响性能
      

  9.   

    SQL日志我看过了,没有什么异常的,请教版主如何判断等待状态是资源等待还是其它等待
      

  10.   

    TempDB的最后修改时间是4号的,今天都5号9点了业务一直在发生这个正常吗
      

  11.   

    将数据库和应用分离服务器并不一定带来性能的提高!
    如果原先数据库和应用共享服务器时,内存、CPU比较吃紧(特别是后者),那么分离后是很可能有性能改善的。
    但是如果数据库和应用之间的数据交换量很大,分离后就从内存交换数据变成网络交换数据,性能反而是下降的。
      

  12.   

    SELECT TOP 10 * FROM sys.dm_os_wait_stats ORDER BY wait_time_ms DESC --现在执行SELECT TOP 10 * FROM sys.dm_os_waiting_tasks ORDER BY wait_duration_ms DESC --卡的时候执行