对于Azure上托管的数据库,我可以查看对其执行的查询的最近历史记录。这是通过 Azure门户&gt;数据库&gt;管理&gt; <给药>查询效果。
不幸的是,那里发现的历史,只涵盖了一小段时间(几分钟)。我打算在我的数据库上创建非聚集索引,为此,需要记录在典型的一天对数据运行的真实查询,而不是过去几分钟。
目前,我必须多次刷新页面并记录每次刷新的所有查询。即使这样,我在这个艰难的过程之后获得的日志只反映了执行的一小部分查询。有没有选择查看较长时期的历史记录?
感谢。
答案 0 :(得分:5)
Windows Azure SQL数据库提供动态管理视图(DMV),可返回可用于监视服务器实例运行状况,诊断问题和调整性能的服务器状态信息。
有关可用视图的列表,请参阅System Views (Windows Azure SQL Database)。
有关如何查找CPU密集型查询的示例,长时间运行的查询和I / O密集型查询请参阅Tuning SQL Azure Databases, Part 2。
有关其他问题排查提示,请参阅Troubleshoot and Optimize Queries with Windows Azure SQL Database,Improving Your I/O Performance,Gaining Performance Insight into Windows Azure SQL Database,Troubleshooting Windows Azure SQL Database,Finding Blocking Queries in SQL Azure,March Madness – SQL Azure – sys.dm_exec_query_stats。
还要考虑应用程序级别的分析,例如Profiling Database Activity in the Entity Framework和Query Profiling SQL Azure when using Entity Framework or Linq-to-SQL中所述。
对于高级监控,请考虑部署Windows Azure SQL Database Management Pack for System Center 2012。
答案 1 :(得分:0)
我发现这是一个查询,可用于查看Azure SQL Server数据库中执行最多的查询:
SELECT TOP 10 execution_count, statement_text
FROM (
SELECT QS.*,
SUBSTRING(
ST.text,
(QS.statement_start_offset/2) + 1,
((
CASE statement_end_offset
WHEN -1 THEN DATALENGTH(st.text)
ELSE QS.statement_end_offset END
- QS.statement_start_offset
) /2)
+ 1
) AS statement_text
FROM sys.dm_exec_query_stats AS QS
CROSS APPLY sys.dm_exec_sql_text(QS.sql_handle) as ST
) AS query_stats
WHERE statement_text LIKE 'UPDATE%'
ORDER BY execution_count DESC
来源:March Madness - SQL Azure - sys.dm_exec_query_plan | SQLRockstar | Thomas LaRock