Abs*_*Abs 2 windows-server-2003 sql-server
大家好,
我正在运行带有大量脚本的 SQL 服务器,这些脚本更新大量数据(几个表上的数百万条记录)。但是,我认为存在内存泄漏,因为 RAM 使用量达到了可能的 8GB 中的 7.5GB - 这是在 8 核服务器上。该页面文件转移到7.28GB,因为我认为SQL服务器保持占用RAM,我不使用它认为。
我真的需要有关可能导致此问题的建议或如何解决此问题的建议!
Microsoft Windows Server 2003
Standard 64-bit edition
Service Pack 2
SQL Server 2005
Microsoft SQL Server Management Studio 9.00.4035.00
Microsoft Analysis Services Client Tools 2005.090.4035.00
Operating System 5.2.3790
Run Code Online (Sandbox Code Playgroud)
我正在使用带有 PHp 的 SQL 服务器,我使用 PHP 的 exec 函数通过 SQLCMD 运行脚本和查询。
所有这些 RAM 使用量和巨大的页面文件的可能原因是什么?
我希望我提供了足够的信息来尝试找出问题所在。如果我应该添加或尝试找出其他任何内容,请告诉我。
谢谢大家
boy*_*dc7 14
Sql Server 内存管理是一个非常广泛的话题,但是这里提到的一些事情应该解决。
我将假设您正在查看任务管理器以获取您所指的页面文件使用情况。这不是物理页面文件的大小或使用的物理页面文件空间量——这就是所谓的提交费用,它基本上是容纳所有物理页面文件空间的潜在总量。VAS(VAS 和物理内存不是一回事)。如果您想查看实际的页面文件使用情况,请查看 PagingFile:%Usage perfmon 计数器 - 它几乎肯定是一个非常小的百分比。您提交费用的总大小(即任务管理器将显示为 PF Usage)基本上是所有可能的 VAS(即所有页面文件空间 + 系统上的总物理内存)的总和。
SQL Server会不重写OS的内存管理功能-它使用相同的设置窗口,内存的API,任何用户模式应用程序(主要是的VirtualAlloc家庭和AWE家庭,这仍然是在64位系统中使用)。Sql Server确实有一个子系统专门用于管理它自己的内存利用率,但是这个子系统没有任何特殊的东西,在从底层操作系统请求、接收、提交等内存方面,任何用户模式应用程序都无法使用。
就像其他人提到的那样,Sql Server 绝对设计为基于系统/用户定义的约束使用尽可能多的内存。然而,它会根据系统的利用率增长到这个内存占用量(即它会在启动时保留相对少量的内存,并根据需要继续从操作系统请求/保留)。它还旨在(并且相当擅长)在必要时响应操作系统内存压力,并保持其保留的内存占用,直到/除非操作系统“请求”它回来(要更全面地了解这一点,请参阅此博客和这个博客和这个博客)。
如果要强制SQL Server发布/缩小它目前的内存占用,你可以简单地告诉它这样做(假设你正在运行的SQL 2005年及以上)通过降低指定的值“最大服务器内存”的系统配置和运行重新配置。这当然有限制(即此配置仅限制缓冲池,但这是迄今为止最大的内存消耗者)。这不是其他地方提到的连接级别设置,它是系统范围的设置(有与内存相关的连接级别设置,但与此问题无关)。如果您正在运行 Sql 2000,则需要进行调整,然后再循环 Sql 服务 - 请注意,Sql 2000 内存管理在几乎所有方面都有很大不同(并且可能需要单独的问题/讨论)。
我强烈建议您通读几篇博客以了解基本的 windows 和 sql server 内存管理,在尝试了解在这种情况下发生的情况时,不应花太长时间,并且非常值得了解这些知识。
归档时间: |
|
查看次数: |
22607 次 |
最近记录: |