资源描述:
《浅谈SQL_Server_对于内存的管理》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、浅谈SQLServer对于内存的管理简介理解SQLServer对于内存的管理是对于SQLServer问题处理和性能调优的基木,木篇文章讲述SQLServer对于内存管理的内存原理。secondarystorage)对于计算机來说,存储体系是分层级的。离CPU越近的地方速度愉快,但容量越小(如图1所示)。比如:传统的计算机存储体系结构离CPU由近到远依次是:CPU内的奇存器,-•级缓存,二级缓存,内存,硬盘。但同时离CPU越远的存储系统都会比z前的存储系统衣一•个数量级。比如硬盘通常要比同吋代的内存
2、大一个数量级。CPU寄存器图1•计算机存储体系因此对于SQLServer來说,正常的生产系统所配置的内心通常不能装载;所仃数据,因此会涉及到二级心储,也就是磁盘。磁盘作为现代计算机系统屮最后的机械存储部件,读取数据需要移动磁头(具体关于磁盘的原理,可以看我之前•写的一篇文章),并H山于数据库所访问的数据往往是随机分布在磁盘的各个位置,因此如果频繁的读取磁盘需要频繁的移动磁头,这个性能将会十分底下。由计算机体存储体系结构可以知道,计算机对丁•所有硬盘内数据的操作都需要首先读取到内存,因此利用好内存的
3、缓冲区而减少对磁盘I0的访问将会是提升SQLServer性能的关键.这也是本篇文章写作的出发点之一。SQLServer引擎,一个自我调整的引擎山于SQLServer过去一直面向是屮小型金业市场的原因,SQLServer存储引擎被设计成一个不需要太多配置就能使用的产品,从而减少了部署成本,但这也是很多人一直诟病的微软开放的配登过少。而对于SQLServer如何使用内存,几乎没有直接可以配置的空间,仅仅开放的配置只有是否使用AWE,以及实例占用的最大或最小内存,如图2所示。?fig务君国性-CABET
4、SOM-FC-ln
5、x
6、脚本▼E帮助£设器性库理全接is级限处基连数高权服务器内存选项啟使用AWE分国内存Of)最小朋务器内存(MB)(M):最大服务器内存(MB)OO:(2147483647其他内存选项创建索引占用的内存(KB,0=动态内存)CL):.服务器:连接:CAREYS0N-PCCarey5o]售杳看i车挖凰祥1进度连接就绪每次查询占用的最小内存CKB)(Q):[1024aSJSfl(c)图2.SQLServer町控控制内存的选项而对于具体的SQLServer如何使用内俗例如分配给执行
7、计划缓存多少,分配给数据buffer多少,这些都无法通过配置进行调控。这也是很多其它技术的开发人员对于使用微软技术的开发人员充满优越感的原因,而在我看來,址然SQLServer握供可控配置的地方很少,但是很多地方都可以在通晓原理的惜况下进行“间接”的配置。这也需要了解一些Windows的原理。SQLServer是如何使用内存的SQLServer存储引擎本身是个Windows下的进程,所以SQLServer使用内存和其它Windows进程一样,都需耍向Windows申请内存。从Windows申请到内
8、存之后,SQLServer使用内存粗略可以分为两部分:缓冲池内存(数据页和空闲页),非缓冲内存(线程,DLL,链接服务器等)。而缓冲池内存占ffiTSQLServer的大部分内存使用。缓冲池所占内存也就是图2最人最小内存所设置的,因此sqlservr.exe所占的内存有可能会大丁•图2中所设置的最人内存。还有一点是,SQLServer使用内存的特点是:有多少用多少,并且用了以后不释放(除非收到Windows内存压力的通知)。比如我所在公司的开发服务器,在几乎没有负载的时候來看内存使用,如图3所示。
9、-Inlx^Tindovs任务®HS文件g)选项@)查看笙帮ftb®应用程序进程I性能丨联网丨用户]映像名称1用尸名CPUI内存使用1▲•^sqlservr・execluster0013,119,220K)sqlbrowser・execluster00193,772Kservices.exeSYSTEM00176,664KRepgtingServicesService.execlustek00110,644KRepgtingServicesService.execlust啟00109,724KM
10、sDtsSrvr.exeNETWORKSERVICE0084,768Klsass・exeSYSTEM0070,004Kwmiprvse.exeNETWORKSERVICE0062,140K—msmdsrv.execlust吃0048,512Ksvchost.exeSYSTEM0037,616Ksvchost.exeSYSTEM0028,644KSqlWb.exe*32Adiriini0021,380Kwinlogon.exeSYSTEM0020,828Kinetin£o.exeSY