Management data warehouse

Applies to: SQL Server

The management data warehouse is a relational database containing the data collected from a server that is a data collection target. This data is used to generate the reports for the System Data collection sets, and can also be used to create custom reports.

The data collector infrastructure defines the jobs and maintenance plans that are needed to implement the retention policies defined by the database administrator.

Important

For this release of the data collector, the management data warehouse is created using the Simple recovery model, to minimize logging. You should implement the appropriate recovery model for your organization.

Deploy and use the data warehouse

You can install the management data warehouse on the same instance of SQL Server that runs the data collector. However, if server resources or performance is an issue on the server being monitored, you can install the management data warehouse on a different computer.

The required schemas and their objects for the predefined system collection sets are created when you create the management data warehouse. The schemas that are created are core and snapshots.A third schema, custom_snapshots, is created when user-defined collection sets are created that include collection items that use the Generic T-SQL Query collector type.

Core schema

The core schema describes the tables, stored procedures, and views that are used to organize and to identify collected data. These tables are shared among all the data tables created for individual collector types. This schema is locked, and only the owner of the management data warehouse database can modify it. The names of the tables in this schema are prefixed by core.

The following table describes the database tables in the core schema. These database tables enable the data collector to track where the data came from, who inserted it, and when it was uploaded to the data warehouse.

Table name Description
core.performance_counter_report_group_items Stores information about how the management data warehouse reports should group and aggregate performance counters.
core.snapshots_internal Identifies each new snapshot. A new row is inserted into this table whenever an upload package starts uploading a new batch of data.
core.snapshot_timetable_internal Stores information about the snapshot times. The snapshot time is stored in a separate table because many snapshots can happen at nearly the same time.
core.source_info_internal This table stores information about the data source. This table is updated whenever a new collection set starts uploading data to the data warehouse.
core.supported_collector_types_internal Contains the IDs of registered collector types that can upload data to the management data warehouse. This table is only updated when the schema of the warehouse is updated to support a new collector type. When the management data warehouse is created, this table is populated with the IDs of the collector types provided by the data collector.
core.wait_categories Contains the categories used to group wait types according to wait_type characteristic.
core.wait_types Contains the wait types recognized by the data collector.
core.purge_info_internal Indicates that a request was made to stop the removal of data from the management data warehouse.

The preceding tables are used with collector type tables to store information. For example, the Generic SQL Trace collector type uses the following tables to store trace data:

  • core.source_info_internal
  • core.snapshots_internal
  • snapshots.trace_info
  • snapshots.trace_data

Snapshots schema

The snapshots schema describes the objects needed to store and maintain the data collected by the collector types that are provided. The tables in this schema are fixed and don't need to be changed during the lifetime of the collector type. If changes are needed, the schema can only be changed by members of the mdw_admin role. These tables are created to store the data collected by the System Data collection sets.

The following tables illustrate a portion of the management data warehouse schema that is required for the Server Activity and Query Statistics collection sets.

Schema Objects
System-level resource tables snapshots.os_wait_stats
snapshots.os_latch_stats
snapshots.os_schedulers
snapshots.os_memory_clerks
snapshots.os_memory_nodes
snapshots.sql_process_and_system_memory
System activity snapshots.active_sessions_and_requests
Query statistics snapshots.query_stats
I/O statistics snapshots.io_virtual_file_stats
Query text and plan snapshots.notable_query_text
snapshots.notable_query_plan
Normalized query statistics snapshots.distinct_queries
snapshots.distinct_query_to_handle

Custom_snapshots schema

The custom_snapshots schema describes new tables and views that are created when standard or third-party collector types are used to create user-defined collection sets. Any collector type that requires a new data table for a collection item can create that table in this schema. New tables can be added in this schema by members of the mdw_writer role. Any other changes to the schema can only be made by members of the mdw_admin role.

You can get detailed data type and content information for the database table columns by reading the documentation for the appropriate data collector stored procedure for each of the tables.

Best practices

When working with the management data warehouse, we recommend following these best practices:

  • Don't modify the metadata of management data warehouse tables unless you're adding a new collector type.

  • Don't directly modify the data in the management data warehouse. Changing the data that you have collected invalidates the legitimacy of the collected data.

  • Instead of directly using the tables, use the documented stored procedures and functions that are provided with the data collector to access instance and application data. The table names and definitions can change, do change when you update the application, and might change in future releases.