性能调优3:硬盘IO性能

本文探讨了硬盘IO在数据库系统中的重要性,特别是对SQL Server数据库的影响。分析了硬盘IO延时的两个主要类型——寻道延时和旋转延时,并介绍了如何根据WaitType侦测IO性能问题,如PageIOLatch_XX、WriteLog等。此外,还讨论了影响读写性能的因素,包括物理硬盘能力、内存、碎片和压缩、工作负载等,并提出了性能优化策略,如调整Buffer Pool大小、利用多硬盘并发IO、优化日志文件和tempdb的存储位置等。
摘要由CSDN通过智能技术生成

数据库系统严重依赖服务器的资源:CPU,内存和硬盘IO,通常情况下,内存是数据的读写性能最高的存储介质,但是,内存的价格昂贵,这使得系统能够配置的内存容量受到限制,不能大规模用于数据存储;并且内存是易失性的,不能持久化存储数据,这使得内存只能作为运行时的高速缓存,而硬盘是永久存储数据的理想介质,价格低廉,在系统停电时,能够保持数据不丢失。但是,硬盘是低速的存储介质,输入和输出(IO)速度比内存低很多。因此,在实际运行的数据库系统中,相对于内存而言,硬盘的IO有更大可能性成为系统性能的瓶颈。

内存和硬盘都是存储资源和IO资源,木桶原理适用于SQL Server内部的资源争用,资源的短板就是系统的瓶颈。由于内存的容量相对较小,IO速度快,因此,内存更有可能成为争用的存储资源;而硬盘容量大,IO速度快,因此,硬盘更有可能成为系统争用IO资源。SQL Server为了平衡存储和IO资源的争用,在把数据从硬盘读取到内存后,会把数据缓存到内存中,当重复访问数据时,不需要从硬盘,而是直接从内存中获取。由于这个机制,为系统配置足够多的内存可以最小化硬盘IO,因为硬盘读取数据的速度远远低于内存,所以,尽可能减少硬盘IO可以在很大程度上提供系统的性能。

一,硬盘IO的延时

对于SQL Server数据库系统,限制查询响应的主要因素是硬盘的延时,根据硬盘的物理构造(磁道和扇区),延时可以分为寻道延时和旋转延时:

  • 寻道延时:硬盘的物理刺头移动并定位到所需数据的时间,
  • 旋转延时:硬盘旋转到所需数据的时间,通常用MB/S,或IO吞吐量来衡量

在OLTP系统中,数据更新操作较多,每次读取的数据量少,目标数据的位置相对随机(随机读写),因此,对于寻道延时要求更高,硬盘需要花费更多的寻道时间。

在DSS/DW系统中,事务的运行时间更长,数据相对静态,不常更新,读操作比写操作的要求更高,顺序读操作占比很高,因此,IO吞吐量更重要,可以通过硬盘的盘面来增加顺序访问的IO吞吐量。

二,根据WaitType侦测IO性能

SQL Server引擎把IO作为一个资源来看待,在多任务的现代数据库系统中,同一时刻会接收到很多查询请求,每一个查询请求都需要申请系统资源(CPU、内存和IO),才能继续执行下去,然而系统的资源是有限的,当查询争用资源时,有些查询请求资源得到满足,顺利执行下去,有些查询请求的资源得不到满足,该查询就被阻塞,处于等待资源分配的状态。当出现IO性能问题时,查询语句会被硬盘IO阻塞,这使得执行计划被迫挂起(或阻塞)来等待资源,SQL Server通过DMV来显示系统运行的状态,用等待类型来表示不同的阻塞信息。

1,数据文件的IO

如果SQL Server 出现 IO 性能问题,那么在SQL Server 内部通过DMV sys.dm_exec_requests的wait_type,来反馈 IO 问题。如果查询请求的wait_type长时间处于PageIOLatch_XX,那么说明系统不能很快把数据读取到内存中。

PAGEIOLATCH_xx :用于描述数据页的IO争用,说明系统正在从硬盘加载数据到内存的Buffer Pool中

当SQL Server 要去读或写一个Page的时候,首先会在Buffer Pool里寻找,如果在Buffer Po

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

悦光阴

你的鼓励是我创作的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值