SQL Nexus是一个用于将SQL Trace数据、性能监视日志及T-SQL输出整合进一个单独的SQL Server数据库的工具。

先决条件

开始使用SQL Nexus之前,注意下面要做的事项:

  • 安装Microsoft Report Viewer for SQL Server 2016 MSI控件,以便使用工具自带的客户端报表查看整合的报告;
  • 安装Microsoft RML Utilities for SQL Server,以便SQL Nexus导入SQL Traces;
  • 安装Microsoft System CLR Types for SQL Server 2016;
  • 核实安装.NET Framework 4.7

一:问题定位

1:通过SQLserver自带的工具SQL Server Profiler

2:选择要监控的事件

3:导出执行的脚本,将任务置于后台执行,提高效率

4:执行导出的脚本,目的是开启监控

/****************************************************/
/* Created by: SQL Server 2012 Profiler */
/* Date: 2019/01/16 21:18:17 */
/****************************************************/ -- Create a Queue
declare @rc int
declare @TraceID int
declare @maxfilesize bigint
set @maxfilesize = -- Please replace the text InsertFileNameHere, with an appropriate
-- filename prefixed by a path, e.g., c:\MyFolder\MyTrace. The .trc extension
-- will be appended to the filename automatically. If you are writing from
-- remote server to local drive, please use UNC path and make sure server has
-- write access to your network share exec @rc = sp_trace_create @TraceID output, , N'd:\a\logTrace', @maxfilesize, NULL
if (@rc != ) goto error -- Client side File and Table cannot be scripted -- Set the events
declare @on bit
set @on =
exec sp_trace_setevent @TraceID, , , @on
exec sp_trace_setevent @TraceID, , , @on
exec sp_trace_setevent @TraceID, , , @on
exec sp_trace_setevent @TraceID, , , @on
exec sp_trace_setevent @TraceID, , , @on
exec sp_trace_setevent @TraceID, , , @on
exec sp_trace_setevent @TraceID, , , @on
exec sp_trace_setevent @TraceID, , , @on
exec sp_trace_setevent @TraceID, , , @on
exec sp_trace_setevent @TraceID, , , @on
exec sp_trace_setevent @TraceID, , , @on
exec sp_trace_setevent @TraceID, , , @on
exec sp_trace_setevent @TraceID, , , @on
exec sp_trace_setevent @TraceID, , , @on
exec sp_trace_setevent @TraceID, , , @on
exec sp_trace_setevent @TraceID, , , @on
exec sp_trace_setevent @TraceID, , , @on
exec sp_trace_setevent @TraceID, , , @on
exec sp_trace_setevent @TraceID, , , @on
exec sp_trace_setevent @TraceID, , , @on
exec sp_trace_setevent @TraceID, , , @on
exec sp_trace_setevent @TraceID, , , @on
exec sp_trace_setevent @TraceID, , , @on
exec sp_trace_setevent @TraceID, , , @on
exec sp_trace_setevent @TraceID, , , @on
exec sp_trace_setevent @TraceID, , , @on
exec sp_trace_setevent @TraceID, , , @on
exec sp_trace_setevent @TraceID, , , @on
exec sp_trace_setevent @TraceID, , , @on
exec sp_trace_setevent @TraceID, , , @on
exec sp_trace_setevent @TraceID, , , @on -- Set the Filters
declare @intfilter int
declare @bigintfilter bigint exec sp_trace_setfilter @TraceID, , , , N'SQL Server Profiler - 45caddf4-8520-4a3a-88c9-1afd4251fc0b'
-- Set the trace status to start
exec sp_trace_setstatus @TraceID, -- display trace id for future references
select TraceID=@TraceID
goto finish error:
select ErrorCode=@rc finish:
go

开启监控(Trace)的脚本

5:检查步骤4执行的效果。

--查看所有的trace
select * from sys.traces
--设置trace的状态 0代表停止,1代表开启,2代表删除,第一个参数代表traceid
--sp_trace_setstatus ,
--go
--sp_trace_setstatus ,
--go
--sp_trace_setstatus ,

二、使用sqlnexus统计数据

1:连接服务器,为了方便把一中5的日志记录创建到该服务器的数据库

2:导入文本

3:主要看以下几个指标

三、提取并且优化sql

(1)sql语句参数化,或将其修改为存储过程。

理由1:未参数化的sql除非每次执行的语句完全一致否则每一次执行都将会先去执行编译,下面将展示此过程

 --步骤1:在Manage studio当中打开统计功能
SET STATISTICS IO ON --展示IO读写
SET STATISTICS TIME ON --展示执行时间
GO
--步骤2:执行sql语句
declare @P0001 nvarchar(124)
set @P0001 = N'select top 1 ID,UserId,IosToken,AndroidToken from IOS_UserToken where AndroidToken=@AndroidToken or IosToken=@AndroidToken'
declare @P0002 nvarchar(26)
set @P0002 = N'@AndroidToken varchar(100)'
declare @P0003 varchar(100)
set @P0003 = 'f02b23dd0c59a143e979616b1023411f6f350cb814be7c30989e8987aadcd9c4'
exec sp_executesql @P0001, @P0002, @AndroidToken = @P0003

四、临时紧急处理

熔断:服务调用的一种雪崩现象,通过截断对依赖服务的调用来保证调用端的可用性。

(1) 控制资源申请:控制cpu的消耗,既单个脚本占用cpu的核数,防止某一个长时间操作占用大量cpu。设置标准:qps高的情况下将cpu执行数往低设置,当qps低的情况下将cpu并行数据往高处设置,最高不要超过8。

限流:通过限制对服务的调用访问来保证服务端的可用性。

降级:通过放弃对非核心服务的调用,来保证核心服务的可用性。

扩容:通过增加服务的数量来保证服务的可用性。

五、查看数据库死锁问题(模板换一下)

集腋成裘-11-sql性能优化的更多相关文章

  1. SQL性能优化

    引言: 以前在面试的过程中,总有面试官问道:你做过sql性能优化吗?对此,我的答复是没有.一次没有不是自己的错误,两次也不是,但如果是多次呢?今天痛下决心,把有关sql性能优化的相关知识总结一下,以便 ...

  2. 如何进行正确的SQL性能优化

    在SQL查询中,为了提高查询的效率,我们常常采取一些措施对查询语句进行SQL性能优化.本文我们总结了一些优化措施,接下来我们就一一介绍. 1.查询的模糊匹配 尽量避免在一个复杂查询里面使用 LIKE ...

  3. 如何进行SQL性能优化

    在SQL查询中,为了提高查询的效率,我们常常采取一些措施对查询语句进行SQL性能优化.本文我们总结了一些优化措施,接下来我们就一一介绍. 1.查询的模糊匹配 尽量避免在一个复杂查询里面使用 LIKE ...

  4. 关于SQL性能优化的十条经验

    1.查询的模糊匹配 尽量避免在一个复杂查询里面使用 LIKE '%parm1%'—— 红色标识位置的百分号会导致相关列的索引无法使用,最好不要用. 解决办法: 其实只需要对该脚本略做改进,查询速度便会 ...

  5. ORACLE数据库学习之SQL性能优化详解

                                                                                    Oracle  sql 性能优化调整 ...

  6. SQL 性能优化 总结

    SQL 性能优化 总结 (1)选择最有效率的表名顺序(只在基于规则的优化器中有效): ORACLE的解析器按照从右到左的顺序处理FROM子句中的表名,FROM子句中写在最后的表(基础表 driving ...

  7. Oracle SQL性能优化技巧大总结

    http://wenku.baidu.com/link?url=liS0_3fAyX2uXF5MAEQxMOj3YIY4UCcQM4gPfPzHfFcHBXuJTE8rANrwu6GXwdzbmvdV ...

  8. Oracle SQL 性能优化技巧

    Select语句完整的执行顺序: SQL Select语句完整的执行顺序: 1. from子句组装来自不同数据源的数据: 2.where子句基于指定的条件对记录行进行筛选: 3.group by子句将 ...

  9. 兄弟连教育分享-SQL性能优化十条经验

    1.查询的模糊匹配 尽量避免在一个复杂查询里面使用 LIKE '%parm1%'——红色标识位置的百分号会导致相关列的索引无法使用,最好不要用. 兄弟连教育分享-SQL性能优化十条经验 解决办法: 其 ...

  10. SQL性能优化概要

    基本概要 1.查询的模糊匹配时,避免使用Like '%开头',使得索引失效 2.索引问题 ◆ 避免对索引字段进行运算操作和使用函数 ◆ 避免在索引字段上使用not,<>,!= ◆ 避免在索 ...

随机推荐

  1. Quartus16.1布线优化选择,重编译可能会满足时序

    流程 (1)在默认的优化编译下,时序违例. (2)在assignments中选择setting. (3)根据需求,选择不同的优化方式,目前选择性能优先. (4)可以发现时序满足要求. 以上.

  2. [Ynoi2019模拟赛]Yuno loves sqrt technology I

    题目描述 给你一个长为n的排列,m次询问,每次查询一个区间的逆序对数,强制在线. 题解 MD不卡了..TMD一点都卡不动. 强制在线的话也没啥好一点的方法,只能分块预处理了. 对于每个块,我们设lef ...

  3. jdbc 连接各种数据库 CRUD

    一,jdbc简介 SUN公司为了简化.统一对数据库的操作,定义了一套Java操作数据库的规范(接口),称之为JDBC.这套接口由数据库厂商去实现,这样,开发人员只需要学习jdbc接口,并通过jdbc加 ...

  4. Vim内直接使用p粘贴系统剪切板

    解决方法 set clipboard=unnamed

  5. Oracle windows64位 百度云下载链接

    oracle11g安装包 去官网需要登录 这个是百度云盘链接 链接:https://pan.baidu.com/s/18lYrkqqHG8u4aDdQekHc3g 提取码:fg2v

  6. 【深度学习】RNN | GRU | LSTM

    目录: 1.RNN 2.GRU 3.LSTM 一.RNN 1.RNN结构图如下所示: 其中: $a^{(t)} = \boldsymbol{W}h^{t-1} + \boldsymbol{W}_{e} ...

  7. Frp基础配置模版

    Frp基础配置模版存档,供参考: 不写注释说明了,直接上模板: frps.ini [common] bind_port = 7000 privilege_token = password vhost_ ...

  8. JS“盒子模型”

    列举几个常用的属性 client系列 clientWidth - 盒子真实内容的宽度[content+padding左右],不包括边线和滚动条 clientHeight - 盒子真实内容的高度[con ...

  9. 大受喜欢安卓触控一体机连接云端数据化管理提供例程DEMO

    1.首先,安卓系统坚持了它的开放性,为消费者和开发者同时留出了空间.这是安卓能够快速成长的关键因素.在安卓之前,没有任何一个智能操作系统的开源程度能够像安卓一样.免费开源的安卓系统节约了版权费用. 2 ...

  10. luogu P3810 三维偏序(陌上花开)cdq分治

    题目链接 思路 对一维排序后,使用$cdq$分治,以类似归并排序的方法处理的二维,对于满足$a[i].b \leq a[j].b$的点对,用树状数组维护$a[i].c$的数量.当遇到$a[i].b&g ...