广告位联系
返回顶部
分享到

Sql Server查询卡顿的排查方法

MsSql 来源:互联网 作者:佚名 发布时间:2024-07-31 21:25:22 人浏览
摘要

本篇为理论知识的分析以及对症下药,前阵子发生过Bug,后通过迁移服务器以及数据库最终才解决问题,但是细想当时可能是因为碎片或者缓存的概率比较高 1. 问题所示 针对的SQL为SQL Server,

本篇为理论知识的分析以及对症下药,前阵子发生过Bug,后通过迁移服务器以及数据库最终才解决问题,但是细想当时可能是因为碎片或者缓存的概率比较高

1. 问题所示

针对的SQL为SQL Server,其他的数据库也同理

单查询此条数据库的时候应用层代码以及数据库都报大量的错误

1

select count(0) from [manong].[dbo].[yanjiuseng] where startTime > '2024-8-1 00:00:00' and endTime < '2024-8-1 23:59:59'

2. 原理分析

针对上述卡顿的情况,造成的原因有如下可能

2.1 缺乏索引

先查看此表有没有该索引字段:EXEC sp_helpindex '[manong].[dbo].[yanjiuseng]';

没有的话现加:(根据自身情况以及表格加入相应的索引字段)

1

CREATE INDEX IX_YanJiuSeng_StartTime_EndTime ON [manong].[dbo].[yanjiuseng](startTime, endTime);

2.2 表碎片

如果表碎片存在过多,可能会造成即使有查询也会很缓慢

1

DBCC ShowContig('[manong].[dbo].[yanjiuseng]')

类似如下信息,那么需要重建索引来减少碎片了

运行索引重建或重组操作来减少碎片:

1

2

3

4

-- 重建索引

ALTER INDEX ALL ON [manong].[dbo].[yanjiuseng] REBUILD;

-- 或者重组索引

ALTER INDEX ALL ON [manong].[dbo].[yanjiuseng] REORGANIZE;

2.3 查询计划缓存

通过计划缓存查询是否有使用不佳的查询计划

也可尝试清除缓存来重新查询:DBCC FREEPROCCACHE;

2.4 锁和阻塞

表可能被其他事务锁定,导致查询等待

查询是否有锁的情况

1

SELECT * FROM sys.dm_exec_requests WHERE blocking_session_id <> 0;

3. 总结

上述情况为一个排查的方向

对于细节方向的把握,比如字段的不匹配,长度的不满足都会有影响

1

2

3

SELECT COUNT(0)

FROM [manong].[dbo].[yanjiuseng]

WHERE startTime > '2024-07-22T00:00:00' AND endTime < '2024-07-22T23:59:59';

还有服务器的负载,检查是否服务器的性能有所干扰,定时任务或者其他资源都比较密集

还有一点如果数据量过大,需要对数据进行更好的清洗

根据执行计划执行语句的时候确保没有使用全表查询,深入分析查询的瓶颈


版权声明 : 本文内容来源于互联网或用户自行发布贡献,该文观点仅代表原作者本人。本站仅提供信息存储空间服务和不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权, 违法违规的内容, 请发送邮件至2530232025#qq.cn(#换@)举报,一经查实,本站将立刻删除。
原文链接 :
相关文章
  • SQLServer日志收缩的两种方法

    SQLServer日志收缩的两种方法
    在日常运维中,有时会遇到The transaction log for database xxxx is full due to ACTIVE_TRANSACTION.这样的报错信息。 此错误消息表明:数据库的事务日志文
  • Sql Server查询卡顿的排查方法

    Sql Server查询卡顿的排查方法
    本篇为理论知识的分析以及对症下药,前阵子发生过Bug,后通过迁移服务器以及数据库最终才解决问题,但是细想当时可能是因为碎片或者
  • sql server安装及使用全流程

    sql server安装及使用全流程
    一、安装SQL Server 1.到微软官网下载SQL Server Developer版本,现在的最新版本是SQL Server 2019 Developer。微软官网传送门:点击此处直达 2.下载完成
  • SQL Povit函数使用及实例

    SQL Povit函数使用及实例
    PIVOT函数常用于数据的行转列,同时也可以用此函数实现类似于Excel中的数据透视表的效果。 PIVOT函数 PIVOT 函数的基本语法如下: 1 2 3 4 5
  • Navicat连接SQL server出现:[IM002] [Microsoft][ODBC 驱动

    Navicat连接SQL server出现:[IM002] [Microsoft][ODBC 驱动
    问题 解决方法 一 找到Navicat的安装路径,然后找到sqlncli_x64.msi文件并安装,安装成功后重启Navicat重新进行连接,看是否成功。 解决方法 二
  • sql server实现图片的存入和读取的流程介绍

    sql server实现图片的存入和读取的流程介绍
    首先提醒一下,无论是将图片存入数据库,还是从数据库中读取,都是采用流的形式进行,虽然,在数据库中,存储图片的类型是Image,但是
  • Sql中的like的用法及示例操作介绍
    Sql中的like的用法 大家好,我是免费搭建查券返利机器人赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿!今
  • 对SQL Server中敏感数据进行加密解密的操作方法
    为什么需要对敏感数据进行加密? 近几年有不少关于个人数据泄露的新闻(个人数据通常包含如姓名、地址、身份证号码、财务信息等),
  • SSMS中出现两个相同的服务器名称的问题解决

    SSMS中出现两个相同的服务器名称的问题解决
    在将SQL Server 2019更新为SQL Server 2022后,或者是在更新安装SQL Server Management Studio工具后,在SSMS的【连接到服务器】页面,有时候可能会出现多
  • 配置SQL Server2022远程访问的方法介绍

    配置SQL Server2022远程访问的方法介绍
    对于一个老菜鸟来说,配置的过程一波三折,费了九牛二虎之力,折腾了一上午才弄好,特此记录下来备用。 由于工作需要,Hyper-V虚拟机上
  • 本站所有内容来源于互联网或用户自行发布,本站仅提供信息存储空间服务,不拥有版权,不承担法律责任。如有侵犯您的权益,请您联系站长处理!
  • Copyright © 2017-2022 F11.CN All Rights Reserved. F11站长开发者网 版权所有 | 苏ICP备2022031554号-1 | 51LA统计