54SA.COM|专注于系统运维管理,为中国SA提供动力!
Getting online shouldn't be tough. $7.99 .COMs
系统管理员之家Banner
当前位置: 主页 > Windows > 网络技巧 >

SQL Server 2008内存及I/O性能监控(3)

时间:2011-04-01 23:35来源:未知 编辑:tina

SQL Server 主要的内存组件是缓冲池。其中高速数据缓冲区用以把数据从磁盘加载到内存中,实现数据的高速读写。而过程高速缓冲区则用来存储相应的执行计划,减少编译过程,也是高速缓冲仓库的主要构成部分。用户仓库高速缓冲是用户仓库的主要组成本部分。对象仓库则仅仅是内存块组成的内存池,不需要进行LRU或成本计算例如SQL Server网络接口(SNI)利用对象存储仓库作为网络缓冲池。

SQL Server 内存管理器由一个三层的层次结构组成。该层次结构的底层为内存节点。下一层由内存 Clerk、内存缓存和内存池组成。最后一层由内存对象组成。这些对象通常用于在 SQL Server 实例中分配内存。

内存节点(sys.dm_os_memory_nodes)提供低级分配器的界面和实现。在NUMA中内存节点和CPU节点可以对应起来的,在 SQL Server 中,只有内存 Clerk 可访问内存节点。

内存 Clerk(sys.dm_os_memory_clerks) 访问内存节点界面以分配内存。内存节点还会跟踪 Clerk 分配的内存以进行诊断。分配大量内存的每个组件,都必须使用 Clerk 界面来创建其自己的内存 Clerk 并分配其全部内存。各组件会在 SQL Server 启动时创建其相应的 Clerk。

内存对象(sys.dm_os_memory_objects)是指多个堆。它们所提供的分配的粒度比内存 Clerk 所提供的分配的粒度更精细。SQL Server 组件使用内存对象,而不使用内存 Clerk。内存对象使用内存 Clerk 的页分配器接口来分配页。内存对象不使用虚拟内存接口或共享内存接口。根据分配模式的不同,组件可以创建不同的内存对象类型来分配任意大小的区域。

SQL Server的缓冲池只提供8KB的内存块;大于8KB的大内存块需求是被单独管理的,且一般是直接从操作系统或者说是从缓冲池外获取到的,此外只有数据高速缓冲页面才能使用AWE内存,并且需要单独跟踪。

SQLServer的内存方面的系统视图

sys.dm_os_memory_cache_clock_hands 返回特定缓存时钟的每个指针的状态。提供给用户关于每个缓存存储区和用户存储区的时钟指针信息——指针是否正在转动、圈数、被移除的条目数量等。此视图对于查找当前时钟指针的状态以及时钟指针的移动历史非常有用。

sys.dm_os_memory_cache_counters 返回缓存运行状况的快照。提供有关已分配的缓存条目、缓存条目的使用情况以及内存源的运行时信息。提供给用户每个存储区的总结信息——使用的内存数量、条目数、正在使用的条目数。用户可以使用该视图找到缓存的内存使用,以及一个缓存中的条目数量。

sys.dm_os_memory_cache_hash_tables 针对 SQL Server 实例中的每个活动缓存返回一行。即用户关于缓存存储区的散列表信息——最大、最小、平均桶长等。此视图对于查找缓存存储区中每个缓存表的每个散列桶的条目分布非常有用。

[责任编辑:admin]


------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
用户名:
最新评论 进入详细评论页>>