SQLServer性能分析

目录

  • 1 常用系统存储过程
  • 2 查看执行计划
  • 3 查看磁盘使用率(STATISTICS IO)
  • 4 查询时间耗时较长的语句
  • 5 死锁处理
  • 参考资料

1 常用系统存储过程

1.1 查询表结构

EXEC sp_columns 'your_table', @column_name = 'table_column'

1.2 查询表索引

EXEC sp_helpindex 'your_table';

1.3 查询存储过程定义

EXEC sp_helptext 'sp_columns'

1.4 显示表的磁盘空间使用情况

EXEC sp_spaceused 'your_table';

2 查看执行计划

2.1 执行计划查询启用和关闭语法

SET SHOWPLAN_ALL ON
SET SHOWPLAN_ALL OFF

2.2 案例:在test_db数据库中的User表上查询“学号=123“的学生,并分析哪些索引被系统采用

USE test_dbGO
SET SHOWPLAN_ALL ON
GOSELECT * FROM User WHERE id = '123'GO
SET SHOWPLAN_ALL OFF
GO

3 查看磁盘使用率(STATISTICS IO)

3.1 执行计划查询启用和关闭语法

SET STATISTICS IO ON
SET STATISTICS IO OFF

3.2 案例

USE book_db
GO
SET STATISTICS IO ON
GOSELECT * FROM book WHERE id = 'YBZT246'GO
SET STATISTICS IO OFF
GO

4 查询时间耗时较长的语句

SELECT TOP 20total_worker_time/1000 AS [总消耗CPU 时间(ms)],execution_count [运行次数],qs.total_worker_time/qs.execution_count/1000 AS [平均消耗CPU 时间(ms)],last_execution_time AS [最后一次执行时间],max_worker_time /1000 AS [最大执行时间(ms)],SUBSTRING(qt.text,qs.statement_start_offset/2+1, (CASE WHEN qs.statement_end_offset = -1 THEN DATALENGTH(qt.text) ELSE qs.statement_end_offset END -qs.statement_start_offset)/2 + 1) AS [使用CPU的语法], qt.text [完整语法],dbname=db_name(qt.dbid),object_name(qt.objectid,qt.dbid) ObjectName
FROM sys.dm_exec_query_stats qs WITH(nolock)
CROSS apply sys.dm_exec_sql_text(qs.sql_handle) AS qt
WHERE execution_count>1
ORDER BY  total_worker_time DESC

5 死锁处理

select    request_session_id spid,   OBJECT_NAME(resource_associated_entity_id) tableName    
from    sys.dm_tran_locks   
where    resource_type='OBJECT' --杀死死锁进程
kill ${spid}--显示死锁相关信息
exec sp_who2 ${spid}

参考资料

  1. https://juejin.cn/post/7145871688217919524

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

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

相关文章

平时的一些思考内容

文章目录 阶乘位运算求概率 阶乘 阶乘是一很迷人的,刚开始的的变化还不是很大,到后面变化类似于直线上升的,不知道现实中哪些实例来表示阶乘。19的阶乘就已经超过了long了,在竞赛或者其他中要求2023或者很大数字的阶乘就需要考虑…

还在用Jekins?快来试试这款比Jekins简而轻的自动部署软件!

大家好,我是 Java陈序员。 在工作中,你是否遇到过团队中没有专业的运维,开发还要做运维的活,需要自己手动构建、部署项目? 不同的项目还有不同的部署命令,需要使用 SSH 工具连接远程服务器和使用 FTP 文件…

开源大语言模型简记

文章目录 开源大模型LlamaChinese-LLaMA-AlpacaLlama2-ChineseLinlyYaYiChatGLMtransformersGPT-3(未完全开源)BERTT5QwenBELLEMossBaichuan其他

web前端之JavaScript

MENU JavaScript之设计模式、单例、代理、装饰者、中介者、观察者、发布订阅、策略JavaScript之数组静态方法的实现、reduce、forEach、map、push、every JavaScript之设计模式、单例、代理、装饰者、中介者、观察者、发布订阅、策略 单例模式 概念 保证一个类仅有一个实例&am…

C基础使用

return 0; 语句用于表示退出程序。 一个程序有且只能有一个main函数的存在 安装编译环境: 安装vim: ubuntu里vim编辑器使用方法_ubuntu vim-CSDN博客 编译与运行: gcc hello.c //编译源文件 ./a.out //运行…

SpringBoot 项目中常用的注解

每一层对应每个包,包名中应全为小写。 一、Common 层(实体类) 前提:导入 Lombok 依赖 Data:生成 get 和 set 方法以及 toString 方法 Getter:只生成 get 方法,避免对类中的成员变量修改。 …

vmware虚拟机中Nat、桥接模式和仅主机的差别

NAT 在NAT模式下,主机3是Kali和Win两个操作系统的宿主机,那么Kali和Win可以连接到外网,也可以和主机3进行互联,但是主机1和主机2不能连接到Kali和Win。 桥接 在桥接模式下,主机3是Kali和Win两个操作系统的宿主机&…

对于智能设备的一些设想1

最近发现脑子里经常会出现一些能够偷懒的想法,希望这些点子能一点点保存下来,希望有需要的人拿走点子,不用谢 1.泡脚桶 2023年12月28日 近两年泡脚桶的风着实很大,我差点也就入坑了,于是有了一种设想,为什么…

elasticsearch系列六:索引重建

概述 我们再起初创建索引的时候由于数据量、业务增长量都并不大,常常不需要搞那么多分片或者说某些字段的类型随着业务的变化,已经不太满足未来需求了,再或者由于集群上面索引分布不均匀导致节点直接容量差异较大等等这些情况,此时…

ssm基于Java的小区物业管理系统论文

基于Java的小区物业管理系统 摘 要 进入21世纪网络和计算机得到了飞速发展,并和生活进行了紧密的结合。目前,网络的运行速度以达到了千兆,覆盖范围更是深入到生活中的角角落落。这就促使管理系统的发展。网上办公可以实现远程处理事务&#…

关于知识产权的分类标准以及分为哪些类型。

知识产权的分类标准主要有两种: 1.广义与狭义的分类: 广义的知识产权包括著作权、邻接权、商标权、商业秘密权、产地标记权、专利权、集成电路布图设计权等各种权利。目前已被《成立世界知识产权组织公约》和《与贸易有关的知识产权协议》(…

【MySQL】数据库并发控制:悲观锁与乐观锁的深入解析

🍎个人博客:个人主页 🏆个人专栏: 数 据 库 ⛳️ 功不唐捐,玉汝于成 目录 前言 正文 悲观锁(Pessimistic Locking): 乐观锁(Optimistic Locking): 总结&#x…

鸿蒙(HarmonyOS 3.1) DevEco Studio 3.1开发环境汉化

鸿蒙(HarmonyOS 3.1) DevEco Studio 3.1开发环境汉化 一、安装环境 操作系统: Windows 10 专业版 IDE:DevEco Studio 3.1 SDK:HarmonyOS 3.1 二、设置过程 打开IDE,在第一个菜单File 中找到Settings...菜单 在Setting...中找到Plugins…

Python面向对象高级与Python的异常、模块以及包管理

Python面向对象高级与Python的异常、模块以及包管理 一、Python中的继承 1、什么是继承 我们接下来来聊聊Python代码中的“继承”:类是用来描述现实世界中同一组事务的共有特性的抽象模型,但是类也有上下级和范围之分,比如:生物 => 动物 => 哺乳动物 => 灵长型…

彭涛:2023年终复盘,工作,团队,个人!

眨眼2023即将结束,2024即将开启,每年这个时候,都会简单总结下自己这一年,既是对今年的一个复盘和回顾,也是对新一年的向往和期待。 我的2023年,大概分为 「个人」,「家庭」,「团队」…

C#时间戳转换

时间戳转化为时间 long oldtime1703235741; System.DateTime startTime TimeZone.CurrentTimeZone.ToLocalTime(new System.DateTime(1970, 1, 1, 0, 0, 0, 0)); var newtimestartTime.AddMilliseconds(oldtime).ToString("yyyy-MM-dd HH:mm:ss.fff"); 时间转化为时…

大创项目推荐 深度学习OCR中文识别 - opencv python

文章目录 0 前言1 课题背景2 实现效果3 文本区域检测网络-CTPN4 文本识别网络-CRNN5 最后 0 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 **基于深度学习OCR中文识别系统 ** 该项目较为新颖,适合作为竞赛课题方向,…

第三节-数据链路层与MAC地址

如果数据进行封装时,基于E2或者802.3标准,此时我们称之为是一个以太网数据帧。 不同的协议栈用于定义和管理不同网络的数据转发规则。 E2和802.3作用:定义帧头和帧尾的格式 数据:对于下层的每个层级而言,上层所反馈…

台阶仪在半导体行业中的广泛应用及其重要意义

台阶仪在半导体材料的表征和研究中是一种非常重要的工具。如在半导体材料的制备过程中,一些关键的工艺参数,如温度、压力、气氛等条件的变化,会导致半导体材料的能带结构发生变化,通过使用台阶仪,可以准确测量和分析材…

C# 读取和设置文件、文件夹权限

C#程序运行时经常遇到文件或文件夹权限问题&#xff0c;导致程序运行失败。为了解决这个头疼的问题&#xff0c;我们通常要读取和设置文件、文件夹权限。 读取文件、文件夹权限 /// <summary>/// 读取文件、文件夹权限/// </summary>/// <param name"path…