如何优化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 sysdm_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
内存是影响Microsoft SQL Server系统性能的一个重要因素,SQL Server数据库安装时将为具有32MB物理内存的机器缺省配置16MB可用内存,16MB物理内存的机器缺省配置4MB可用内存。应在Microsoft SQL Server数据库安装后进行内存选项(Memory)设置,配置值为2GB。
为了确定SQL Server系统最适宜的内存需求,可以从总的物理内存中减去Windows NT40需要的内存以及其它一些内存需求后综合确定,理想的情况是给SQL Server分配尽可能多的内存,而不产生页面调度。
1、根据物理内存合理规划SQL Server可用内存
在大多数的生产环境中,服务器配备的物理内存是64MB~128MB,偶尔也有256MB的,只要配置恰当是完全可以满足SQL Server的内存需求的。下表是笔者关于SQL Server内存分配的建议规划,供参考。
物理内存 分配给SQL Server 设置值(单位:2KB)
8MB 4MB 2048
16MB 8MB 4096
32MB 16~18MB 8192~9216
48MB 28~34MB 14336~17408
64MB 40~46MB 20480~23552
128MB 100~108MB 51200~55296
256MB 216~226MB 110592~115712
512MB 464~472MB 237568~241664
以下是SQL Server内存选项(Memory)设置方法
(1)从Microsoft SQL Server程序集中启动SQL Enterprise Manager;
(2)从Server Manager窗口中选择“Server”菜单选项;
(3)在“Server”菜单中选择“Configurations”选项;
(4)在“Server Configuration”对话框中选择”Configuration”标签,Configuration窗口显示配置选项列表;
(5)选中“Memory”项目,在“Current”栏填入新值;
(6)停止并重新启动SQLServer服务,使设置生效。
2、合理扩充虚拟内存、增大SQL Server可用内存
当SQL Server系统确实需要扩大可用内存时,应在磁盘空间充足的情况下扩充供虚拟内存,并相应增大 SQL Server可用内存。具体做法是,系统管理员首先扩充服务器的虚拟内存,然后再参考上表增大SQL Server可用内存,关键是要根据系统的负载情况综合决定是否扩充内存、优化配置。
3、使用tempinRAM
SQL Server使用tempdb临时数据库作为一些查询连接操作时排序或创建临时表的工作空间。将tempdb创建在RAM中可以使系统操作性能有较大提高,而且因为tempdb在每次重启动服务器时都重建,这样即使有非正常的关闭也是较为安全的,例如停电故障。要将tempdb创建在RAM中,可以使用sp_configure进行设置,具体用法请参阅有关资料。
由于tempdbinRAM使用的内存是由系统从内存体单独分配的,与SQL Server的内存选项设置的可用内存池是分开的,使用tempdbin RAM将减少整个系统的可用内存,应根据SQL Server和服务器运行情况进行配置,否则就可能适得其反,影响系统性能。另外,适当增加tempdb数据库空间,即使不使用tempdbin RAM,也可以提高数据库的运行速度。
4、注意事项
(1)建议在生产环境中SQL Server不要设置小于32MB内存,而且数据库服务器上尽量不要运行其它应用程序;
(2)扩充供虚拟内存、增大SQL Server可用内存,应考虑物理内存使用状况和磁盘空间许可情况;
(3)在可能的情况下,要为系统留有部分额外的内存,这样在服务器上打开一个服务或添加一个进程且不改变SQL Server内存配置时,不致于使NT服务器的运行速度受到影响(变得很慢),一般认为最小为2MB为20MB。
5、巧用内存配置,解决统计服务器问题
一单位的统计服务器投入使用后,运行速度较慢,经排查原因,发现SQLServer中的内存选项(Memory)仅为安装缺省值——16MB(而服务器有128MB的物理内存),在将内存值调整为100MB时却误将其改成了 1000MB,使得SQL Server服务不能启动,统计数据库打不开,也就不能再次进入SQL Enterprise Manager修改内存设置了。由于近期未备份业务数据,不到万不得已不能重装SQLServer数据库,就试图用命令行参数命令来重新启动SQL Server服务,但均不能奏效,陷入了困境。我们经过仔细分析提出:既然SQL Server可用内存设置值远远大于物理内存,造成SQLServer服务不能启动,何不扩充虚拟内存呢经设法将机器虚拟内存扩充至1000MB并重新启动,SQL Server数据库成功启动,问题迎刃而解。
6、结束语
目前,大多数单位投入使用的Microsoft SQL Server数据库服务器的物理内存一般都在64MB以上,如农业银行省、市分行的统计服务器配备128MB物理内存,只要按照上面提出的方法合理规划、优化NT和SQL Server的内存配置,使设置尽可能达到,应用系统就一定能够充分发挥设计功能、满足业务需求。
如何优化内存的管理,提高内存的使用效能,尽可能地提高运行速度,是我们所关心的问题。
下面介绍一下在Windows操作系统的使用中,如何提高其内存的使用效能,优化内存管理的几种方法。
方法一、及时释放内存。
如果你发现系统的内存不多了,就要注意释放内存。所谓释放内存,就是将驻留在内存中的数据从内存中释放出来。释放内存最简单、最有效的方法,就是重新启动计算机;另外就是关闭暂时不用的正在运行的程序,包括在后台运行的程序。平时就要养成这样的好习惯,随时关闭那些暂时不用的程序、文件或窗口。有些应用程序不能用一般的方法关闭,这时就要进行热启动,如按下“CTRL+ALT+DEL”;另外要注意剪贴板中如果存储了一幅或图像,或图像是要占用大量内存的,这时只要剪贴几个字,就可以把内存中剪贴板上原有的冲掉,从而将它所占用的大量的内存释放出来;还有,在后台打印文件,也会占用大量的内存空间。
方法二、监视内存。
系统的内存不管有多大,总是会用完的,虽然有虚拟内存,但由于硬盘的读写速度无法与内存的速度相比,大量、频繁地使用虚拟内存将使计算机操作变得无法忍受,所以在使用内存时,就要时刻监视内存的使用情况。Windows操作系统中提供了一个系统监视器,可以监视内存的使用情况。
另外还有一个简单方法,就是在任何一个文件窗口中,选择“帮助/关于Windows”菜单,在打开的窗口中就可以看到目前内存使用的情况,一般如果只有60%的内存资源可用,这时你就要注意调整内存了,不然就会严重影响你的运行速度和系统性能。
方法三、调整高速缓存区域的大小。
所谓高速缓存,是指系统在读取磁盘、光盘上的数据时,采取“预读取”技术,也就是将估计即将要读取的数据预先读取到内存的高速缓冲存储器中,这样cpu在高速缓冲存储器中读取数据时就较快,从而提高运行速度。在内存中设置高速缓冲存储器,可以明显地加快读取数据的速度。Windows可以根据内存的大小自动地设置高速缓存的大小,当然用户也可以根据自己使用内存的情况,在内存中设置高速缓存的大小,以优化内存的使用。方法如下:在桌面上用鼠标右击“我的电脑”;在弹出的菜单中单击“属性”;在弹出的窗口中单击“性能”标签;单击下面的“文件系统”按钮;单击“硬盘”标签;拖动“预读式优化”调节杆,设置预读取条件;在“计算机的主要用途”栏设置系统利用高速缓存的比例;如果系统的内存较多,可选择“网络服务器”,这样系统将用较多的内存作为高速缓存;在CD-ROM标签中,可以直接调节系统用多少内存作为CD-xviii)ROM光盘读写的高速缓存,注意要在“最佳访问方式”中选择“四倍速或更高速”,这样系统将根据情况设置缓存的大小;也可以调节“追加的'高速缓存大小”栏中的调节杆,xxii)追加高速缓存。
方法四、提高提高系统其它部件的性能。
计算机其它部件的性能,对内存的使用也有较大的影响,如总线类型、cpu、硬盘、显存等。如果显存太小,而显示的数据量很大,再多的内存也是不可能提高其运行速度和系统的效能的。如果硬盘的速度太慢,特别是平均寻道时间和速度太慢,则会严重影响系统的虚拟内存的读写速度和使用效能,导致整个系统的效能下降。
方法五、优化内存中的数据。
在Windows中,驻留内存中的数据越多,如桌面上的快捷图标、任务栏中的图标、系统托盘中的时间等,都要占用内存资源。所以,桌面上和任务栏中的快捷图标不要设置得太多。如果内存资源较为紧张,可以考虑优化这些项目,尽量少用各种后台驻留的程序,特别是设计不好的程序,要占用大量内存资源。平时在操作电脑时,不要打开太多的文件或窗口,或者在程序中打开太多的数据文件,如果打开了,不再用时要及时关闭这些文件或窗口。
另外,长时间地使用计算机后,如果没有重新启动计算机,内存中的数据排列就有可能比较混乱而导致系统的性能下降,这时你就要考虑重新启动计算机。
以上五种方法可以有效的提高内存使用效能,试试吧,让你电脑飞一般的感觉。
我对我的windows2000服务器是如何进行性能优化的
1:我们知道,系统刚装完之后,会存在很多无用的文件,这些文件都在winnt下面我们就对这些文件进行del,比如tmp、bak、log、old、txt甚至是作为桌面背景的bmp文件,help这个目录下的,基本上也没什么用,反正服务器上的help我是从来不去看它的!还有winnt\temp文件,是软件安装的过程序中,可能生成的临时文件,如果没用,就删掉吧!然后清空回收站吧!
2:启动和故障恢复选项,右击我的电脑,选择属性\高级\启动和故障恢复,将选择操作系统列表前面的勾直接去掉好了,写入调试信息,选择无!
3:浏览器历史记录和缓存,可以通过点击浏览器的“工具/Internet选项/常规/Internet临时文件/删除文件
4:(1)运行磁盘查错的时候,请先把运行的程序关闭,打开“我的电脑”,右击想要整理的硬盘驱动器,选择“属性/工具”,在查错一栏中点击“开始检查”在进行磁盘检查之前请确认“自动修复文件系统错误”和“扫描并试图恢复坏扇区”这两项被选中。
(2)碎片整理,请把所有运行的程序关闭,特别是屏幕保护、计划任务、实时查杀毒软件等等可能造成磁盘存储数据变化的程序,然后打开“我的电脑”,右击想要整理的硬盘驱动器,选择“属性/工具”,在“碎片整理”中选择“开始整理”,你可以点击“分析”按钮让系统分析你的硬盘的基本情况,然后告诉你的硬盘是否需要整理。如果需要整理,那么你只要点击“碎片整理”按钮即可。整理的时间依据你的这个硬盘分区有多少簇来决定――不得不承认这个过程相当乏味、枯燥而且缓慢。所以你可以找具有类似功能的软件比如诺顿工具箱中就有磁盘整理的组件、另外象Diskeeper、Vopt等等程序整理的效果也不错(但是同windows自带的磁盘整理软件的效果仍然有差距),而且速度快。
5:硬盘驱动器设置,现在的硬盘一般都是支持DMA(Direct Memory Access:直接内存存取)模式,所以确保你的DMA硬盘(不管是DMA33/66/100)只要能正确的在DMA模式下工作,就能保证你的系统工作在比较高的效率之下。启动DMA模式――点击“开始/设置/控制面板/系统/硬件/设备管理器”,然后点击“IDE ATA/ATAPI控制器”,右击Primary IDE Channel,选择“属性/高级设置”在“传送模式”中选择DMA(若可用)。依据提示重新启动计算机,你下次打开这个界面应该能看到“当前传输模式”中是DMA了。
6:关闭索引服务,关闭这项功能的方法是,打开我的电脑,右击相应的硬盘驱动器分区图标,选择属性,去掉“允许索引服务编制该磁盘的索引以便快速搜索文件”选项前的对钩,点击“应用”,就会出现是仅仅将属性应用于这个分区的根目录还是连同它下面的子文件夹和文件。选择“将更改应用于<盘符>:\,子文件夹和文件”。然后点击确定,等待系统自己处理完成就可以了。
7:自动关闭停止响应的程序,对于停止响应的程序,可以通过修改注册表使得系统不再通知你,而是自动关闭――不再需要用户的干预,从而提高工作效率。具体方法是,打开注册表编辑器,找到如下键值:
HKEY_CURRENT_USER\Control Panel\Desktop,把AutoEndTasks修改为1。以后如果遇到停止响应的程序,系统就会自动中止它。
8:设置虚拟内存,我们应选择优化后台服务
9:停止Win2000中不必要的服务,以下是我停掉的服务,大家可以参考一下!
服务名 简介
COM+ Event System 提供事件的自动发布到订阅 COM 组件
Computer Browser 维护网络上计算机的最新列表以及提供这个列表
Network Connections 管理“网络和拨号连接”文件夹中对象,在其中您可以查看局域网和远程连接
Plug and Play 管理设备安装以及配置,并且通知程序关于设备更改的情况
Protected Storage 提供对敏感数据(如私钥)的保护性存储,以便防止未授权的服务,过程或用户对其的非法访问(备注:缺少了此项后可能造成在IE中输入文字后死机)
RusAs Service 在不同赁据下启动过程服务
Remote Procedure Call (RPC) 提供终结点映射程序(endpoint mapper)以及其它 RPC 服务
Security Accounts Manager 存储本地用户帐户的安全信息
Server 提供 RPC 支持、文件、打印以及命名管道共享
Task Scheduler 允许程序在指定时间运行
Windows Management Instrumentation Driver Extensions 与驱动程序间交换系统管理信息
0条评论