游泳

美观实用SQL云平台监控动态管理视图

2019-06-20 05:35:01来源:励志吧0次阅读

  在云计算的应用环境中,云应用的开发者只需要把云应用程序开发出来,在条件成熟的时候部署到云端去。支撑应用程序运行的通常是关系型数据库,如在普通的或者Windows Form应用程序中,经常使用SQL Server来做应用数据库支持,在云应用程序中,我们可以使用SQL Azure作为云端的数据库。

  SQL Azure可以在任何时间提供客户数据应用,帮助用户简化多数据库的创建和部署,开发人员无需安装、设置数据库软件,也不必为数据库打补丁或进行管理;为用户提供了内置的高可用性和容错能力,且无需客户进行实际管理;支持TDS和Transact- SQL(T- SQL),客户可以使用现有技术在T–SQL上进行开发,还可以使用与现有的客户自有数据库软件相对应的关系型数据模型。

  但是我们不能被SQL Azure所具有的功能所误导,想当然的认为它已经替我们干了所有的事情,云应用服务提供者只是创建SQL Azure的数据库,然后就像使用本地数据库一样使用它而不去管其它有关数据库性能方面的问题了。保证数据库性能和健康状况是应用程序及其数据正常和高效运行的两大法宝,因此需要云服务提供者去了解如何监控SQL Azure的性能,本文中就来讨论一下这个问题。

  动态管理视图和函数

  动态管理视图返回了当前运行的数据库实例的健康检查、诊断和性能状况。目前有2种类型的动态数据管理视图和函数:

  服务器范围(Server-Scoped)的动态管理视图和函数

  数据库范围(Database-Scoped)的动态管理视图和函数

  现在已经提供的动态管理视图和函数如表1所示:

  动态管理视图或函数示例视图或函数改变捕获数据_cdc_log_scan_sessions

  _cdc_errors

  变化跟踪_tran_commit_table通用语言运行时_clr_appdomains

  _clr_properties

  数据监控_db_mirroring_connections

  _db_mirroring_auto_page_repair

  数据库相关_db_file_space_usage

  _db_session_space_usage

  执行相关_exec_background_job_queue

  _exec_query_optimizer_info

  _exec_background_job_queue

  _exec_query_plan

  _exec_background_job_queue_stats

  _exec_query_resource_semaphores

  扩展事件_xe_map_values

  _xe_session_events

  全文检索_fts_active_catalogs

  _fts_fdhosts

  _fts_index_keywords_by_document

  索引_db_index_operational_stats

  _db_index_physical_stats

  文件流_filestream_file_io_handles

  _filestream_file_io_requests

  I/_io_backup_tapes

  _io_cluster_shared_drives

  对象_sql_referenced_entities

  _sql_referencing_entities

  查询提醒_qn_subscriptions复制_repl_articles

  _repl_schemas

  资源管理_resource_governor_configuration

  _resource_governor_workload_groups

  Service _broker_activated_tasks

  _broker_connections

  SQL Server实例操作系统_os_buffer_descriptors

  _os_memory_pools

  事务_tran_active_snapshot_database_transactions

  _tran_active_transactions

  安全_audit_actions

  _cryptographic_provider_properties

  在这些SQL Server动态管理视图和函数中,目前SQL Azure上提供的动态管理视图和函数仅有三种:

  Database-related dynamic management views,数据库相关动态管理视图

  Execution-related dynamic management views,执行相关动态管理视图

  Transaction-related dynamic management views,事务相关动态管理视图

  由此可以可见,SQL Azure上目前开放出来的数据库动态管理视图远远不能和本地环境中的SQL Server数据库动态管理视图和函数相比。

  使用动态管理视图监控SQL Azure

  根据目前SQL Azure所提供的三类动态管理视图和函数,在使用动态管理视图的管理场景中,介绍一下管理授权、计算数据库容量、监控连接、性能监控这四个方面的使用。

  (1) 管理授权

  在SQL Azure中,查询一个动态管理视图需要有查看数据库状态(VIEW DATABASE STATE)的权限。VIEW DATABASE STATE返回了当前数据库的所有对象信息,如可以使用如下语句给某个数据库用户授予查看数据库状态的权限。

  --管理授权

  GRANT VIEW DATABASE STATE TOdatabase_user

  (2) 计算数据库容量

  云计算服务提供者租用了厂商提供的SQL Azure,租用时要根据数据库的容量、流量等进行付费。一旦数据库的容量超过了付费服务的最大容量,那么就会接收到SQL Azure的提示错误。这时我们就不能插入或更新数据,也不能创建新的数据库对象,如表、视图、存储过程和函数。这时我们可以使用动态管理视图_db_partition_stats来统计数据库容量信息。

  计算数据库容量,以M(兆)位单位

  --计算数据库容量SELECTSUM(reserved_page_count)*8.0/1024FROM _db_partition_stats;

  GO

  计算单个对象容量,以M(兆)位单位

  --计算单个对象容量, SUM(reserved_page_count) *8.0/1024FROM _db_partition_stats, jects

  WHERE _db_partition_ject_id =ject_id

  GROUP BY ;

  GO

  (3) 监控连接

  我们可以时候动态管理视图_exec_connections来查看特定数据库已建立的连接和每个连接的详细信息。在查看连接信息时同时使用了视图_exec_sessions。

  --监控连接SELECT nnection_id,

  ssion_id,

  gin_name,

  st_request_end_time,

  u_time

  FROM

  _exec_sessions s

  INNER _exec_connections e

  ssion_id =ssion_id

  GO

  (4)性能监控

  缓慢或者执行时间很长的查询消耗系统资源显著,可以使用下面这几种方法来检测数据库查询时的性能问题。

  --查找前N条SELECTTOP 5query_ery_hash AS"Query Hash",

  SUM(query_tal_worker_time) /SUM(query_ecution_count) AS"Avg CPUTime",

  MIN(query_atement_text) AS"Statement Text"FROM

  (SELECTQS.*,

  SUBSTRING(xt, (atement_start_offset/2) +1,

  ((CASEstatement_end_offset

  WHEN -1THENDATALENGTH(xt)

  atement_end_offset END atement_start_offset)/2) +1) ASstatement_text

  FROM _exec_query_stats ASQS

  CROSS APPLY _exec_sql_text(l_handle) asST) asquery_stats

  GROUP BY query_ery_hash

  ORDER BY 2DESC;

  GO

  --监控查询计划SELECT highest_cpu_an_handle,

  highest_cpu_tal_worker_time,

  id,

  jectid,

  mber,

  crypted,

  q.[text]

  FROM

  (SELECTTOP 50

  an_handle,

  tal_worker_time

  FROM

  _exec_query_stats qs

  ORDER BY tal_worker_time desc) AShighest_cpu_queries

  CROSS APPLY _exec_sql_text(plan_handle) ASq

  ORDER BY highest_cpu_tal_worker_time desc

  结语

  SQL Azure是一个云的关系型数据库,它可以在任何时间提供客户数据应用,在使用SQL Azure的过程中,我们不仅仅考虑的是数据的正确性和可扩展性,还要注意SQL Azure的性能,我们可以使用SQL Azure提供的动态管理视图和函数来对我们的数据库实例进行监控,并使用数据库、执行和事务三类动态管理视图和函数来运行监控任务。

人怎样预防痴呆
冠心病发病时急用药是什么
手足麻木中药外敷方
分享到: