时间:2021-07-15 | 标签: | 作者:Q8 | 来源:Lei Zhang网络
小提示:您能找到这篇{Azure SQL Database 使用Query Store对Azure SQL Database监控}绝对不是偶然,我们能帮您找到潜在客户,解决您的困扰。如果您对本页介绍的Azure SQL Database 使用Query Store对Azure SQL Database监控内容感兴趣,有相关需求意向欢迎拨打我们的服务热线,或留言咨询,我们将第一时间联系您! |
< ">我们在使用Azure SQL Database的时候,需要对数据库的性能进行监控,这时候就可以有两种方法: < font-size: 16px;">1.第一种方法,是通过Azure SQL Database的监控界面,来查看数据库的性能,在本章会简单的介绍一下 < font-size: 16px;">2.第二种方法,是通过Query Store来进行监控,在本章会详细介绍 < font-size: 16px;">首先,我们介绍一下使用Azure SQL Database的监控界面。 < font-size: 16px;">1.我们登录Azure Portal: https://portal.azure.cn/ < font-size: 16px;">2.查看到我们使用的Azure SQL Database,选择概述,然后点击下图红色部分 < font-size: 16px;"> < font-size: 16px;">3.页面跳转后,我们可以在下图的Last Hour,设置监控的时间段 < font-size: 16px;">在Add Metric里面,增加新的监控指标,比如CPU Percentage, Data IO Percentage等 < font-size: 16px;"> < font-size: 16px;">4.我们还可以在性能概述里面,查看到微软云Azure对我们当前数据的优化建议 < font-size: 16px;"> < font-size: 16px;">接下来,我们详细介绍一下使用Query Store来麦当劳在危机公关下的营销进行监控,实际上我们在上面看到的通过Azure Portal的可视化监控,其实也是通过Query Store来进行监控的。 < font-size: 16px;">Query Store是SQL Server 2016里面新的功能,同时在微软云Azure平台上,也提供了该功能 < font-size: 16px;">Query Store是从内存中读取数据,并异步写入到Azure SQL Database的磁盘上的 < font-size: 16px;"> < font-size: 16px;">这里我们假设一个场景,如果Azure SQL Databse的DTU利用率很高,我们如何查询出具体是哪些语句,占用了过多的资源呢? < font-size: 16px;">1.首先,我们通过Azure Portal,查看到问题发生的时间,如下图在9月2日的凌晨开始,发生了该问题 < font-size: 16px;"> < font-size: 16px;">我们点击下图的红色部分 < font-size: 16px;">2.DTU和CPU Time,DataIO都有关。我们点击下图的Add Metric < font-size: 16px;"> < font-size: 16px;">3.DTU是和CPU Time,Data IO叠加的因素,我们可以看到下面的CPU Time和DataIO都很高, < font-size: 16px;">8点以后都是DATA IO < font-size: 16px;"> < font-size: 16px;">4.我们在本地PC上安装SQL Server Management Studio,访问上面的数据库,并且找到Query Store < font-size: 16px;">我们点击下图的Top Resource Consuming Queries < font-size: 16px;"> < font-size: 16px;">5.点击上图右上角的Config,设置查询时间 < font-size: 16px;"> < font-size: 16px;">6.在弹出的窗口中,选择查询时间,我们也可以使用默认的 < font-size: 16px;"> < font-size: 16px;">7.我们查询CPU Time,Static 选择Avg。可以查看到缺少索引 < font-size: 16px;"> < font-size: 16px;">8.在下图,我们右键Miss Index,设置索引 < font-size: 16px;"> < font-size: 16px;">9.如果我们需要查询所有缺少索引的表结构,可以在SSMS执行下面的语句 < font-size: 16px;"> --Search Missing Index Directly SELECT SUM(qrs.count_executions) * AVG(qrs.avg_logical_io_reads) as est_logical_reads, SUM(qrs.count_executions) AS sum_executions, AVG(qrs.avg_logical_io_reads) AS avg_avg_logical_io_reads, SUM(qsq.count_compiles) AS sum_compiles, (SELECT TOP 1 qsqt.query_sql_text FROM sys.query_store_query_text qsqt WHERE qsqt.query_text_id = MAX(qsq.query_text_id)) AS query_text, TRY_CONVERT(XML, (SELECT TOP 1 qsp2.query_plan from sys.query_store_plan qsp2 WHERE qsp2.query_id=qsq.query_id ORDER BY qsp2.plan_id DESC)) AS query_plan, qsq.query_id, qsq.query_hash FROM sys.query_store_query qsq JOIN sys.query_store_plan qsp on qsq.query_id=qsp.query_id CROSS APPLY (SELECT TRY_CONVERT(XML, qsp.query_plan) AS query_plan_xml) AS qpx JOIN sys.query_store_runtime_stats qrs on qsp.plan_id = qrs.plan_id JOIN sys.query_store_runtime_stats_interval qsrsi on qrs.runtime_stats_interval_id=qsrsi.runtime_stats_interval_id WHERE qsp.query_plan like N'%<MissingIndexes>%' and qsrsi.start_time >= DATEADD(HH, -24, SYSDATETIME()) GROUP BY qsq.query_id, qsq.query_hash ORDER BY est_logical_reads DESC GO < ">10.如果我们发现数据库发生死锁,可以尝试以下语句(master库)执行查看死锁,更多信息可参考:https://blogs.msdn.microsoft.com/azuresqldbsupport/2017/04/19/deadlock-analysis-for-sql-azure-database/ < font-size: 16px;"> WITH CTE AS ( SELECT CAST(event_data AS XML) AS [target_data_XML] FROM sys.fn_xe_telemetry_blob_target_read_file('dl', null, null, null) ) SELECT target_data_XML.value('(/event/@timestamp)[1]', 'DateTime2') AS Timestamp, target_data_XML.哪里有网站开发query('/event/data[@name=''xml_report'']/value/deadlock') AS deadlock_xml, target_data_XML.query('/event/data[@name=''database_name'']/value').value('(/value)[1]', 'nvarchar(100)') AS db_name FROM CTE < font-size: 16px;"> < font-size: 16px;">11.当我们需要手动Kill死锁的Session时候,需要注意:当前执行完kill 会话后,为什么执行kill语句完成,但查看会话进程还在? < font-size: 16px;">在执行kill杀会话时候,命令执行完成并不代表会话即时被kill掉,会话中有大事务操作的话,为保证数据的一致性,未提交的事务首先要做回滚,执行回滚时间的依据事务操作的大小。 < font-size: 16px;">建议:一般在Kill会话,建议采用KILL session ID WITH STATUSONLY 方式,这样我们在kill动作操作结束,可以实时看到当前处理的进度百分比。 < font-size: 16px;">详细介绍可参考:https://docs.microsoft.com/zh-cn/sql/t-sql/language-elements/kill-transact-sql?view=sql-server-2017 |
上一篇:阿里的UMP云数据库和RDS云数据库的关系是什么?
下一篇:Mammoth Media利用IronSource的完整产品套件促进增长
基于对传统行业渠道的理解,对互联网行业的渠道我们可以下这样一个定义:一切...
小米应用商店的后台操作和苹果是比较相似的,因为都能填写100字符关键词,允许...
小米的规则目前是在变更中的,但是根据经验小米的搜索排名评分的高低是个很重...
为了恰饭,有时候是要接入一些广告的,所以FB也专门有一个广告的SDK,这就是A...
在 2018 年于旧金山举行的游戏开发者大会上,Amazon Web Services (AWS) 曾宣布,目前世...
关于Facebook Audience Network如何收款的问题,其实官方已经给了详细的步骤。本文主要...
本文介绍了Audience Network对广告载体的质量检查,以及它重点广告形式需要注意的问...
随着iOS开发,作为开发者或公司需要针对iOS App开发涉及的方方面面作出对应的信息...
Facebook和谷歌对出海企业广告渠道都很熟悉,但事实上,在国外还有一些渠道也很...
卖家从做号的第1分钟开始,就一定要想好变现路径是什么?一定要以变现为目的去...
小提示:您应该对本页介绍的“Azure SQL Database 使用Query Store对Azure SQL Database监控”相关内容感兴趣,若您有相关需求欢迎拨打我们的服务热线或留言咨询,我们尽快与您联系沟通Azure SQL Database 使用Query Store对Azure SQL Database监控的相关事宜。
关键词:Azure,SQL,Database,使用Query