快速诊断I/O性能问题

news2024/11/19 6:44:51
背景

客户反馈最近一段时间数据库运行缓慢,磁盘的压力很大,现在有两种不同的分析结论,存储设备性能下降和数据库压力变大,请我们进行系统的分析,给一个结论

现象

登录SQL专家云,进入性能指标页面,选择客户反馈系统运行慢时间段,并选择I/O相关的性能指标。

Avg.Disk Write Queue Length和Avg.Disk Read Queue Length代表磁盘的写、读排队长度,Total代表所有磁盘的总和。通过图表看到,排队情况非常严重,尤其是读队列。和现实生活中的排队一样,队列越长,通过性越差,等待时间越长,正常值在10以下。

 

 

G盘为数据文件和日志文件的存放盘,单独看G盘的指标和Total的基本一致,说明压力全部来自于G盘。

%Idle Time代表磁盘的百分比空闲时间,值越小说明越繁忙。从图表中看到绝大多数时间都在10%以下,说明G盘非常繁忙。

 

Avg.Disk sec/Read和Avg.Disk sec/Write代表每个读、写操作的响应时间,单位是秒。从图表中看到绝大多数的响应时间在100毫秒左右,而且已经有一定比例的时间在1秒以上了,说明磁盘的响应已经很慢了。

Disk Read Bytes/sec和Disk Write Bytes/sec代表每秒钟读、写的字节数。从图表中看到,每秒读取500M左右,每秒写入30M左右,读取的量非常大,这和读队列长度的指标非常高是吻合的。

Page Life Expectancy代表数据页在缓冲区(内存)内停留的时间,从图表中看到,数值在10左右,非常低, 说明内存压力非常大。Lazy writes/sec代表每秒钟将缓冲区中更新过的数据写入到数据文件中并从缓冲区中移除的次数。从图表中看到,大多数时间都在500左右,同样证明内存压力非常大。

分析

通过以上五组数据,很容易得出结论,磁盘比较缓慢是因为读取压力非常大(500M/s)导致的,在这么大的压力下,磁盘还能有这种响应时间已经是性能非常好了,从而排除存储设备性能下降的可能。

SQL Server查询数据都是在缓冲区(内存)内完成的,当数据不在缓冲区内,就要从数据文件中读取到缓冲区内。新数据进入缓冲区时,如果缓冲区空间不足,就得清除其他的数据,Page Life Expectancy指标下降。SQL Server为了提升性能,写入数据也是在缓冲区内完成的,不会直接写入到数据文件中,系统进程CHECKPOINT时再写入到数据文件,缓冲区空间不足时,就会触发Lazy Write进程,把数据写入到数据文件中并从缓冲区移除,Lazy writes/sec指标会上升。所以Page Life Expectancy指标下降和Lazy writes/sec指标会上升是缓冲区空间不足的表现。

解决

转到活动会话,查看当时正在执行的SQL语句, 大量的会话都存在PAGEIOLATCH_*相关的等待。PAGEIOLATCH_ *等待类型出现在数据从数据文件传输到缓冲区时。等待越多说明大量的数据都不在缓冲区内。

该服务器配置256GB内存,分配给缓冲区230GB,还出现如此严重的缓冲区空间不足,推断有一些SQL语句把大表整表的数据的数据都加载进缓冲区了。进入活动会话汇总视图,按照逻辑读进行排序, 发现几类新上线的报表类SQL语句,因为缺少合适的索引导致几张大表的全表扫描,要把整表的数据存入缓冲区,造成了缓冲区的压力。创建合适索引后问题解决,所有指标都恢复正常。

经验

  1. 很多时候磁盘是被冤枉的,因为低效的SQL或者物理内存本身不足导致内存压力,从而把压力转嫁到磁盘上,分析时一定要全面,Page Life Expectancy和Lazy writes/sec就是两个很重要的指标。

  2. 磁盘压力不是非常大的情况下,SSD盘响应时间在5毫秒左右,机械盘在30毫秒左右。如果通过性能指标发现磁盘读、写的量不大,但是响应时间却很长,那么基本可以确定是磁盘的性能问题。

  3. 索引的重要性强调多少遍都不为过,70%的情况下通过优化索引就能解决性能问题。在和大量的技术人员交流过程中发现,对于索引的重要性恰恰没有足够的重视,一提到优化就是修改SQL语句、读写分离、分布式数据库等舍近求远的方案,索引才是对数据库最高性价比的优化手段。

 

 

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/124955.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

跨境电商小白:一件代发是什么?为什么要选择Starday一件代发?

近两年经济形势比较复杂多变,许多人面临就业难、职场改革、行业转型等困境,而跨境电商行业在此形势下依靠着国家优惠政策以及中国高质量产品在海外市场获得越来越多的份额。随着跨境电商行业发展规模的扩大,越来越多人选择加入到跨境电商赛道…

【实时数仓】省份交易额统计接口、新老访客对比接口、访客分时统计接口

文章目录一 省份交易额统计接口1 Sugar配置(1)图表配置(2)接口地址(3)数据格式(4)执行SQL2 数据接口实现(1)创建地区交易额统计实体类ProvinceStats&#xff…

Kafka基础_2

Kafka系列 注:大家觉得博客好的话,别忘了点赞收藏呀,本人每周都会更新关于人工智能和大数据相关的内容,内容多为原创,Python Java Scala SQL 代码,CV NLP 推荐系统等,Spark Flink Kafka Hbase …

18-RocketMQ源码解读

NameServer启动 1、功能回顾 NameServer的核心作用 一是维护Broker的服务地址并进行及时的更新。 二是给Producer和Consumer提供服务获取Broker列表。 2、启动流程-源码重点 整个NameServer的核心就是一个NamesrvController对象。这个controller对象就跟java Web开发中的Contr…

3D可视化大屏是如何实现的?

3D可视化是指拥有3D效果的数据可视化,对于所要展示的数据可视化内容还原出真实场景,并实时接入数据,在面对复杂操作时灵活应对,使得整个场景在大屏上的展示更具立体、更具科技感、更具易用性。 物联网时代,可视化大屏的…

【发表案例】传感器网络及电路类,仅1个月26天录用

【期刊简介】IF:1.0-2.0,JCR4区,中科院4区 【检索情况】SCI 在检,正刊 【征稿领域】自主传感器网络的高级接口电路及其应用 【参考周期】2个月左右录用 【截稿日期】2023.1.31 重要时间节点:仅1个月26天录用 2022/12…

神经网络中常用的权重初始化方法及为何不能全初始化为0

1.权重初始化的重要性 神经网络的训练过程中的参数学习时基于梯度下降算法进行优化的。梯度下降法需要在开始训练时给每个参数赋予一个初始值。这个初始值的选取十分重要。在神经网络的训练中如果将权重全部初始化为0,则第一遍前向传播过程中,所有隐藏层…

深度学习笔记:感知机

感知机(perceptron)为神经网络的起源算法。感知机接受多个输入信号,输出一个信号。感知机信号只有0和1。 在上图的感知机中,x1和x2两个输入信号会分别乘以其对应权重(weight) w1和w2,传入神经元。神经元计算传来信号综…

Disentangled Face Attribute Editing via Instance-Aware Latent Space Search翻译

论文地址 代码地址 摘要 最近的研究表明,生成对抗网络(GAN)的潜空间中存在一组丰富的语义方向,这使得各种面部属性编辑应用成为可能。然而,现有的方法可能会遇到属性变化不好的问题,从而导致在更改所需属…

JS中数组对象使用

文章目录一、创建数组对象二、数组翻转1.检测数组2.翻转数组:三、添加数组元素1.push方法2.unshift方法四、删除数组元素1.pop方法2.shift方法🤘案例1五、数组排序六、数组索引方法1.indexof(数组元素)2.lastIndexOf方法🤟案例2七、数组转化为…

数字验证学习笔记——SystemVerilog芯片验证16 ——约束控制块随机函数

一、约束块控制 一个类可以包含多个约束块。可以把不同约束块用于不同测试。一般情况下,各个约束块之间的约束内容是互相协调不违背的,因此通过随机函数产生随机数时可以找到合适的解 如果子类继承父类,也继承了父类的约束,这个时…

基于蒙特卡诺的电动汽车充电负荷曲线研究(充电开始时间,充电电量,充电功率)(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

【C++】 STL-vector模拟实现

文章目录vector源码的内容:成员变量默认构造函数构造函数1-无参构造构造函数2 -使用n个相同的值构造构造函数3-使用迭代器区间构造拷贝构造函数**传统写法**现代写法赋值重载函数opeartor传统写法现代写法析构函数迭代器begin & end任意类型vector容器迭代器通用遍历方式:容…

paddleOCRv3之四: rec识别部分用 tensorRT(C++)部署

文章目录1. 简介:速度测试2. paddle 模型转onnx3. onnx转为tensorRT的engine模型4. tensorRT在vs2017中的配置5. 源码1. 简介: tensorRT是nvdia GPU模型部署的一个框架,似乎只是部分开源,github地址.大多数时候用这个框架去部署模…

十九、Docker容器监控之CAdvisor+InfluxDB+Granfana

1、概述 Docker自带查询容器状态的命令:docker stats,可以看到容器的ID\名称、占用CPU、内存等信息 但是我们不能时时刻刻的盯着这个命令,并且这个都是实时数据不能留痕,如果这个时候某一个容器挂了,我们想查看下当时…

webpack性能优化

splitChunks webpack splitChunks minSize: 只有到目标文件超过这个minSize时才会分包。cacheGroups: 可以对某个第三方包进行单独分离出来 例如: splitChunks: {minSize: 300 * 1024,chunks: all,name: aaa,cacheGroups: {jquery: {name: jquery,test…

SCADA平台在风电场测量的应用,实现风电场的高效管理

一、应用背景 随着煤碳、石油等能源的逐渐枯竭,人类越来越重视可再生能源的利用。风能作为一种清洁的可再生能源日益受到世界各国的重视。中国风能储量大,分布面广,仅陆地上的风能储量就约2.53亿千瓦。我国的风电发展起步较晚,但…

大数据教学实训沙盘介绍

沙盘的作用主要有3个: 1、采集真实数据,解决教学中缺少真实数据的困扰; 2、形成从数据采集、预处理、挖掘建模、模型部署的业务闭环,可以把构建模型发布到沙盘系统上,根据模型产生真实的反馈不断的修正模型精度&#x…

DoIP协议从入门到精通系列——车辆声明

上篇文章对DoIP中物理连接做了说明和描述,介绍了以太网应用到车载网络中重要的两个组织: IEEE;OPEN联盟。本文主要对物理连接后,车辆进行自属信息声明过程做一个完整描述。 一、基础信息 DoIP协议标准由一个或多个DoIP实体实施,具体取决于车辆的网络架构。如下图是车辆网…

SuperMap iServer在不同系统中设置开机自启动--Windows篇

目录前言1.删除已有的 SuperMap iServer 系统服务2.注册 SuperMap iServer 系统服务3.设置 SuperMap iServer 系统服务开机自启动实例作者:kxj 前言 在成功部署SuperMap iServer之后,每次重启电脑都需要手动去启动iServer,如何能让iServer在…