如何优化ms server 2008 r2 的内存释放
SQL Server 2008 或者R2的默认内存分配是2147483647MB, 差不多算是无穷大,对于系统内存的管理策略是有多少占多少。SQLserver会把所有处理过的SQL操作缓存在内存里,这样就不用总去读硬盘了。但是如果长时间运行SQL Server, 系统内存被用的差不多,再开启其他程序就有可能会报内存不足。这时候就需要释放内存缓存啦。一般我用以下两种办法:
很简单,打开SQL Server configuration Manager,然后把SQL Server(MSSQLSERVER)重启一下,一般默认的instance 就是MSSQLServer,当然你如果装了其他的instance(实例)就选择相应的,例如MSSQLServer(SQLServLatin1), MSSQLServer(ARABIC)。
这种方法最简单有效,但是只能临时的清除SQLServer缓存所占的内存空间,时间长了SQLServer还会把内存占满。而且很重要的是这种方法不能在SQLserver有连接的情况下使用,那样会让正在使用SQLServer的用户暂时无法连接SQLServer,甚至导致程序处错误。而你作为管理员就……
第二种方法比较复杂,我也不是SQLServer高手,只是从网上学习得来的一些query:
DBCC FREEPROCCACHE
DBCC FREESESSIONCACHE
DBCC FREESYSTEMCACHE('All')
DBCC DROPCLEANBUFFERS
以上一段一般能释放缓存,(注意引号有的时候因为word文档里打不出英文的引号,最好拷到记事本里编辑一下)但是有的时候不是很管用。因为SQLserver不会因为Cache(缓存)释放了而释放内存,占了茅坑不一定XX。此命令只会让SQLServer不会继续占领新的内存,定期执行一下还可以。关键是还要释放一下内存。
通过以下Query 可以看出当前服务器所占内存情况
SELECT * FROM sys.dm_os_performance_counters
WHERE counter_name IN ('Target Server Memory (KB)','Total Server Memory (KB)')
Target Server Memory(KB)和 Total Server Memory(KB)字面意思所得就是目标和当前SQL Server所占的内存大小。
EXEC sp_configure 'show advanced options', 1
GO
EXEC sp_configure 'max server memory', 256
EXEC ('RECONFIGURE' )
WAITFOR DELAY '00:00:05'
EXEC sp_configure 'max server memory', 2147483647
EXEC ('RECONFIGURE' )
GO
EXEC sp_configure 'show advanced options', 0
GO
其实我用这几句也不是很奏效,时间一长还是可能会有内存不够的情况。
******
总的来说我的管理办法是:
装好了SQLServer之后立刻设置最大使用内存
EXEC sp_configure 'show advanced options', 1 -- 这句是打开advanced options
GO
EXEC sp_configure 'max server memory', 9216 -- 设置最大内存为9G,我们server 内存是16G的,留下7G足够了
EXEC ('RECONFIGURE' )
GO
EXEC sp_configure 'show advanced options', 0 --记得用完了把advanced options关掉
GO
过一段时间觉得不行了就执行一下
DBCC FREEPROCCACHE
DBCC FREESESSIONCACHE
DBCC FREESYSTEMCACHE('All')
DBCC DROPCLEANBUFFERS
这个清缓存也很头疼,不知道什么时候合适,就这样吧,管他呢,我又不是专家,出了问题大不了来机器不行。或者写个Procedure,用job定期执行。
没办法,SQLServer太霸道了,以上方法不是万全之策,建议还是把SQLServer放到一边单独用吧。
1、将空闲的SATA或IDE等通道关闭掉 一般来说现在的服务器采用了SAS万转高速硬盘,并做了RAID,那么如果没有使用到SATA设备或IDE设备,我们应该把它们给关闭掉。Windows Server 2008系统在启动的过程中,会自动将所有硬件设备加载成功,这个过程会消耗系统很多资源以及浪费不少时间;事实上,系统中的不少硬件设备我们平时很少使用到,将这些空闲的硬件设备关闭使用可以有效地提高服务器系统的运行效率。例如,当我们在Windows Server 2008系统下打开系统的设备管理器窗口,从中展开“IDE ATA/ATAPI控制器”项目,我们可以看到系统包含两个IDE通道,这两个通道在旧版本系统下被称之为主IDE通道、次IDE通道;不过,在Windows Server 2008系统环境下IDE通道却没有主次之分。考虑到许多普通朋友的计算机中通常只使用一个硬盘设备,所以我们完全可以将另外一个处于空闲状态的IDE通道关闭使用,以便提高系统的启动速度。
在关闭空闲IDE通道的使用状态时,我们可以先用鼠标右键单击设备管理器列表窗口中的其中一个IDE通道选项,从其后弹出的快捷菜单中执行“属性”命令,打开对应IDE通道的属性设置界面;单击该设置界面中的“高级设置”标签,进入如图1所示的标签设置页面;在该设置页面中,我们可以看出当前设备的具体传输模式,这说明该IDE通道目前已经被使用着,而另外一个IDE通道则处于空闲状态。此时,再用鼠标右键单击另外一个处于空闲状态的IDE通道,并从快捷菜单中执行“卸载”命令,那样一来空闲IDE通道就能被关闭使用了。
同样地,我们还可以将WindowsServer 2008系统中其他一些没有使用的硬件设备关闭使用,以便尽可能地提高Windows Server 2008系统的启动速度。
2、将空闲通信协议取消掉
对于每天上网冲浪都要面对的网络连接,相信没有人会料到它也会成为拖慢系统启动速度的一个原因。它所反映出来的慢主要就是在系统启动过程中,Windows Server 2008系统在启动过程中会尝试使用TCP/IP协议进行网络登录,以便能够进入局域网网络,同时为其自动分配合适IP地址。可是,在默认状态下,Windows Server 2008系统会自动优先使用TCP/IPv6协议来连接网络,在经过反复尝试连接之后,发现TCP/IPv6协议所对应的网络连接并不存在,之后才会尝试使用TCP/IPv4协议来连接网络,很显然这个过程多走了一些弯路,从而会影响服务器系统的启动速度;为了让Windows Server 2008系统直接使用TCP/IPv4协议来连接网络,我们需要采用手工方法来关闭TCP/IPv6协议的使用状态,以避免系统继续搜索使用TCP/IPv6协议所对应的网络连接,下面就是具体的关闭操作步骤:
很简单,打开SQL Server configuration Manager,然后把SQL Server(MSSQLSERVER)重启一下,一般默认的instance 就是MSSQLServer,当然你如果装了其他的instance(实例)就选择相应的,例如MSSQLServer(SQLServLatin1), MSSQLServer(ARABIC)。
这种方法最简单有效,但是只能临时的清除SQLServer缓存所占的内存空间,时间长了SQLServer还会把内存占满。而且很重要的是这种方法不能在SQLserver有连接的情况下使用,那样会让正在使用SQLServer的用户暂时无法连接SQLServer,甚至导致程序处错误。而你作为管理员就……
第二种方法比较复杂,我也不是SQLServer高手,只是从网上学习得来的一些query:
DBCC FREEPROCCACHE
DBCC FREESESSIONCACHE
DBCC FREESYSTEMCACHE('All')
DBCC DROPCLEANBUFFERS
以上一段一般能释放缓存,(注意引号有的时候因为word文档里打不出英文的引号,最好拷到记事本里编辑一下)但是有的时候不是很管用。因为SQLserver不会因为Cache(缓存)释放了而释放内存,占了茅坑不一定XX。此命令只会让SQLServer不会继续占领新的内存,定期执行一下还可以。关键是还要释放一下内存。
通过以下Query 可以看出当前服务器所占内存情况
SELECT * FROM sys.dm_os_performance_counters
WHERE counter_name IN ('Target Server Memory (KB)','Total Server Memory (KB)')
Target Server Memory(KB)和 Total Server Memory(KB)字面意思所得就是目标和当前SQL Server所占的内存大小。
EXEC sp_configure 'show advanced options', 1
GO
EXEC sp_configure 'max server memory', 256
EXEC ('RECONFIGURE' )
WAITFOR DELAY '00:00:05'
EXEC sp_configure 'max server memory', 2147483647
EXEC ('RECONFIGURE' )
GO
EXEC sp_configure 'show advanced options', 0
GO
其实我用这几句也不是很奏效,时间一长还是可能会有内存不够的情况。
******
总的来说我的管理办法是:
装好了SQLServer之后立刻设置最大使用内存
EXEC sp_configure 'show advanced options', 1 -- 这句是打开advanced options
GO
EXEC sp_configure 'max server memory', 9216 -- 设置最大内存为9G,我们server 内存是16G的,留下7G足够了
EXEC ('RECONFIGURE' )
GO
EXEC sp_configure 'show advanced options', 0 --记得用完了把advanced options关掉
GO
过一段时间觉得不行了就执行一下
DBCC FREEPROCCACHE
DBCC FREESESSIONCACHE
DBCC FREESYSTEMCACHE('All')
DBCC DROPCLEANBUFFERS
这个清缓存也很头疼,不知道什么时候合适,就这样吧,管他呢,我又不是专家,出了问题大不了来机器不行。或者写个Procedure,用job定期执行。
没办法,SQLServer太霸道了,以上方法不是万全之策,建议还是把SQLServer放到一边单独用吧。
SQL Server 2008 或者R2的默认内存分配是2147483647MB, 差不多算是无穷大,对于系统内存的管理策略是有多少占多少。SQLserver会把所有处理过的SQL操作缓存在内存里,这样就不用总去读硬盘了。但是如果长时间运行SQL Server, 系统内存被用的差不多,再开启其他程序就有可能会报内存不足。这时候就需要释放内存缓存啦。一般我用以下两种办法:
很简单,打开SQL Server configuration Manager,然后把SQL Server(MSSQLSERVER)重启一下,一般默认的instance 就是MSSQLServer,当然你如果装了其他的instance(实例)就选择相应的,例如MSSQLServer(SQLServLatin1), MSSQLServer(ARABIC)。
这种方法最简单有效,但是只能临时的清除SQLServer缓存所占的内存空间,时间长了SQLServer还会把内存占满。而且很重要的是这种方法不能在SQLserver有连接的情况下使用,那样会让正在使用SQLServer的用户暂时无法连接SQLServer,甚至导致程序处错误。而你作为管理员就……
第二种方法比较复杂,我也不是SQLServer高手,只是从网上学习得来的一些query:
DBCC FREEPROCCACHE
DBCC FREESESSIONCACHE
DBCC FREESYSTEMCACHE('All')
DBCC DROPCLEANBUFFERS
以上一段一般能释放缓存,(注意引号有的时候因为word文档里打不出英文的引号,最好拷到记事本里编辑一下)但是有的时候不是很管用。因为SQLserver不会因为Cache(缓存)释放了而释放内存,占了茅坑不一定XX。此命令只会让SQLServer不会继续占领新的内存,定期执行一下还可以。关键是还要释放一下内存。
通过以下Query 可以看出当前服务器所占内存情况
SELECT * FROM sys.dm_os_performance_counters
WHERE counter_name IN ('Target Server Memory (KB)','Total Server Memory (KB)')
Target Server Memory(KB)和 Total Server Memory(KB)字面意思所得就是目标和当前SQL Server所占的内存大小。
EXEC sp_configure 'show advanced options', 1
GO
EXEC sp_configure 'max server memory', 256
EXEC ('RECONFIGURE' )
WAITFOR DELAY '00:00:05'
EXEC sp_configure 'max server memory', 2147483647
EXEC ('RECONFIGURE' )
GO
EXEC sp_configure 'show advanced options', 0
GO
其实我用这几句也不是很奏效,时间一长还是可能会有内存不够的情况。
******
总的来说我的管理办法是:
装好了SQLServer之后立刻设置最大使用内存
EXEC sp_configure 'show advanced options', 1 -- 这句是打开advanced options
GO
EXEC sp_configure 'max server memory', 9216 -- 设置最大内存为9G,我们server 内存是16G的,留下7G足够了
EXEC ('RECONFIGURE' )
GO
EXEC sp_configure 'show advanced options', 0 --记得用完了把advanced options关掉
GO
过一段时间觉得不行了就执行一下
DBCC FREEPROCCACHE
DBCC FREESESSIONCACHE
DBCC FREESYSTEMCACHE('All')
DBCC DROPCLEANBUFFERS
这个清缓存也很头疼,不知道什么时候合适,就这样吧,管他呢,我又不是专家,出了问题大不了来机器不行。或者写个Procedure,用job定期执行。
没办法,SQLServer太霸道了,以上方法不是万全之策,建议还是把SQLServer放到一边单独用吧
臾仪施泰: 现在的服务器,配置超过4G就很多,在配置SQL Server数据库服务器后,很多人只选默认的设置,虽然可以正常使用,可是却大量浪费了内存空间(SQL服务使用的内存不会超过1.8G),系统性能也不能因为的大内存而提升,这是很可惜的....
抚远县15262803556: 我的电脑安装了SQL Server 2000就感觉变的有点卡,有什么办法可以优化下??
臾仪施泰: 个人电脑,数据库在不用的时候关闭SQL server吧
抚远县15262803556: 优化sqlserver数据库 - ?
臾仪施泰: 优化Microsoft SQL Server数据库内存配置内存是影响Microsoft SQL Server系统性能的一个重要因素,SQL Server数据库安装 时将为具有32MB物理内存的机器缺省配置16MB可用内存,16MB物理内存的机器缺省配置4MB可 用内存.应在...
抚远县15262803556: 如何优化ms server 2008 r2 的内存释放 - ?
臾仪施泰: SQL Server 2008 或者R2的默认内存分配是2147483647MB, 差不多算是无穷大,对于系统内存的管理策略是有多少占多少.SQLserver会把所有处理过的SQL操作缓存在内存里,这样就不用总去读硬盘了.但是如果长时间运行SQL Server, ...
抚远县15262803556: 如何优化sql server 服务器性能 - ?
臾仪施泰: 你可以通过profiler和性能工具,跟踪一段时间,然后分析一个瓶颈是什么,再对瓶颈进行处理.一般来说,增加足够大的内存能让性能快速提高.使用更快的硬盘.把数据库分离业务,比如A业务访问A数据库,B业务访问B数据库.
抚远县15262803556: SQL Server数据库如何优化? - ?
臾仪施泰: 可以通过如下方法来优化查询 : 1、把数据、日志、索引放到不同的I/O设备上,增加读取速度,以前可以将Tempdb应放在RAID0上,SQL2000不在支持.数据量(尺寸)越大,提高I/O越重要. 2、纵向、横向分割表,减少表的尺寸(sp_...
抚远县15262803556: Windows Server 2003操作系统性能优化方法汇总(至少提供5个方面的优化方法). - ?
臾仪施泰: 1、关闭不必要的服务,既提高安全性,也减少资源占用 2、调整虚拟内存的设置,过大的虚拟内存没有太多必要,也占用磁盘空间,但是虚拟内存最好不要小于你的物理内存.另外建议不要使用虚拟内存的自动增长. 3、调整系统属性|高级|性能中的内存优化设置,根据情况选择对后台服务还是应用程序优化 4、如果有多块磁盘,可以将一些I/O操作比较频繁的东西安装到第二块磁盘上,从而减少与操作系统的I/O竞争 5、定期清理垃圾文件,进行磁盘碎片整理 6、控制并减少各类广播流量,如ARP广播、DHCP、名称解析等.通过ARP静态绑定可以减少arp广播;使用DNS名称解决方案可以减少广播的名称解析. 暂时想到这么多,欢迎大家继续讨论
抚远县15262803556: 如何保证sqlserver2000的性能优良 - ?
臾仪施泰: 在设计一个新数据库时,你不但应该仔细研究业务需求而且还要考察现有的系统.大多数数据库项目都不是从头开始建立的;通常,机构内总会存在用来满足特定需求的现有系统(可能没有实现自动计算).显然,现有系统并不完美,否则你就不必再建立新系统了.但是对旧系统的研究可以让你发现一些可能会忽略的细微问题.一般来说,考察现有系统对你绝对有好处.
抚远县15262803556: 如何 提高 SQL SERVER 运行 效率 - ?
臾仪施泰: 可以从很多方面进行提高,1 硬件:增加内存、使用更高性能的CPU,使用更高性能的硬盘(存储)2 SQL系统:设置内存使用,数据文件每次增长大一点,减少增长频率,日志放在更高速的存储设置上.3 设计优化:建立必要的索引,建立必要的聚集索引或关键字4 SQL语句优化:比如用exists代替in ,查看语句,是否使用了正确的索引,去掉没有必要的order by ,去掉没有必要的union (可以使用union all代替的情况),减少游标的使用
抚远县15262803556: SQL Server 2005数据库,如何优化,提高性能. - ?
臾仪施泰: 查询速度慢的原因很多,常见如下几种:1、没有索引或者没有用到索引(这是查询慢最常见的问题,是程序设计的缺陷)2、I/O吞吐量小,形成了瓶颈效应.3、没有创建计算列导致查询不优化.4、内存不足5、网络速度慢6、查询出的数据量过大(可以采用多次查询,其他的方法降低数据量)7、锁或者死锁(这也是查询慢最常见的问题,是程序设计的缺陷)8、sp_lock,sp_who,活动的用户查看,原因是读写竞争资源.9、返回了不必要的行和列10、查询语句不好,没有优化