磁盘问题定位与解决
1.SQL SERVER日常运维巡检系列之-日志2.关于SQL Server镜像的一个小误区3.一切从“简”,解放IT运维人员4.CPU问题定位与解决5.数据库优化案例——————某市中心医院HIS系统6.系统隐形杀手——阻塞与等待7.SQL Server常见问题介绍及快速解决建议8.tempdb日志文件暴增分析9.数据库服务器CPU不能全部利用原因分析10.如何快速定位TempDB产生问题11.索引的重要性12.SQL语句的优化建议13.通过分析等待类型解决系统产生问题
14.磁盘问题定位与解决
15.内存问题定位与解决16.写给数据库运维的兄弟17.为什么带NOLOCK的查询语句还会造成阻塞18.链接服务器查询导致的阻塞19.CXPACKET等待类型分析20.为什么sleeping的会话会造成阻塞(2)21.为什么sleeping的会话会造成阻塞22.为SQL Server配置连接加密23.SQL SERVER——高可用技术概述24.数据库服务器CPU不能全部利用原因分析25.管理工具造成的阻塞26.自动增长配置不合理导致的性能抖动27.Profiler导致的严重性能问题28.CPU持续100%分析并解决分析29.tempdb大量闩锁等待问题分析30.探究SQL SERVER 更改跟踪31.tempdb数据文件暴增分析32.SQL SERVER 2016 AlwaysOn 无域集群+负载均衡搭建与简测33.Moebius兼容AlwaysOn34.Moebius for SQL Server35.SQL SERVER日常运维巡检系列——数据库备份36.SQL SERVER日常运维巡检系列——结构设计37.Moebius for SQL Server38.SQL SERVER日常运维巡检系列之-数据库39.【能力提升】SQL Server常见问题介绍及快速解决建议40.CDC作业历史记录无法删除问题41.为Oracle链接服务器使用分布式事务42.大事务导致数据库恢复时间长43.SQL Server关于AlwaysOn的理解-读写分离的误区(一)44.链接服务器导致SQL Server停止响应45.简单配置Sql专家云46.SQL专家云回溯某时间段内的阻塞47.SQL专家云快速解决阻塞48.SQL专家云汇总低效的SQL语句49.数据库优化案例—某市中心医院HIS系统50.细说数据库协作运维51.医院核心数据库一体化建设实践52.【能力提升】SQL Server常见问题介绍及快速解决建议53.Moebius数据库多活集群54.30分钟带你熟练性能优化的那点儿事儿(案例说明)55.SQL Server底层架构技术对比56.Moebius兼容AlwaysOn57.透过等待看数据库58.数据库自动收缩造成的阻塞59.CPU持续100%分析并解决磁盘问题定位基本流程:

磁盘的压力分析,主要使用下面几个性能计数器 (针对单独的物理盘,每个物理磁盘都会有一组):
- Avg. Disk Read Queue Length 读队列(越小越好,理想值 2 以下,队列越高说明一个操作的响应时间越长)
- Avg. Disk Write Queue Length 写队列(越小越好,理想值 2 以下,队列越高说明一个操作的响应时间越长)
- Avg. Disk sec/Read
- Avg. Disk sec/Write
- Disk Read Bytes/sec
- Disk Write Bytes/sec
注:常规判断系统磁盘压力,通过读写队列即可判断,后面4个主要用于磁盘是否自身性能存在问题,本文不介绍。
步骤1.排除其他因素影响
磁盘IO一般是整个数据库的瓶颈,磁盘写入速度的快慢直接影响着数据库的性能,一般推荐数据库服务器不要与其他应用共用服务器,同时也要尽量避免在数据库服务器上做大的文件处理工作。
步骤2.磁盘问题定位
磁盘队列计数器持续很高(Avg. Disk Read Queue Length、Avg. Disk Write Queue Length)
磁盘响应时间很长(磁盘队列很高,请求需要排队完成,所以表现为响应时间长)
磁盘队列波动
读
写
步骤3.磁盘问题分析与解决(通用步骤)
首先有哪些情况会对磁盘造成压力?
- 内存不足导致需要频繁和磁盘交互 (一般为主因)
- 经常有大量冷数据需要从磁盘读取,或经常有大批量脏页一次写入(checkpoint触发)
- 磁盘读写速度,不能满足业务需要
解决磁盘问题首先请诊断内存是否存在瓶颈,参照上一篇 -----内存问题定位与解决
如果内存不存在问题,请分析语句压力,是否有不优化的语句(要查询大量数据)需要从磁盘读取。
并查看系统的文件磁盘规划:
看一下这个系统的磁盘及数据库文件分布
可以看到这个服务器只配置了一块物理磁盘
数据库1
数据库2
tempDB
2个业务频繁的大数据库,数据文件、日志文件和系统tempDB都在同一个磁盘上!这样磁盘的读写速度势必不能满足业务要求。
磁盘规划建议:
规划磁盘分配的好处:假设你有两个数据库,业务操作都很繁忙,且读/写量都很大对磁盘的压力都很大,那么你自然会想到把他们分散到不同的磁盘上,这样每个库针对自己的磁盘读/写,不会互相影响且压力相当于原来的1/2,从而可以提升磁盘操作的响应时间。
数据库磁盘该怎么划分? 不同系统不同环境可能都不相同,下面给出一些简单建议:
- 按照文件类型划分:数据文件、日志文件、tempDB文件、备份文件,分别放在一个物理磁盘
- 按照数据库划分:不同的业务数据库(压力大的)分别放在一个物理磁盘,tempDB和备份文件各一个物理磁盘。
上面的两种分法是基本的划分方式,但是根据系统压力系统配置,均有不同情况。
当你的数据库压力较小,或磁盘资源紧张可以做适当的合并。当你的数据库特别大,并且有多个文件组,也可以选择把文件组更进一步细分。
类似于做了分区表,不同分区放在不同磁盘上,当需要多个分区数据时,可以利用IO并行提升效率。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)