博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[Windows Azure] Monitoring SQL Database Using Dynamic Management Views
阅读量:5929 次
发布时间:2019-06-19

本文共 5752 字,大约阅读时间需要 19 分钟。

Monitoring Windows Azure SQL Database Using Dynamic Management Views

5 out of 7 rated this helpful -

Microsoft Windows Azure SQL Database enables a subset of dynamic management views to diagnose the performance problems, which might be caused by blocked or long-running queries, resource bottlenecks, poor query plans, and so on. This topic provides information on how to detect common performance problems by using the dynamic management views in Windows Azure SQL Database.

Windows Azure SQL Database partially supports three categories of dynamic management views:

  • Database-related dynamic management views.
  • Execution-related dynamic management views.
  • Transaction-related dynamic management views.

For a list of fully supported dynamic management views in Windows Azure SQL Database, see . For detailed information on dynamic management views, see in SQL Server Books Online.

Permissions

In Windows Azure SQL Database, querying a dynamic management view requires VIEW DATABASE STATE permissions. The VIEW DATABASE STATE permission returns information about all objects within the current database.

To grant the VIEW DATABASE STATE permission to a specific database user, run the following query:

 
GRANT VIEW DATABASE STATE TO database_user;

In an instance of on-premise SQL Server, dynamic management views return server state information. In Windows Azure SQL Database, they return information regarding your current logical database only.

noteNote
When executing the sys.dm_exec_requests and sys.dm_exec_sessions views, if the user has VIEW DATABASE STATE permission on the database, the user will see all executing sessions on the database; otherwise, the user will see only the current session.

 

 

Calculating Database Size

You are billed for the edition and the capacity of your SQL Databases. If the size of your database reaches its MAXSIZE you will receive an error code 40544. You cannot insert or update data, or create new objects (such as tables, stored procedures, views, and functions) unless you update the MAXSIZE of your database or delete data. For more information, see . The sys.dm_db_partition_stats view returns page and row-count information for every partition in the database, which can be used to calculate database size.

The following query returns the size of your database (in megabytes):

 
-- Calculates the size of the database. SELECT SUM(reserved_page_count)*8.0/1024FROM sys.dm_db_partition_stats; GO

The following query returns the size of individual objects (in megabytes) in your database:

 
-- Calculates the size of individual database objects. SELECT sys.objects.name, SUM(reserved_page_count) * 8.0 / 1024FROM sys.dm_db_partition_stats, sys.objects WHERE sys.dm_db_partition_stats.object_id = sys.objects.object_id GROUP BY sys.objects.name; GO

Monitoring Connections

You can use the view to retrieve information about the connections established to a specific SQL Database server and the details of each connection. In addition, the sys.dm_exec_sessions view is helpful when retrieving information about all active user connections and internal tasks.

The following query retrieves information on the current connection:

Transact-SQL
-- monitor connectionsSELECT      e.connection_id,      s.session_id,      s.login_name,      s.last_request_end_time,      s.cpu_timeFROM      sys.dm_exec_sessions s      INNER JOIN sys.dm_exec_connections e      ON s.session_id = e.session_idGO

Monitoring Query Performance

Slow or long running queries can consume significant system resources. This section demonstrates how to use dynamic management views to detect a few common query performance problems. For detailed information, see article on Microsoft TechNet.

Finding Top N Queries

The following example returns information about the top five queries ranked by average CPU time. This example aggregates the queries according to their query hash, so that logically equivalent queries are grouped by their cumulative resource consumption.

Transact-SQL
-- Find top 5queriesSELECT TOP 5 query_stats.query_hash AS "Query Hash",     SUM(query_stats.total_worker_time) / SUM(query_stats.execution_count) AS "Avg CPU Time",    MIN(query_stats.statement_text) AS "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_statsGROUP BY query_stats.query_hashORDER BY 2 DESC;GO

Monitoring Blocked Queries

Slow or long-running queries can contribute to excessive resource consumption and be the consequence of blocked queries. The cause of the blocking can be poor application design, bad query plans, the lack of useful indexes, and so on. You can use the sys.dm_tran_locks view to get information about the current locking activity in your SQL Database. For example code, see in SQL Server Books Online.

Monitoring Query Plans

An inefficient query plan also may increase CPU consumption. The following example uses the sys.dm_exec_query_stats view to determine which query uses the most cumulative CPU.

Transact-SQL
-- Monitor query plansSELECT    highest_cpu_queries.plan_handle,      highest_cpu_queries.total_worker_time,     q.dbid,     q.objectid,     q.number,     q.encrypted,     q.[text] FROM     (SELECT TOP 50          qs.plan_handle,          qs.total_worker_time      FROM         sys.dm_exec_query_stats qs      ORDER BY qs.total_worker_time desc) AS highest_cpu_queries      CROSS APPLY sys.dm_exec_sql_text(plan_handle) AS q ORDER BY highest_cpu_queries.total_worker_time desc

See Also

Concepts

转载地址:http://dqktx.baihongyu.com/

你可能感兴趣的文章
全面理解Git
查看>>
JS敏感信息泄露:不容忽视的WEB漏洞
查看>>
让我们荡起双桨,Android 小船波浪动画
查看>>
ApacheCN 翻译活动进度公告 2019.2.18
查看>>
分布式memcached服务器代理magent安装配置(CentOS6.6)
查看>>
Create Volume 操作(Part III) - 每天5分钟玩转 OpenStack(52)
查看>>
物联网的广泛应用将扭转发展中经济体的局面 为全球发展带来新机遇
查看>>
Polar码引发舆论狂欢 5G标准远未定局
查看>>
IntersectionObserver + Custom Elements 实现图片懒加载(滚动加载)/点击重试
查看>>
KSImageNamed-Xcode-master
查看>>
memcache
查看>>
Struts2参数知识点
查看>>
tomcat 8.0虚拟机配置文档
查看>>
轻松实现基于Heartbeat的高可用web服务集群
查看>>
分析y一款APP
查看>>
我的 ubuntu14.04.3 LTS
查看>>
mac 安装office
查看>>
学习bufio、fmt
查看>>
nginx 设置301重定向
查看>>
mycat 数据迁移测试
查看>>