为什么SQL Server使用很少的内存

如题所述

默认情况下,SQLServer会依据可获得的系统资源动态改变它的内存需求。如果SQLServer需要更多的内存,它会要求操作系统确定是否有空闲的物理内存可用,并使用可用的内存。若SQLServer不再需要当前分配给它的内存,它就将内存释放给操作系统。当SQLServer动态使用内存时,它要求系统定期地检测可用的物理内存数量。SQLServer根据服务器活动增大或收缩高速缓冲存储器,以使可用物理内存保持在4MB到10MB之间。这就避免了系统进行换页操作。[也就是说,这种情况下SQLSERVER本身不会使物理可用内存小于4M,如果比较长的时间内都小于4M的话,则要看一下是不是该服务器上其它应用程序有问题]第二种情况:限制使用内存使用setworkingsetsize为sqlserver保留等于服务器内存设置的物理内存空间。即使是sqlserver进程此时是空闲的,系统也不会将SQLServer页交换出去。使用minservermemory保证sqlserver使用的最小内存。SQLServer启动时不立即分配minservermemory中所指定的内存量。但是,当内存使用由于客户端负荷而达到该值后,SQLServer将无法从已分配的缓冲池中释放内存。使用maxservermemory则防止SQLServer使用多于指定数量的内存,这样剩余的可用内存可以快速运行其它应用程序。SQLServer启动时不立即分配maxservermemory中所指定的内存。内存使用随SQLServer的需要而增长,直到达到maxservermemory中所指定的值。SQLServer无法超过该内存使用值,除非增加maxservermemory值。第一种情况比较适用于服务器专做sqlserver服务器的情况,第二种情况适用于为在同一台计算机上运行的其它应用程序保留一定的内存以便于快速响应。(另:如果想动态分配sqlserver的内存,则不要设置setworkingsetsize选项,使用默认值即可。至于这些参数如何设置参见另外的文档)监视SQLServer所使用的内存和计数器有助于确定:是否由于缺少可用物理内存存储高速缓存中经常访问的数据而导致瓶颈存在。如果是这样,SQLServer必须从磁盘检索数据。是否可通过添加更多内存或使更多内存可用于数据高速缓存或SQLServer内部结构来提高查询性能。SQLServer需要从磁盘读取数据的频率。与其它操作相比,例如内存访问,物理I/O会耗费大量时间。尽可能减少物理I/O可以提高查询性能。对sqlserver服务器内存的监视:Memory:AvailableBytes计数器表示当前进程可使用的物理内存字节数。如果小于4M或更小,说明计算机上总的内存可能不足,或某个程序没有释放内存●Memory:PageFaults/sec每秒软性页面失效的数目(包括有些可以直接在内存中满足而有些需要从硬盘读取)较page/sec只表明数据不能在内存指定工作集中立即使用。如果该值偶尔走高,表明当时有线程竞争内存。如果持续很高,则内存可能是瓶颈。Memory:Pages/sec计数器表示由于缺页处理而从磁盘取回的页数,或由于缺页处理而写入磁盘以释放工作集空间的页数。●PageReads/sec每秒发出的物理数据库页读取数。这一统计信息显示的是在所有数据库间的物理页读取总数。由于物理I/O的开销大,可以通过使用更大的数据高速缓存、智能索引、更高效的查询或者改变数据库设计等方法,使开销减到最小。●PageWrites/sec所发出的物理数据库页写入的数目。若查看原帖>>
温馨提示:内容为网友见解,仅供参考
无其他回答

为什么SQL Server使用很少的内存
如果小于4M或更小,说明计算机上总的内存可能不足,或某个程序没有释放内存●Memory:PageFaults\/sec每秒软性页面失效的数目(包括有些可以直接在内存中满足而有些需要从硬盘读取)较page\/sec只表明数据不能在内存指定工作集中立即使用。如果该值偶尔走高,表明当时有线程竞争内存。如果持续很高,...

为什么SQL Server使用很少的内存
猜测这台期间开启了Lock Pages In memory功能,之后得到确认。因为开启Lock Pages In memory之后,SQL Server会使用AWE APIs锁定内存页,所以这部分的内存使用不会显示在Working Set中。So in summary the AWE APIs for 32bit and 64bit SQL Server systems are used for different purposes. In 32bit...

浅谈优化SQLServer服务器内存配置
由于tempdbinRAM使用的内存是由系统从内存体单独分配的,与SQL Server的内存选项设置的可用内存池是分开的,使用tempdbin RAM将减少整个系统的可用内存,应根据SQL Server和服务器运行情况进行配置,否则就可能适得其反,影响系统性能。另外,适当增加tempdb数据库空间,即使不使用tempdbin RAM,也可以提高数据...

服务器2012r2安装内存96G为什么可用内存64G?
5. 物理硬件限制:服务器的物理硬件配置也会影响可用内存的数量。如果服务器的硬件不支持那么大的内存,或者存在硬件故障,也可能导致可用内存减少。6. 内存配置:在SQL Server等数据库系统中,可以通过设置Min Server Memory (MB) 和 Max Server Memory (MB)来控制SQL Server使用的内存大小。如果这些值...

SQL Server配置内存过大、Server不能启动时怎么办
如果Server使用内存太小,影响到SQL Server的性能,但内存配置过大超过一定比例时,导致SQL Server不能启动。在ISQL中,用sp_configure “memory”可以看到你的Server现在使用的内存大小。这个数字单位为Page,每一个Page为2K。参数memory在启动Server时被读入内存。所以memory被修改之后,必须shutdown Server...

怎样解决SQL Server内存不断增加问题
当系统本身有内存可以用的的时候,SQL Server 根据操作系统报告的物理内存加载动态增大和收缩其缓冲池(缓存)的大小。只要有足够的内存可用于防止内存页面交换(在 4 至 10 MB 之间),SQL Server 缓冲池就会继续增大。如果你想把sql的内存控制在某个数量,可以更改配置信息...

SQL Server执行SQL语句时内存占用特点[3]
首先简述一下SQL Server内存占用的特点 SQL Server所占用的内存除程序(即SQL Server引擎)外 主要包括缓存的数据(Buffer)和执行计划(Cache) SQL Server以 KB大小的页为单位存储数据 这个和SQL Server数据在磁盘上的存储页大小相同 当SQL Server执行SQL 语句时 如果需要的数据已经在其内存中 则直接从内存...

为什么SQL Server运行中会隔1、2个小时就把我的内存全“吃”了呢...
只要可用物理内存大小保持在4MB到10MB之间,SQL Server 缓冲池就会继续增大(保留可用物理内存在4MB到10MB之间是为了避免操作系统因为缺少内存而频繁地换页)。如果物理可用内存变得较少的时候,则SQL Server会将一些内存释放给操作系统。需要采取措施限制SQL Server 的内存使用量。可以通过设置SQL Server 数据...

sql server 在占用服务器内存居高不下怎么办
1、SQL Server 作为一个数据库服务系统,它的作用就是以尽可能高效、实用的方式管理数据,所以,它占用服务器内存高是很普遍的现象。2、但是如果在SQL数表设计、存储过程代码编写、临时表的应用中,不注意考虑内存占用与释放,CPU运算,可能会额外的造成不必要的内存占用、CPU占用等。3、SQL Server在运行...

SQLServer如何设置内存大小
1. 调整最大服务器内存设置 SQL Server 使用内存来缓存数据,以便快速检索。但是,如果它占用了太多的内存,可能会导致系统资源争用,影响性能。通过配置 SQL Server 的最大服务器内存设置,可以限制它使用的内存量。这可以在 SQL Server Management Studio (SSMS) 中完成,通过右键点击服务器,选择“内存...

相似回答