如何查看在Azure上托管的数据库上执行的查询历史记录(所有OR长期)?

时间:2013-07-29 09:55:11

标签: logging azure indexing azure-sql-database database-tuning

对于Azure上托管的数据库,我可以查看对其执行的查询的最近历史记录。这是通过 Azure门户&gt;数据库&gt;管理&gt; <给药>查询效果

不幸的是,那里发现的历史,只涵盖了一小段时间(几分钟)。我打算在我的数据库上创建非聚集索引,为此,需要记录在典型的一天对数据运行的真实查询,而不是过去几分钟。

目前,我必须多次刷新页面并记录每次刷新的所有查询。即使这样,我在这个艰难的过程之后获得的日志只反映了执行的一小部分查询。有没有选择查看较长时期的历史记录?

感谢。

2 个答案:

答案 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 DatabaseImproving Your I/O PerformanceGaining Performance Insight into Windows Azure SQL DatabaseTroubleshooting Windows Azure SQL DatabaseFinding Blocking Queries in SQL AzureMarch Madness – SQL Azure – sys.dm_exec_query_stats

还要考虑应用程序级别的分析,例如Profiling Database Activity in the Entity FrameworkQuery 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