SQL Server 2008的I/O性能监控

I/O性能诊断

SQL Server性能非常依赖于I/O子系统。除非你的数据库适合物理内存,SQL  Server经常地会有数据库页面进出缓存池。这样就发生了实质的I/O流量。同样,在事务被明确的提交 前,日志记录需要写入磁盘。SQL  Server为各种目的可以使用tempdb,例如存储中间结果,排序,保 持行的版本或其他。所以好的I/O子系统对于SQL  Server性能非常重要。

I/O的性能取决于以下 一些方面:

磁盘类型包括IDE、SATA、SCSI、SAS、Fibre Channel drive等类型,其中IDE、SATA一般 用在个人电脑上。

同时为了在数据安全、数据性能和数据容量之间做平衡,又发展出了RAID,RAID是 一种把多块独立的磁盘按不同的方式组合起来形成一个硬盘组,从而提供比单个硬盘更高的存储性能和提高 数据备份技术。RAID主要包括RAID0~RAID7等几个规范,常用的RAID类型为RAID0、RAID1、RAID5,RAID10。

此外根据连接方式不同还可以分为:Direct Attached Storage(DAS),Storage Area  Networks(SAN),Fibre Channel Storage Area Networks,iSCSI Storage Area  Networks。

吞吐量和IOPS指标

吞吐量主要取决于阵列的架构,光纤通道的大小以及硬盘的个 数。阵列的 架构与每个阵列不同,但也都存在内部带宽,不过在一般情况下,内部带宽都设计的很充足,不是瓶颈所在 。其次是光纤通道对数据流量的影响,为了达 到1GB/s的数据流量要求,我们必须使用1GB*8=8GB的光纤卡, 也可以用4块2GB的光纤卡。其实是硬盘的个数,可以参考以下指标计算方式,假设 为了满足1GB的数据流量 要求,所必须的磁盘个数。

IOPS(Input/Output Operations Per Second),即每秒进行读写(I/O)操作的次数,多用于数据库等场合,衡量随机访问的性能。

决定IOPS的主要取决于阵列的算法、cache命中率以及磁盘个数。Cache命中率取决于数据的分布、 Cache Size的大小、数据的访问规则,以及Cache的算法。

磁盘的限制,每个磁盘能处理的IOPS是有 限制的,通常情况下每个磁盘的最大IOPS是确定的,比如IDE和SATA硬盘的IOPS大致在100以内 (我们可以使 用HD  Tune工具进行IOPS测试),而且IOPS的测试结果与测试方式(例如随机读写和顺序读写、读和写的 比例、传输数据库尺寸的大小、磁盘的数量)有很大 关系,尽管如此磁盘的IOPS指标还是对我们评估磁盘的 压力和是否能够满足系统的性能需求有着一定的指导意义。

假设现在的业务需求是10000 IOPS,120 块SCSI磁盘,那么在不同的Cache命中率、不同的读写比例情况下,不同的RAID级别对每块磁盘的IOPS需求是 多少呢?

Raid 0 –每个磁盘的I/O计算= (读+写) /磁盘个数

Raid 1 --每个磁盘的I/O计算= [ 读+(2*写)]/2

Raid 5 --每个磁盘的I/O计算= [读+(4*写)]/磁盘个数

Raid 10 --每个磁盘的 I/O计算= [读+(2*写)]/磁盘个数

此外当吞吐率超过85%时,会出现I/O瓶颈,因此单个磁盘IOPS计算 规则为

((10000*(1-Cache命中率)*读比例)+10000*写比例*RAID系数)/磁盘数/0.85

即每块磁盘的IOPS大约在200左右即可满足RAID0、RAID5、RAID10的要求。

此外,关于SQL Server的 部署一般规划和建议如下:

操作系统和SQL Server单独构建在RAID1的磁盘镜像上;出于高速和安全的 原则,日志文件需要单独安装在RAID1/RAID10上;tempdb文件最好放在RAID0上,而数据文件出于安全、性能 、容量、成本的综合考虑一般则使用RAID5。

时间: 2024-10-30 02:08:42

SQL Server 2008的I/O性能监控的相关文章

SQL Server 2008性能故障排查(一)——概论

原文:SQL Server 2008性能故障排查(一)--概论 备注:本人花了大量下班时间翻译,绝无抄袭,允许转载,但请注明出处.由于篇幅长,无法一篇博文全部说完,同时也没那么快全部翻译完,所以按章节发布.由于本人水平有限,翻译结果肯定存在问题,为了不造成误导,在每篇结尾处都附上原文,供大家参考,也希望能指出我的问题,以便改进.谢谢. 另外,本文写给稍微有经验的数据库开发人员或者DBA看,初学者可能会看不懂.在此请见谅 作者:Sunil Agarwal, Boris Baryshnikov, K

详解SQL Server 2008迁移查询计划

大多数情况下,将数据库升级到 SQL Server 2008 会提高查询性能. 但是,如果您具有已针对性能进行过认真优化的任务关键查询,在升级前最好为每个查询创建一个计划指南,以保留这些查询的查询计划. 如果在升级后,查询优化器为一个或多个查询选择了效率较低的计划,则可以启用这些计划指南并强制查询优化器使用升级前的计划. 若要在升级前创建计划指南,请按照以下步骤执行操作: 通过使用 sp_create_plan_guide 存储过程并在 USE PLAN 查询提示中指定查询计划来记录每个任务关键

服务器-SQL Server 2008性能突降的问题

问题描述 SQL Server 2008性能突降的问题 ##服务器介绍: 部署在虚拟机上的SQL Server 2008,是从一个oracle库到另一个MS库的数据中转站,先将oracle库部分表的数据抽取到该库,再用生成视图的方式进行数据清洗,然后将视图数据抽到另一个MS库中,**两个MS库在同一服务器上**. ##问题描述: 前天发现,从oracle库抽取数据到该库的时间由原来的2个小时,延长到3个小时,而从该库到另一个MS库的数据抽取工作变得非常缓慢,以往1个半小时的抽取,延长到10个小时

SQL Server 2008性能故障排查(二)——CPU

原文:SQL Server 2008性能故障排查(二)--CPU 承接上一篇:SQL Server 2008性能故障排查(一)--概论 说明一下,CSDN的博客编辑非常不人性化,我在word里面都排好了版,贴上来就乱得不成样了.建议CSDN改进这部分.也请大家关注内容不要关注排版.同时在翻译的过程中本人也整理了一次思路,所以还似乎非常愿意翻译,虽然有点自娱自乐,但是分享给大家也是件好事 CPU 瓶颈:CPU瓶颈可能因为某个负载所需的硬件资源不足而引起.但是过多的CPU使用通常可以通过查询优化(特

SQL Server 2008性能故障排查(四)——TempDB

原文:SQL Server 2008性能故障排查(四)--TempDB 接着上一章:I/O TempDB:          TempDB是一个全局数据库,存储内部和用户对象还有零食表.对象.在SQLServer操作过程中产生的存储过程等数据.在一个SQLServer实例中,只有一个TempDB.所以容易成为性能和磁盘空间瓶颈.TempDB可能因为空间可用程度和过量的DDL和DML操作而变得超负荷.这可能导致不相关的应用运行缓慢甚至失败.          常见的TempDB问题如下: l  T

SQL Server 2008的性能和可扩展性

1.导言 现今的公司需要易访问的和可用性好的商业数据,以便他们可以在全球市场中获得一席之地.与易访 问数据的这个需求相呼应的,关系数据库和分析数据库在规模方面继续发展,内嵌数据库和许多产品一起 出现,并且许多公司将服务器合并来减轻管理工作.当公司的数据环境在规模和复杂度方面持续发展的同 时他们必须维护最佳的性能. 这篇白皮书描述了SQL Server 2008的性能和扩展能力,并解释了你可以怎样使用这些功能来: · 使用可用于数据库引擎.分析服务.报表服务和集成服务的工具和功能来优化任何规模的数

SQL Server 2008性能和扩展基础教程

  可预测的性能和实际的可扩展性 Microsoft SQL Server 2008提供了一个广泛的数据平台,它可以随着你的业务的发展而发展.SQL Server 2008具有许多技术用来增加单独的服务器和扩大大型数据库,还有许多工具用于优化性能. 性能 利用SQL Server 2008的高性能来满足你的数据库应用和IT基础设施的高要求. · 资源管理 通过定义工作负载优先权.限制已知的大的工作负载防止滥用资源.将会失控的查询的可能性降低到最小,并且提供了关键任务工作负载和它们需要的资源,以此

SQL Server 2008性能故障排查(三)——I/O

原文:SQL Server 2008性能故障排查(三)--I/O 接着上一章:CPU瓶颈 I/O瓶颈(I/O Bottlenecks): SQLServer的性能严重依赖I/O子系统.除非你的数据库完全加载到物理内存中,否则SQLServer会不断地把数据库文件从缓存池中搬进搬出,这会引起大量的I/O传输.同样地,日志记录在事务被声明为已提交前必须写入磁盘.最后,SQLServer基于许多原因使用tempdb,比如存储临时结果.排序和保持行版本.所以一个好的I/O子系统是SQLServer性能关

SQL Server 2008中进行性能数据收集

通过这个动手实验室,您可以了解到:了解与性能数据收集相关的组件及术语;创建并配置管理数据仓库;管理数据收集的类型及间隔;对收集上来的数据进行分析;创建自定义的数据收集类型. 1. 创建管理数据仓库 在SQL Server 2008中有很多组件可以进行性能数据收集.为了设定收集数据的类型以及收集计划,数据收集器需要使用管理数据仓库.管理数据仓库也是一个关系型数据库,但在创建该数据库时很多默认设置需要进行修改,在我们后面的实验中将深入讨论.理想状态下,管理数据仓库最好和生产环境的数据库位于不同的服务