SQL Server 2008 I/O性能监控

本文涉及的产品
云数据库 RDS SQL Server,基础系列 2核4GB
RDS SQL Server Serverless,2-4RCU 50GB 3个月
推荐场景:
日志服务 SLS,月写入数据量 50GB 1个月
简介:

原文首发于it168,链接见http://tech.it168.com/a2011/0221/1158/000001158998.shtml

  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的数据流量要求,所必须的磁盘个数。

SQL Server 2008性能监控

  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

SQL Server 2008性能监控

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

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

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

  在微软的technet上有一篇关于存储的最佳实践top 10(Storage Top 10 Best Practices)是这么要求的:

  1. 了解SQL Server的IO特性和应用系统的IO需求规格。

  2. 使用更多/更快的磁盘驱动以获取良好的性能

  3. 不要过度优化存储,简单的设计通常能够提供良好的性能和灵活性。

  4. 部署前验证配置。可以用SQLIO之类的工具模拟测试。

  5. 始终把日志文件放在RAID10/RAID1上。

  6. 把日志文件和数据文件从物理磁盘上隔离。

  7. 认真考虑TempDB的数据配置。

  8. 在数据文件的数量和CPU的容量之间平衡。

  9. 不要忽视SQL Server的基础。

  10.不要忽视存储的配置

  对于SQL Server占用I/O资源的监控主要集中在磁盘响应时间、队列长度、磁盘读写和传输速度上。下面提供了几种对象、计数器和相应的阈值及描述。

SQL Server 2008性能监控

  Sys.dm_io_virtual_file_stats能够返回数据和日志文件的 I/O 统计信息,这也为我们从整体上了解各磁盘和数据库的吞吐量和等待时间有了一个直观的认识。

SQL Server 2008性能监控

   sys.dm_io_pending_io_requests则对应SQL Server 中每个挂起的 I/O 请求,我们将sys.dm_io_pending_io_requests和Sys.dm_io_virtual_file_stats关联起来,则可以 查看当前是否有等待的IO,然后进行去定位和识别。

SQL Server 2008性能监控











本文转自baoqiangwang51CTO博客,原文链接:http://blog.51cto.com/baoqiangwang/541298,如需转载请自行联系原作者

相关实践学习
使用SQL语句管理索引
本次实验主要介绍如何在RDS-SQLServer数据库中,使用SQL语句管理索引。
SQL Server on Linux入门教程
SQL Server数据库一直只提供Windows下的版本。2016年微软宣布推出可运行在Linux系统下的SQL Server数据库,该版本目前还是早期预览版本。本课程主要介绍SQLServer On Linux的基本知识。 相关的阿里云产品:云数据库RDS SQL Server版 RDS SQL Server不仅拥有高可用架构和任意时间点的数据恢复功能,强力支撑各种企业应用,同时也包含了微软的License费用,减少额外支出。 了解产品详情: https://www.aliyun.com/product/rds/sqlserver
相关文章
|
9月前
|
SQL IDE Java
Java连接SQL Server数据库的详细操作流程
Java连接SQL Server数据库的详细操作流程
|
6月前
|
关系型数据库 MySQL 网络安全
5-10Can't connect to MySQL server on 'sh-cynosl-grp-fcs50xoa.sql.tencentcdb.com' (110)")
5-10Can't connect to MySQL server on 'sh-cynosl-grp-fcs50xoa.sql.tencentcdb.com' (110)")
|
8月前
|
SQL 存储 监控
SQL Server的并行实施如何优化?
【7月更文挑战第23天】SQL Server的并行实施如何优化?
198 13
|
8月前
|
SQL
解锁 SQL Server 2022的时间序列数据功能
【7月更文挑战第14天】要解锁SQL Server 2022的时间序列数据功能,可使用`generate_series`函数生成整数序列,例如:`SELECT value FROM generate_series(1, 10)。此外,`date_bucket`函数能按指定间隔(如周)对日期时间值分组,这些工具结合窗口函数和其他时间日期函数,能高效处理和分析时间序列数据。更多信息请参考官方文档和技术资料。
119 9
|
8月前
|
SQL 存储 网络安全
关系数据库SQLserver 安装 SQL Server
【7月更文挑战第26天】
101 6
|
7月前
|
Java 开发者 前端开发
Struts 2、Spring MVC、Play Framework 上演巅峰之战,Web 开发的未来何去何从?
【8月更文挑战第31天】在Web应用开发中,Struts 2框架因强大功能和灵活配置备受青睐,但开发者常遇配置错误、类型转换失败、标签属性设置不当及异常处理等问题。本文通过实例解析常见难题与解决方案,如配置文件中遗漏`result`元素致页面跳转失败、日期格式不匹配需自定义转换器、`<s:checkbox>`标签缺少`label`属性致显示不全及Action中未捕获异常影响用户体验等,助您有效应对挑战。
128 0
|
8月前
|
存储 SQL C++
对比 SQL Server中的VARCHAR(max) 与VARCHAR(n) 数据类型
【7月更文挑战7天】SQL Server 中的 VARCHAR(max) vs VARCHAR(n): - VARCHAR(n) 存储最多 n 个字符(1-8000),适合短文本。 - VARCHAR(max) 可存储约 21 亿个字符,适合大量文本。 - VARCHAR(n) 在处理小数据时性能更好,空间固定。 - VARCHAR(max) 对于大文本更合适,但可能影响性能。 - 选择取决于数据长度预期和业务需求。
625 1
|
8月前
|
SQL Oracle 关系型数据库
MySQL、SQL Server和Oracle数据库安装部署教程
数据库的安装部署教程因不同的数据库管理系统(DBMS)而异,以下将以MySQL、SQL Server和Oracle为例,分别概述其安装部署的基本步骤。请注意,由于软件版本和操作系统的不同,具体步骤可能会有所变化。
629 3
|
7月前
|
SQL 安全 Java
驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接。错误:“The server selected protocol version TLS10 is not accepted by client
驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接。错误:“The server selected protocol version TLS10 is not accepted by client
623 0
|
8月前
|
SQL 存储 安全
数据库数据恢复—SQL Server数据库出现逻辑错误的数据恢复案例
SQL Server数据库数据恢复环境: 某品牌服务器存储中有两组raid5磁盘阵列。操作系统层面跑着SQL Server数据库,SQL Server数据库存放在D盘分区中。 SQL Server数据库故障: 存放SQL Server数据库的D盘分区容量不足,管理员在E盘中生成了一个.ndf的文件并且将数据库路径指向E盘继续使用。数据库继续运行一段时间后出现故障并报错,连接失效,SqlServer数据库无法附加查询。管理员多次尝试恢复数据库数据但是没有成功。

热门文章

最新文章