`
evget
  • 浏览: 144701 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
文章分类
社区版块
存档分类

SQLServer占内存过多的问题

阅读更多
文章关键字:|SQLServer|内存|MSSQL|IO|

  经常看见有人问,MSSQL占用了太多的内存,而且还不断的增长;或者说已经设置了使用内存,可是它没有用到那么多,这是怎么一回事儿呢?首先,我们来看看MSSQL是怎样使用内存的。

  最大的开销一般是用于数据缓存,如果内存足够,它会把用过的数据和觉得你会用到的数据统统扔到内存中,直到内存不足的时候,才把命中率低的数据给清掉。所以一般我们在看statistics io的时候,看到的physics read都是0。

  其次就是查询的开销,一般地说,hash join是会带来比较大的内存开销的,而merge join和nested loop的开销比较小,还有排序和中间表、游标也是会有比较大的开销的。

  所以用于关联和排序的列上一般需要有索引。

  再其次就是对执行计划、系统数据的存储,这些都是比较小的。

  我们先来看数据缓存对性能的影响,如果系统中没有其它应用程序来争夺内存,数据缓存一般是越多越好,甚至有些时候我们会强行把一些数据pin在高速缓存中。但是如果有其它应用程序,虽然在需要的时候MSSQL会释放内存,但是线程切换、IO等待这些工作也是需要时间的,所以就会造成性能的降低。这样我们就必须设置MSSQL的最大内存使用。可以在SQL Server 属性(内存选项卡)中找到配置最大使用内存的地方,或者也可以使用sp_configure来完成。如果没有其它应用程序,那么就不要限制MSSQL对内存的使用。

  然后来看查询的开销,这个开销显然是越低越好,因为我们不能从中得到好处,相反,使用了越多的内存多半意味着查询速度的降低。所以我们一般要避免中间表和游标的使用,在经常作关联和排序的列上建立索引。



原文地址:http://www.evget.com/zh-CN/Info/ReadInfo.aspx?id=9186
分享到:
评论

相关推荐

    SQL Server数据库占用过多内存的解决方法

    ### SQL Server数据库占用过多内存的解决方法 #### 内存使用概述 在SQL Server数据库运行过程中,内存管理是一项至关重要的任务。SQL Server会利用内存来提高数据访问速度和查询性能。其中,数据缓存占据内存的...

    SQL Server的内存为何不断增加

    `max server memory`设定了上限,确保数据库引擎不会过度占用内存。如果两者设置相同,数据库引擎将在达到这个值后停止动态调整内存。 综上所述,SQL Server的内存不断增加是由于其自动内存管理策略,旨在优化查询...

    优化SQL Server的内存占用之执行缓存

    但是,如果执行缓存中的计划过多,会导致内存占用增加,从而影响 SQL Server 的性能。 使用参数化查询减少执行缓存占用 参数化查询是减少执行缓存占用的重要方法。参数化查询可以减少执行计划的数量,从而减少执行...

    SQL Server 2005内存调优

    - **最大内存配置**:为了避免SQL Server 占用过多内存导致其他服务或应用程序受到影响,可以通过设置最大内存值来进行限制。这一设置需要根据服务器的实际内存大小以及并发用户的数量来合理确定。 ##### 3.2 利用...

    sqlserver内存清理

    合理设置这两个参数,可以避免SQL Server过度占用内存,同时确保操作系统和其他应用的内存需求。 2. 缓冲池清理: - SQL Server有内置机制来自动管理缓冲池,但有时可能需要手动干预。DBCC FLUSHPROCINDB 和 DBCC ...

    SQL SERVER 内存配置

    合理设置这两个值可以确保SQL Server不会过度占用内存,影响其他系统进程,同时也能保证SQL Server有足够的内存进行高效操作。 最小服务器内存应设置为保证SQL Server基本操作所需的内存,包括缓冲池、计划缓存和...

    SQLServer对于内存的管理.pdf

    SQL Server实际可用的内存量受多个因素影响: 1. **物理内存的大小**:直接决定了SQL Server理论上可利用的最大内存量。 2. **Windows版本的内存限制**:不同版本的Windows对内存使用有不同限制,如Windows Server ...

    SQL Server中的动态和静态内存分配

    然而,这种动态分配可能导致内存逐渐被SQL Server占用,尤其是在服务器只运行SQL Server的情况下。 相比之下,静态内存分配创建了一个固定大小的内存池,SQL Server只能在这个范围内工作,不再进行额外的内存分配。...

    改善SQL Server数据库的内存管理方法

    在本文中,我们将探讨如何改善SQL Server的内存管理,以避免数据库占用过多内存,影响其他应用程序的运行。 首先,我们了解到在系统升级后,SQL Server 的内存占用显著增加,这是因为SQL Server 默认会根据物理内存...

    核心业务的SqlServer日常巡检项目

    总结来说,SQL Server的日常巡检应包括但不限于上述项目,通过全面、系统的检查,DBA可以提前发现和解决潜在问题,保证数据库系统的高效、稳定运行。此外,根据实际环境和业务需求,还应持续调整和扩展巡检内容,以...

    SQL Server 2008设置最大连接数

    - 资源限制:根据服务器的硬件资源(如内存、CPU)和当前的工作负载来设定,避免过多连接占用资源。 - 应用需求:根据应用的并发用户数量和并发访问模式来设定,确保大多数用户能正常连接。 - 并发性能:设置得过...

    SqlServer2014ExpressLocalDB64位版离线安装版

    它包含了 SQL Server Express 的核心功能,并且提供了更快速的启动时间和更小的内存占用,使得在单个用户环境中更加高效。此离线安装版适用于64位操作系统,如Windows 7及以上版本。 首先,Sql Server 2014 Express...

    sql server 语句优化

    - **合理设置参数**:例如,设置`SQLServermaxservermemory`来限制SQL Server最大内存使用量,防止占用过多系统资源。 ##### 5. 提高查询执行速度 - **优化查询计划**:通过调整查询条件和使用提示(Hints),引导...

    sql server 优化总结

    1. **调整内存配置**:适当增加SQL Server的工作内存可以提高缓冲池的效率,减少磁盘I/O。 2. **监控内存使用情况**:通过动态管理视图(DMVs)监控内存消耗,确保内存分配合理。 五、硬件优化 1. **高速存储设备...

    SQLSERVER大批量数据的处理和优化

    6. **查询返回数据量过大**:一次查询返回过多的数据不仅会占用大量带宽资源,还会增加服务器的处理负担。 7. **锁或死锁**:不当的事务管理和并发控制机制会导致锁或死锁问题,进而影响查询性能。 8. **资源竞争**...

    SQL Server 2008 序列号

    - **监控与报警**:利用 SQL Server Agent 设置定期任务和警报,及时发现并解决问题。 #### 结论 SQL Server 2008 作为一款成熟稳定的企业级数据库管理系统,在不同版本中提供了丰富的特性和工具。无论是用于开发...

    使用时容易忽略SQL Server的21个问题

    ### 使用时容易忽略SQL Server的21个问题 #### 一、引言 在数据库管理与应用开发领域,SQL Server 是一款广泛使用的数据库管理系统。然而,在日常使用中,即便是经验丰富的开发者也可能忽略某些重要的实践原则,...

    SQL Server Profiler

    2. **性能监控**:能够实时监控SQL Server的资源使用情况,如CPU、内存、磁盘I/O等,帮助管理员及时发现并解决性能问题。 3. **SQL语句分析**:可以详细记录每个SQL语句的执行时间、资源消耗,为优化查询提供数据...

    SQLSERVER性能调优

    在SQL Server性能调优的过程中,我们关注的是如何最大化数据库系统的效能,减少响应时间,提高...微软提供的资深资料,如《SQLSERVER性能调优(微软提供)-王宏》这样的文档,将为深入理解和应用这些知识提供宝贵的指导。

Global site tag (gtag.js) - Google Analytics