Warning: Constant WP_TEMP_DIR already defined in /var/www/html/blogs/joe/wp-config.php on line 93

Warning: Cannot modify header information - headers already sent by (output started at /var/www/html/blogs/joe/wp-config.php:93) in /var/www/html/blogs/joe/wp-includes/rest-api/class-wp-rest-server.php on line 1902

Warning: Cannot modify header information - headers already sent by (output started at /var/www/html/blogs/joe/wp-config.php:93) in /var/www/html/blogs/joe/wp-includes/rest-api/class-wp-rest-server.php on line 1902

Warning: Cannot modify header information - headers already sent by (output started at /var/www/html/blogs/joe/wp-config.php:93) in /var/www/html/blogs/joe/wp-includes/rest-api/class-wp-rest-server.php on line 1902

Warning: Cannot modify header information - headers already sent by (output started at /var/www/html/blogs/joe/wp-config.php:93) in /var/www/html/blogs/joe/wp-includes/rest-api/class-wp-rest-server.php on line 1902

Warning: Cannot modify header information - headers already sent by (output started at /var/www/html/blogs/joe/wp-config.php:93) in /var/www/html/blogs/joe/wp-includes/rest-api/class-wp-rest-server.php on line 1902

Warning: Cannot modify header information - headers already sent by (output started at /var/www/html/blogs/joe/wp-config.php:93) in /var/www/html/blogs/joe/wp-includes/rest-api/class-wp-rest-server.php on line 1902

Warning: Cannot modify header information - headers already sent by (output started at /var/www/html/blogs/joe/wp-config.php:93) in /var/www/html/blogs/joe/wp-includes/rest-api/class-wp-rest-server.php on line 1902

Warning: Cannot modify header information - headers already sent by (output started at /var/www/html/blogs/joe/wp-config.php:93) in /var/www/html/blogs/joe/wp-includes/rest-api/class-wp-rest-server.php on line 1902
{"id":501,"date":"2012-03-28T06:01:00","date_gmt":"2012-03-28T06:01:00","guid":{"rendered":"\/blogs\/joe\/post\/Should-you-ignore-DBMIRROR_DBM_MUTEX.aspx"},"modified":"2013-01-11T14:44:55","modified_gmt":"2013-01-11T22:44:55","slug":"should-you-ignore-dbmirror_dbm_mutex","status":"publish","type":"post","link":"https:\/\/www.sqlskills.com\/blogs\/joe\/should-you-ignore-dbmirror_dbm_mutex\/","title":{"rendered":"Should you ignore DBMIRROR_DBM_MUTEX?"},"content":{"rendered":"

The DBMIRROR_DBM_MUTEX wait type is undocumented. Or rather, it is documented in books online<\/a> as being \u201cIdentified for informational purposes only. Not supported. Future compatibility is not guaranteed.\u201d Paul Randal had some additional information on this wait type in his \u201cWait statistics, or please tell me where it hurts<\/a>\u201d post, defining the wait type as \u201c\u2026 contention for the send buffer that database mirroring shares between all the mirroring sessions on a server. It could indicate that you’ve got too many mirroring sessions.\u201d<\/p>\n

I saw one forum entry where someone said \u201cyou can ignore\u201d the DBMIRROR_DBM_MUTEX wait type because, basically, it is undocumented. This assumes that Microsoft only documents wait types that we should care about \u2013 but this really isn\u2019t the case.<\/p>\n

A few months ago I had a discussion with a DBA about whether or not this wait type was associated with mirroring contention issues as Paul described or whether this really just represented a background process that naturally accumulated time (idle\/spin waits). The DBA said this was an idle wait type that can be ignored. I said that it was indeed associated with activity and coupled with other statistics, may point to mirroring related contention.<\/p>\n

As with anything undocumented, while you cannot point to official documentation, there is nothing to stop you from setting up a test scenario and evaluating what happens under specific conditions. The \u201cshow, don\u2019t just tell\u201d method is always something I prefer, even when I\u2019m confident that a stated fact is correct.<\/p>\n

Question 1: Does DBMIRROR_DBM_MUTEX accumulate during inactive periods?<\/strong><\/p>\n

I set up synchronous mirroring with automatic failover for this test (Credit database) and executing the following simple before\/after WAITFOR capture of overall accumulated statistics to see which database mirroring related wait stats incremented during inactive (user inactive) periods. SQL Server version was 10.50.2500. The script runs in SQLCMD mode against CAESAR (principal) and AUGUSTUS (mirror)):<\/p>\n

— Principal database instance<\/span><\/span><\/span><\/p>\n

:<\/span><\/span><\/span>CONNECT<\/span><\/span><\/span>CAESAR<\/span><\/span><\/span><\/span><\/p>\n

SELECT<\/span><\/span><\/span> wait_type<\/span><\/span>,<\/span><\/span> wait_time_ms<\/span><\/span>,<\/span><\/span> <\/span>signal_wait_time_ms<\/span><\/span><\/span><\/span><\/p>\n

INTO<\/span><\/span><\/span> tempdb<\/span><\/span>.<\/span><\/span>dbo<\/span><\/span>.<\/span><\/span><\/span>before_waits<\/span><\/span><\/span><\/span><\/p>\n

FROM<\/span><\/span><\/span> sys<\/span><\/span>.<\/span><\/span><\/span>dm_os_wait_stats<\/span><\/span><\/span><\/span><\/p>\n

WHERE<\/span><\/span><\/span> wait_type<\/span><\/span> LIKE<\/span><\/span> ‘DBM%’<\/span><\/span><\/span>;<\/span><\/span><\/span><\/span><\/p>\n

GO<\/span><\/span><\/span><\/p>\n

\n

— Mirror database instance<\/span><\/span><\/span><\/p>\n

:<\/span><\/span><\/span>CONNECT<\/span><\/span><\/span>AUGUSTUS<\/span><\/span><\/span><\/span><\/p>\n

SELECT<\/span><\/span><\/span> wait_type<\/span><\/span>,<\/span><\/span> wait_time_ms<\/span><\/span>,<\/span><\/span> <\/span>signal_wait_time_ms<\/span><\/span><\/span><\/span><\/p>\n

INTO<\/span><\/span><\/span> tempdb<\/span><\/span>.<\/span><\/span>dbo<\/span><\/span>.<\/span><\/span><\/span>before_waits<\/span><\/span><\/span><\/span><\/p>\n

FROM<\/span><\/span><\/span> sys<\/span><\/span>.<\/span><\/span><\/span>dm_os_wait_stats<\/span><\/span><\/span><\/span><\/p>\n

WHERE<\/span><\/span><\/span> wait_type<\/span><\/span> LIKE<\/span><\/span> ‘DBM%’<\/span><\/span><\/span>;<\/span><\/span><\/span><\/span><\/p>\n

GO<\/span><\/span><\/span><\/p>\n

\n

:<\/span><\/span><\/span>CONNECT<\/span><\/span><\/span>CAESAR<\/span><\/span><\/span><\/span><\/p>\n

USE<\/span><\/span><\/span> Credit<\/span><\/span><\/span>;<\/span><\/span><\/span><\/span><\/p>\n

\n

WAITFOR<\/span><\/span><\/span> DELAY<\/span><\/span> <\/span>’00:00:30′<\/span><\/span><\/span><\/span><\/p>\n

GO<\/span><\/span><\/span><\/p>\n

\n

— Principal<\/span><\/span><\/span><\/p>\n

:<\/span><\/span><\/span>CONNECT<\/span><\/span><\/span>CAESAR<\/span><\/span><\/span><\/span><\/p>\n

SELECT<\/span><\/span><\/span> wait_type<\/span><\/span>,<\/span><\/span> wait_time_ms<\/span><\/span>,<\/span><\/span> <\/span>signal_wait_time_ms<\/span><\/span><\/span><\/span><\/p>\n

INTO<\/span><\/span><\/span> tempdb<\/span><\/span>.<\/span><\/span>dbo<\/span><\/span>.<\/span><\/span><\/span>after_waits<\/span><\/span><\/span><\/span><\/p>\n

FROM<\/span><\/span><\/span> sys<\/span><\/span>.<\/span><\/span>dm_os_wait_stats<\/span><\/span><\/span>;<\/span><\/span><\/span><\/span><\/p>\n

\n

SELECT<\/span><\/span><\/span>b<\/span><\/span>.<\/span><\/span>wait_type<\/span><\/span><\/span>,<\/span><\/span><\/span><\/span><\/p>\n

a<\/span><\/span>.<\/span><\/span>wait_time_ms<\/span><\/span> –<\/span><\/span> b<\/span><\/span>.<\/span><\/span>wait_time_ms<\/span><\/span> wait_time_ms<\/span><\/span><\/span>,<\/span><\/span><\/span><\/span><\/p>\n

a<\/span><\/span>.<\/span><\/span>signal_wait_time_ms<\/span><\/span> –<\/span><\/span> b<\/span><\/span>.<\/span><\/span>signal_wait_time_ms<\/span><\/span> <\/span>signal_time_ms<\/span><\/span><\/span><\/span><\/p>\n

FROM<\/span><\/span><\/span> tempdb<\/span><\/span>.<\/span><\/span>dbo<\/span><\/span>.<\/span><\/span>before_waits<\/span><\/span> <\/span>b<\/span><\/span><\/span><\/span><\/p>\n

INNER<\/span><\/span><\/span> JOIN<\/span><\/span> tempdb<\/span><\/span>.<\/span><\/span>dbo<\/span><\/span>.<\/span><\/span>after_waits<\/span><\/span> a<\/span><\/span> <\/span>ON<\/span><\/span><\/span><\/span><\/p>\n

b<\/span><\/span>.<\/span><\/span>wait_type<\/span><\/span> =<\/span><\/span> a<\/span><\/span>.<\/span><\/span><\/span>wait_type<\/span><\/span><\/span><\/span><\/p>\n

WHERE<\/span><\/span><\/span> a<\/span><\/span>.<\/span><\/span>wait_time_ms<\/span><\/span> ><\/span><\/span> b<\/span><\/span>.<\/span><\/span>wait_time_ms<\/span><\/span> <\/span><\/span><\/span><\/p>\n

ORDER<\/span><\/span><\/span> BY<\/span><\/span> a<\/span><\/span>.<\/span><\/span>wait_time_ms<\/span><\/span> –<\/span><\/span> b<\/span><\/span>.<\/span><\/span>wait_time_ms<\/span><\/span> DESC<\/span><\/span><\/span>;<\/span><\/span><\/span><\/span><\/p>\n

\n

DROP<\/span><\/span><\/span> TABLE<\/span><\/span> tempdb<\/span><\/span>.<\/span><\/span>dbo<\/span><\/span>.<\/span><\/span>before_waits<\/span><\/span><\/span>;<\/span><\/span><\/span><\/span><\/p>\n

DROP<\/span><\/span><\/span> TABLE<\/span><\/span> tempdb<\/span><\/span>.<\/span><\/span>dbo<\/span><\/span>.<\/span><\/span>after_waits<\/span><\/span><\/span>;<\/span><\/span><\/span><\/span><\/p>\n

GO<\/span><\/span><\/span><\/p>\n

\n

:<\/span><\/span><\/span>CONNECT<\/span><\/span><\/span>AUGUSTUS<\/span><\/span><\/span><\/span><\/p>\n

— Secondary replica<\/span><\/span><\/span><\/p>\n

SELECT<\/span><\/span><\/span> wait_type<\/span><\/span>,<\/span><\/span> wait_time_ms<\/span><\/span>,<\/span><\/span> <\/span>signal_wait_time_ms<\/span><\/span><\/span><\/span><\/p>\n

INTO<\/span><\/span><\/span> tempdb<\/span><\/span>.<\/span><\/span>dbo<\/span><\/span>.<\/span><\/span><\/span>after_waits<\/span><\/span><\/span><\/span><\/p>\n

FROM<\/span><\/span><\/span> sys<\/span><\/span>.<\/span><\/span>dm_os_wait_stats<\/span><\/span><\/span>;<\/span><\/span><\/span><\/span><\/p>\n

\n

SELECT<\/span><\/span><\/span>b<\/span><\/span>.<\/span><\/span>wait_type<\/span><\/span><\/span>,<\/span><\/span><\/span><\/span><\/p>\n

a<\/span><\/span>.<\/span><\/span>wait_time_ms<\/span><\/span> –<\/span><\/span> b<\/span><\/span>.<\/span><\/span>wait_time_ms<\/span><\/span> wait_time_ms<\/span><\/span><\/span>,<\/span><\/span><\/span><\/span><\/p>\n

a<\/span><\/span>.<\/span><\/span>signal_wait_time_ms<\/span><\/span> –<\/span><\/span> b<\/span><\/span>.<\/span><\/span>signal_wait_time_ms<\/span><\/span> <\/span>signal_time_ms<\/span><\/span><\/span><\/span><\/p>\n

FROM<\/span><\/span><\/span> tempdb<\/span><\/span>.<\/span><\/span>dbo<\/span><\/span>.<\/span><\/span>before_waits<\/span><\/span> <\/span>b<\/span><\/span><\/span><\/span><\/p>\n

INNER<\/span><\/span><\/span> JOIN<\/span><\/span> tempdb<\/span><\/span>.<\/span><\/span>dbo<\/span><\/span>.<\/span><\/span>after_waits<\/span><\/span> a<\/span><\/span> <\/span>ON<\/span><\/span><\/span><\/span><\/p>\n

b<\/span><\/span>.<\/span><\/span>wait_type<\/span><\/span> =<\/span><\/span> a<\/span><\/span>.<\/span><\/span><\/span>wait_type<\/span><\/span><\/span><\/span><\/p>\n

WHERE<\/span><\/span><\/span> a<\/span><\/span>.<\/span><\/span>wait_time_ms<\/span><\/span> ><\/span><\/span> b<\/span><\/span>.<\/span><\/span>wait_time_ms<\/span><\/span> <\/span><\/span><\/span><\/p>\n

ORDER<\/span><\/span><\/span> BY<\/span><\/span> a<\/span><\/span>.<\/span><\/span>wait_time_ms<\/span><\/span> –<\/span><\/span> b<\/span><\/span>.<\/span><\/span>wait_time_ms<\/span><\/span> DESC<\/span><\/span><\/span>;<\/span><\/span><\/span><\/span><\/p>\n

\n

DROP<\/span><\/span><\/span> TABLE<\/span><\/span> tempdb<\/span><\/span>.<\/span><\/span>dbo<\/span><\/span>.<\/span><\/span>before_waits<\/span><\/span><\/span>;<\/span><\/span><\/span><\/span><\/p>\n

DROP<\/span><\/span><\/span> TABLE<\/span><\/span> tempdb<\/span><\/span>.<\/span><\/span>dbo<\/span><\/span>.<\/span><\/span>after_waits<\/span><\/span><\/span>;<\/span><\/span><\/span><\/span><\/p>\n

GO<\/span><\/span><\/span><\/p>\n

\n

Over a 30 second inactive period, the following DBM related wait stats accumulated on the principal:<\/p>\n\n\n\n\n
wait_type<\/strong><\/td>\nwait_time_ms<\/strong><\/td>\nsignal_time_ms<\/strong><\/td>\n<\/tr>\n
DBMIRROR_EVENTS_QUEUE<\/strong><\/td>\n30043<\/td>\n5<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n

And here is what accumulated on the mirror:<\/p>\n\n\n\n\n
wait_type<\/strong><\/td>\nwait_time_ms<\/strong><\/td>\nsignal_time_ms<\/strong><\/td>\n<\/tr>\n
DBMIRROR_EVENTS_QUEUE<\/strong><\/td>\n30966<\/td>\n6<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n

No DBMIRROR_DBM_MUTEX to be found.<\/p>\n

Question 2: Will DBMIRROR_DBM_MUTEX accumulate during a large data load in synchronous mode? <\/strong><\/p>\n

In my second test, I inserted 1,600,000 rows into the dbo.charge table. Granted \u2013 we have all kinds of reasons why there could be contention in a mirroring session including network considerations, synchronous versus asynchronous settings, disk contention for the databases (principal\/mirror), memory constraints, 32-bit\/64-bit considerations, performance overhead of non-mirrored databases on the same instance or server, number of concurrent mirroring sessions and more.<\/p>\n

But in a simple test environment with minimal concurrent activity, 4 scheduler and 2 GB of RAM for the principal and the same for the mirror, can I get DBMIRROR_DBM_MUTEX to appear? I ran the following test:<\/p>\n

:<\/span><\/span><\/span>CONNECT<\/span><\/span><\/span>CAESAR<\/span><\/span><\/span><\/span><\/p>\n

USE<\/span><\/span><\/span> Credit<\/span><\/span><\/span>;<\/span><\/span><\/span><\/span><\/p>\n

\n

INSERT<\/span><\/span><\/span> dbo<\/span><\/span>.<\/span><\/span><\/span>charge<\/span><\/span><\/span><\/span><\/p>\n

(<\/span><\/span><\/span>member_no<\/span><\/span>,<\/span><\/span><\/span> provider_no<\/span><\/span>,<\/span><\/span> category_no<\/span><\/span>,<\/span><\/span> charge_dt<\/span><\/span>,<\/span><\/span> charge_amt<\/span><\/span>,<\/span><\/span> statement_no<\/span><\/span>,<\/span><\/span> charge_code<\/span><\/span><\/span>)<\/span><\/span><\/span><\/span><\/p>\n

SELECT<\/span><\/span><\/span> member_no<\/span><\/span>,<\/span><\/span> provider_no<\/span><\/span>,<\/span><\/span> category_no<\/span><\/span>,<\/span><\/span> charge_dt<\/span><\/span>,<\/span><\/span> charge_amt<\/span><\/span>,<\/span><\/span> statement_no<\/span><\/span>,<\/span><\/span> <\/span>charge_code<\/span><\/span><\/span><\/span><\/p>\n

FROM<\/span><\/span><\/span> dbo<\/span><\/span>.<\/span><\/span>charge<\/span><\/span><\/span>;<\/span><\/span><\/span><\/span><\/p>\n

\n

\n

GO<\/span><\/span><\/span><\/p>\n

These are the database mirroring related wait statistics that accumulated on the principal SQL Server instance:<\/p>\n\n\n\n\n\n\n\n
wait_type<\/strong><\/td>\nwait_time_ms<\/strong><\/td>\nsignal_time_ms<\/strong><\/td>\n<\/tr>\n
DBMIRRORING_CMD<\/strong><\/td>\n253578<\/td>\n2083<\/td>\n<\/tr>\n
DBMIRROR_EVENTS_QUEUE<\/strong><\/td>\n83949<\/td>\n23775<\/td>\n<\/tr>\n
DBMIRROR_SEND<\/strong><\/td>\n5017<\/td>\n25<\/td>\n<\/tr>\n
DBMIRROR_DBM_EVENT<\/strong><\/td>\n12<\/td>\n0<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n

And here is what accumulated on the mirror:<\/p>\n\n\n\n\n\n\n
wait_type<\/strong><\/td>\nwait_time_ms<\/strong><\/td>\nsignal_time_ms<\/strong><\/td>\n<\/tr>\n
DBMIRROR_DBM_MUTEX<\/strong><\/td>\n482105<\/td>\n222<\/td>\n<\/tr>\n
DBMIRROR_SEND<\/strong><\/td>\n258917<\/td>\n5338<\/td>\n<\/tr>\n
DBMIRROR_EVENTS_QUEUE<\/strong><\/td>\n84676<\/td>\n3848<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n

Changing to the mirroring session to asynchronous mode instead of synchronous, I saw the following on the principal:<\/p>\n\n\n\n\n\n\n
wait_type<\/strong><\/td>\nwait_time_ms<\/strong><\/td>\nsignal_time_ms<\/strong><\/td>\n<\/tr>\n
DBMIRROR_EVENTS_QUEUE<\/strong><\/td>\n75359<\/td>\n22974<\/td>\n<\/tr>\n
DBMIRRORING_CMD<\/strong><\/td>\n64219<\/td>\n1655<\/td>\n<\/tr>\n
DBMIRROR_SEND<\/strong><\/td>\n8740<\/td>\n60<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n

And I saw the following on the mirror:<\/p>\n\n\n\n\n\n\n
wait_type<\/strong><\/td>\nwait_time_ms<\/strong><\/td>\nsignal_time_ms<\/strong><\/td>\n<\/tr>\n
DBMIRROR_DBM_MUTEX<\/strong><\/td>\n113730<\/td>\n105<\/td>\n<\/tr>\n
DBMIRROR_EVENTS_QUEUE<\/strong><\/td>\n78699<\/td>\n3051<\/td>\n<\/tr>\n
DBMIRROR_SEND<\/strong><\/td>\n69729<\/td>\n4057<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n

So I saw the DBMIRROR_DBM_MUTEX wait type appear (on the mirror side) for both the synchronous and asynchronous modes during an INSERT of 1,600,000 rows. There are plenty of other tests I could have executed \u2013 but I wanted to show just a couple of examples to demonstrate viewing what gets accumulated over a specific period of time (and differentiating between idle waits versus activity-related waits).<\/p>\n

Does this necessarily point <\/em>to a database mirroring performance issue? As I\u2019ve mentioned before, I use wait statistics as an initial pointer so that I\u2019m prioritizing my efforts appropriately. We don\u2019t have enough information to define root cause at this point just based on this data, but what we can derive through testing and observation is which wait types may be seen in conjunction with user activity in a mirrored partnership.<\/p>\n","protected":false},"excerpt":{"rendered":"

The DBMIRROR_DBM_MUTEX wait type is undocumented. Or rather, it is documented in books online as being \u201cIdentified for informational purposes only. Not supported. Future compatibility is not guaranteed.\u201d Paul Randal had some additional information on this wait type in his \u201cWait statistics, or please tell me where it hurts\u201d post, defining the wait type as […]<\/p>\n","protected":false},"author":7,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[19],"tags":[],"class_list":["post-501","post","type-post","status-publish","format-standard","hentry","category-database-mirroring"],"yoast_head":"\nShould you ignore DBMIRROR_DBM_MUTEX? - Joe Sack<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.sqlskills.com\/blogs\/joe\/should-you-ignore-dbmirror_dbm_mutex\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Should you ignore DBMIRROR_DBM_MUTEX? - Joe Sack\" \/>\n<meta property=\"og:description\" content=\"The DBMIRROR_DBM_MUTEX wait type is undocumented. Or rather, it is documented in books online as being \u201cIdentified for informational purposes only. Not supported. Future compatibility is not guaranteed.\u201d Paul Randal had some additional information on this wait type in his \u201cWait statistics, or please tell me where it hurts\u201d post, defining the wait type as […]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.sqlskills.com\/blogs\/joe\/should-you-ignore-dbmirror_dbm_mutex\/\" \/>\n<meta property=\"og:site_name\" content=\"Joe Sack\" \/>\n<meta property=\"article:published_time\" content=\"2012-03-28T06:01:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2013-01-11T22:44:55+00:00\" \/>\n<meta name=\"author\" content=\"Joseph Sack\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Joseph Sack\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.sqlskills.com\/blogs\/joe\/should-you-ignore-dbmirror_dbm_mutex\/\",\"url\":\"https:\/\/www.sqlskills.com\/blogs\/joe\/should-you-ignore-dbmirror_dbm_mutex\/\",\"name\":\"Should you ignore DBMIRROR_DBM_MUTEX? - Joe Sack\",\"isPartOf\":{\"@id\":\"https:\/\/www.sqlskills.com\/blogs\/joe\/#website\"},\"datePublished\":\"2012-03-28T06:01:00+00:00\",\"dateModified\":\"2013-01-11T22:44:55+00:00\",\"author\":{\"@id\":\"https:\/\/www.sqlskills.com\/blogs\/joe\/#\/schema\/person\/533eb0113a15fb5a6e8067a49e4ae648\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.sqlskills.com\/blogs\/joe\/should-you-ignore-dbmirror_dbm_mutex\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.sqlskills.com\/blogs\/joe\/should-you-ignore-dbmirror_dbm_mutex\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.sqlskills.com\/blogs\/joe\/should-you-ignore-dbmirror_dbm_mutex\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.sqlskills.com\/blogs\/joe\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Database Mirroring\",\"item\":\"https:\/\/www.sqlskills.com\/blogs\/joe\/category\/database-mirroring\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Should you ignore DBMIRROR_DBM_MUTEX?\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.sqlskills.com\/blogs\/joe\/#website\",\"url\":\"https:\/\/www.sqlskills.com\/blogs\/joe\/\",\"name\":\"Joe Sack\",\"description\":\"SQL Server Performance Tuning, High Availability and Disaster Recovery Blog\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.sqlskills.com\/blogs\/joe\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.sqlskills.com\/blogs\/joe\/#\/schema\/person\/533eb0113a15fb5a6e8067a49e4ae648\",\"name\":\"Joseph Sack\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.sqlskills.com\/blogs\/joe\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/a4b39a7719a6bfff1add3ec00527810734579ee114d6d983e8e68f937b77be96?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/a4b39a7719a6bfff1add3ec00527810734579ee114d6d983e8e68f937b77be96?s=96&d=mm&r=g\",\"caption\":\"Joseph Sack\"},\"description\":\"Joe Sack is a Principal Consultant with SQLskills. He has worked as a SQL Server professional since 1997 and has supported and developed for SQL Server environments in financial services, IT consulting, manufacturing, retail and the real estate industry. Prior to joining SQLskills he worked at Microsoft as a Premier Field Engineer supporting very large enterprise customer environments. He was responsible for providing deep SQL Server advisory services, training, troubleshooting and ongoing solutions guidance. His areas of expertise include performance tuning, scalability, T-SQL development and high-availability. In 2006 Joe earned the \u201cMicrosoft Certified Master: SQL Server 2005\u201d certification and in 2008 he earned the \u201cMicrosoft Certified Master: SQL Server 2008\u201d certification. In 2009 he took over responsibility for the entire SQL Server Microsoft Certified Master program and held that post until 2011. He was given the SQL Server MVP award in 2013.\",\"sameAs\":[\"http:\/\/3.209.169.194\/blogs\/joe\",\"https:\/\/twitter.com\/https:\/\/twitter.com\/josephsack\"],\"url\":\"https:\/\/www.sqlskills.com\/blogs\/joe\/author\/joe\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Should you ignore DBMIRROR_DBM_MUTEX? - Joe Sack","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.sqlskills.com\/blogs\/joe\/should-you-ignore-dbmirror_dbm_mutex\/","og_locale":"en_US","og_type":"article","og_title":"Should you ignore DBMIRROR_DBM_MUTEX? - Joe Sack","og_description":"The DBMIRROR_DBM_MUTEX wait type is undocumented. Or rather, it is documented in books online as being \u201cIdentified for informational purposes only. Not supported. Future compatibility is not guaranteed.\u201d Paul Randal had some additional information on this wait type in his \u201cWait statistics, or please tell me where it hurts\u201d post, defining the wait type as […]","og_url":"https:\/\/www.sqlskills.com\/blogs\/joe\/should-you-ignore-dbmirror_dbm_mutex\/","og_site_name":"Joe Sack","article_published_time":"2012-03-28T06:01:00+00:00","article_modified_time":"2013-01-11T22:44:55+00:00","author":"Joseph Sack","twitter_misc":{"Written by":"Joseph Sack","Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.sqlskills.com\/blogs\/joe\/should-you-ignore-dbmirror_dbm_mutex\/","url":"https:\/\/www.sqlskills.com\/blogs\/joe\/should-you-ignore-dbmirror_dbm_mutex\/","name":"Should you ignore DBMIRROR_DBM_MUTEX? - Joe Sack","isPartOf":{"@id":"https:\/\/www.sqlskills.com\/blogs\/joe\/#website"},"datePublished":"2012-03-28T06:01:00+00:00","dateModified":"2013-01-11T22:44:55+00:00","author":{"@id":"https:\/\/www.sqlskills.com\/blogs\/joe\/#\/schema\/person\/533eb0113a15fb5a6e8067a49e4ae648"},"breadcrumb":{"@id":"https:\/\/www.sqlskills.com\/blogs\/joe\/should-you-ignore-dbmirror_dbm_mutex\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.sqlskills.com\/blogs\/joe\/should-you-ignore-dbmirror_dbm_mutex\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.sqlskills.com\/blogs\/joe\/should-you-ignore-dbmirror_dbm_mutex\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.sqlskills.com\/blogs\/joe\/"},{"@type":"ListItem","position":2,"name":"Database Mirroring","item":"https:\/\/www.sqlskills.com\/blogs\/joe\/category\/database-mirroring\/"},{"@type":"ListItem","position":3,"name":"Should you ignore DBMIRROR_DBM_MUTEX?"}]},{"@type":"WebSite","@id":"https:\/\/www.sqlskills.com\/blogs\/joe\/#website","url":"https:\/\/www.sqlskills.com\/blogs\/joe\/","name":"Joe Sack","description":"SQL Server Performance Tuning, High Availability and Disaster Recovery Blog","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.sqlskills.com\/blogs\/joe\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.sqlskills.com\/blogs\/joe\/#\/schema\/person\/533eb0113a15fb5a6e8067a49e4ae648","name":"Joseph Sack","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.sqlskills.com\/blogs\/joe\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/a4b39a7719a6bfff1add3ec00527810734579ee114d6d983e8e68f937b77be96?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/a4b39a7719a6bfff1add3ec00527810734579ee114d6d983e8e68f937b77be96?s=96&d=mm&r=g","caption":"Joseph Sack"},"description":"Joe Sack is a Principal Consultant with SQLskills. He has worked as a SQL Server professional since 1997 and has supported and developed for SQL Server environments in financial services, IT consulting, manufacturing, retail and the real estate industry. Prior to joining SQLskills he worked at Microsoft as a Premier Field Engineer supporting very large enterprise customer environments. He was responsible for providing deep SQL Server advisory services, training, troubleshooting and ongoing solutions guidance. His areas of expertise include performance tuning, scalability, T-SQL development and high-availability. In 2006 Joe earned the \u201cMicrosoft Certified Master: SQL Server 2005\u201d certification and in 2008 he earned the \u201cMicrosoft Certified Master: SQL Server 2008\u201d certification. In 2009 he took over responsibility for the entire SQL Server Microsoft Certified Master program and held that post until 2011. He was given the SQL Server MVP award in 2013.","sameAs":["http:\/\/3.209.169.194\/blogs\/joe","https:\/\/twitter.com\/https:\/\/twitter.com\/josephsack"],"url":"https:\/\/www.sqlskills.com\/blogs\/joe\/author\/joe\/"}]}},"_links":{"self":[{"href":"https:\/\/www.sqlskills.com\/blogs\/joe\/wp-json\/wp\/v2\/posts\/501","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.sqlskills.com\/blogs\/joe\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.sqlskills.com\/blogs\/joe\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.sqlskills.com\/blogs\/joe\/wp-json\/wp\/v2\/users\/7"}],"replies":[{"embeddable":true,"href":"https:\/\/www.sqlskills.com\/blogs\/joe\/wp-json\/wp\/v2\/comments?post=501"}],"version-history":[{"count":0,"href":"https:\/\/www.sqlskills.com\/blogs\/joe\/wp-json\/wp\/v2\/posts\/501\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.sqlskills.com\/blogs\/joe\/wp-json\/wp\/v2\/media?parent=501"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.sqlskills.com\/blogs\/joe\/wp-json\/wp\/v2\/categories?post=501"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.sqlskills.com\/blogs\/joe\/wp-json\/wp\/v2\/tags?post=501"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}