{"id":391,"date":"2024-03-08T08:55:00","date_gmt":"2024-03-08T13:55:00","guid":{"rendered":"https:\/\/www.sqltabletalk.com\/?p=391"},"modified":"2024-03-07T22:40:37","modified_gmt":"2024-03-08T03:40:37","slug":"mastering-sql-server-diagnosing-wait-types","status":"publish","type":"post","link":"https:\/\/www.sqltabletalk.com\/?p=391","title":{"rendered":"Understanding and Diagnosing SQL Server Wait Types"},"content":{"rendered":"<h3>Introduction<\/h3>\n<p>In SQL Server, wait types are important indicators of where and why delays occur during query execution, directly impacting database performance. Properly understanding and diagnosing these wait types enable database administrators to pinpoint specific performance bottlenecks. This blog post aims to provide an overview of essential wait types that demand attention, distinguish common wait types that can usually be ignored, and offer strategies for effective diagnosis and interpretation to enhance overall database performance.<\/p>\n<h3>The Significance of Wait Types<\/h3>\n<p>Wait types are integral to SQL Server&#8217;s performance diagnostics, identifying when queries are paused due to dependencies on resources or operations, such as disk I\/O, locks, or network latency. Recognizing and understanding these wait types enables database administrators to pinpoint and resolve specific performance bottlenecks, ensuring efficient database operations.<\/p>\n<h3>Key SQL Server Wait Types to Monitor<\/h3>\n<p>Monitoring the right wait types assists in identifying actionable performance optimization opportunities. Here is a list of wait types that are often indicative of potential issues needing investigation:<\/p>\n<ul>\n<li><strong>PAGEIOLATCH_XX<\/strong>: Indicates waiting on disk I\/O operations for data pages not in the buffer pool. High values suggest disk subsystem bottlenecks. Solutions include assessing disk performance and considering faster storage or better disk configuration.<\/li>\n<li><strong>LCK_M_XX<\/strong>: Reflects lock contention, where transactions wait on others to release locks. Mitigation involves analyzing transactions causing contention and optimizing queries or indexing strategies.<\/li>\n<li><strong>CXPACKET<\/strong>: Related to parallel query execution, signaling inefficiencies in query parallelization or server hardware imbalance. Addressing it may involve optimizing queries, adjusting parallelism settings, or evaluating hardware resources.<\/li>\n<li><strong>WRITELOG<\/strong>: Points to delays in writing to the transaction log. Solutions range from improving disk subsystem performance to optimizing transaction log configuration and reducing transaction log write volumes.<\/li>\n<li><strong>IO_COMPLETION<\/strong>: Suggests general disk I\/O operation delays. Addressing involves analyzing the I\/O workload, upgrading disk hardware, or optimizing SQL queries and database design to lessen the I\/O load.<\/li>\n<li><strong>PAGELATCH_XX<\/strong>: Indicates contention for in-memory pages. Alleviation strategies include query optimization, tempdb configuration adjustments, and using monitoring tools to pinpoint contention sources.<\/li>\n<li><strong>THREADPOOL<\/strong>: Signifies a shortage of worker threads to handle tasks, often due to excessive concurrent queries. Solutions include query optimization, workload management, and adjusting the max worker threads setting.<\/li>\n<li><strong>ASYNC_NETWORK_IO<\/strong>: Occurs when SQL Server waits for the client application to acknowledge data receipt, often due to client-side processing bottlenecks or network issues. Optimization of client application performance and network infrastructure can reduce these waits.<\/li>\n<li><strong>RESOURCE_SEMAPHORE<\/strong>: Highlights queries waiting for memory grants, pointing to memory pressure issues. Mitigation strategies involve optimizing memory-intensive queries, evaluating server memory configuration, and managing memory distribution with Resource Governor.<\/li>\n<li><strong>SOS_SCHEDULER_YIELD<\/strong>: Indicates CPU pressure, where threads yield their execution slot on the CPU. Addressing involves optimizing CPU-heavy queries, considering hardware upgrades, and adjusting SQL Server configuration for optimal CPU usage.<\/li>\n<\/ul>\n<h3>Waits That Can Usually Be Safely Ignored<\/h3>\n<p>While many wait types signal areas for optimization, others are part of SQL Server&#8217;s normal operations and are less likely to indicate performance concerns:<\/p>\n<ul>\n<li><strong>SQLTRACE_INCREMENTAL_FLUSH_SLEEP<\/strong>: Occurs during routine SQL Server trace operations.<\/li>\n<li><strong>WAITFOR<\/strong>: Reflects intentional pauses in execution, used in scripts or stored procedures.<\/li>\n<li><strong>LAZYWRITER_SLEEP<\/strong>: Indicates the lazy writer process is idle, typically not a sign of immediate concern.<\/li>\n<\/ul>\n<h3>Diagnosing Wait Types<\/h3>\n<p>To effectively diagnose and address wait types, SQL Server offers Dynamic Management Views (DMVs), such as <code>sys.dm_os_wait_stats<\/code>, providing a comprehensive view of wait events. Utilizing these DMVs helps identify prevalent wait types affecting the system. Example queries include:<\/p>\n<p>Analyzing overall wait statistics:<\/p>\n<pre><code>SELECT \n    wait_type, \n    wait_time_ms \/ 1000.0 AS WaitS, \n    (wait_time_ms - signal_wait_time_ms) \/ 1000.0 AS ResourceS,\n    signal_wait_time_ms \/ 1000.0 AS SignalS, \n    waiting_tasks_count AS WaitCount, \n    100.0 * wait_time_ms \/ SUM(wait_time_ms) OVER() AS Percentage, \n    ROW_NUMBER() OVER(ORDER BY wait_time_ms DESC) AS RowNum\nFROM sys.dm_os_wait_stats\nWHERE wait_type NOT IN (\n    'CLR_SEMAPHORE', \n    'LAZYWRITER_SLEEP', \n    'RESOURCE_QUEUE', \n    'SLEEP_TASK',\n    'SLEEP_SYSTEMTASK', \n    'SQLTRACE_BUFFER_FLUSH', \n    'WAITFOR', \n    'LOGMGR_QUEUE',\n    'CHECKPOINT_QUEUE', \n    'REQUEST_FOR_DEADLOCK_SEARCH', \n    'XE_TIMER_EVENT', \n    'BROKER_TO_FLUSH',\n    'BROKER_TASK_STOP', \n    'CLR_MANUAL_EVENT', \n    'CLR_AUTO_EVENT', \n    'DISPATCHER_QUEUE_SEMAPHORE',\n    'FT_IFTS_SCHEDULER_IDLE_WAIT', \n    'XE_DISPATCHER_WAIT', \n    'XE_DISPATCHER_JOIN'\n)\nORDER BY WaitS DESC;\n<\/code><\/pre>\n<p>Utilizing these insights allows for targeted performance tuning, focusing on mitigating the most impactful wait types.<\/p>\n<h3>Conclusion<\/h3>\n<p>Effectively managing wait types in SQL Server is pivotal for optimizing database performance. By monitoring key wait types and understanding which can be ignored, database administrators can focus their efforts on meaningful optimizations. Leveraging SQL Server&#8217;s diagnostic tools to analyze wait types enables informed decisions, leading to improved query execution and enhanced database efficiency. Emphasizing proactive wait type analysis ensures databases remain responsive, reliable, and capable of handling the demands of modern enterprise applications.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In SQL Server, wait types are important indicators of where and why delays occur during query execution, directly impacting database performance. Properly understanding and diagnosing these wait types enable database administrators to pinpoint specific performance bottlenecks. This blog post aims to provide an overview of essential wait types that demand attention, distinguish common wait types that can usually be ignored, and offer strategies for effective diagnosis and interpretation to enhance overall database performance.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[12,6,5,91,13,18,73],"tags":[4,7,52,95],"class_list":["post-391","post","type-post","status-publish","format-standard","hentry","category-internals","category-memory","category-performance","category-query-optimization","category-storage-engine","category-transaction-logs","category-troubleshooting","tag-internals","tag-memory","tag-sql-server-performance","tag-wait-types"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.1.1 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Mastering SQL Server Performance: Diagnosing Wait Types<\/title>\n<meta name=\"description\" content=\"In SQL Server, wait types are important indicators of where and why delays occur during query execution, directly impacting database performance. Properly understanding and diagnosing these wait types enable database administrators to pinpoint specific performance bottlenecks. This blog post aims to provide an overview of essential wait types that demand attention, distinguish common wait types that can usually be ignored, and offer strategies for effective diagnosis and interpretation to enhance overall database performance.\" \/>\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.sqltabletalk.com\/?p=391\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Mastering SQL Server Performance: Diagnosing Wait Types\" \/>\n<meta property=\"og:description\" content=\"In SQL Server, wait types are important indicators of where and why delays occur during query execution, directly impacting database performance. Properly understanding and diagnosing these wait types enable database administrators to pinpoint specific performance bottlenecks. This blog post aims to provide an overview of essential wait types that demand attention, distinguish common wait types that can usually be ignored, and offer strategies for effective diagnosis and interpretation to enhance overall database performance.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.sqltabletalk.com\/?p=391\" \/>\n<meta property=\"og:site_name\" content=\"SQL Table Talk\" \/>\n<meta property=\"article:published_time\" content=\"2024-03-08T13:55:00+00:00\" \/>\n<meta name=\"author\" content=\"Stephen Planck\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Stephen Planck\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.sqltabletalk.com\/?p=391#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.sqltabletalk.com\/?p=391\"},\"author\":{\"name\":\"Stephen Planck\",\"@id\":\"https:\/\/www.sqltabletalk.com\/#\/schema\/person\/1947e42a9438bccd91691d8b791888e0\"},\"headline\":\"Understanding and Diagnosing SQL Server Wait Types\",\"datePublished\":\"2024-03-08T13:55:00+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.sqltabletalk.com\/?p=391\"},\"wordCount\":677,\"commentCount\":2,\"publisher\":{\"@id\":\"https:\/\/www.sqltabletalk.com\/#\/schema\/person\/1947e42a9438bccd91691d8b791888e0\"},\"keywords\":[\"Internals\",\"memory\",\"SQL Server performance\",\"Wait Types\"],\"articleSection\":[\"Internals\",\"Memory\",\"Performance\",\"Query Optimization\",\"Storage Engine\",\"Transaction Logs\",\"Troubleshooting\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.sqltabletalk.com\/?p=391#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.sqltabletalk.com\/?p=391\",\"url\":\"https:\/\/www.sqltabletalk.com\/?p=391\",\"name\":\"Mastering SQL Server Performance: Diagnosing Wait Types\",\"isPartOf\":{\"@id\":\"https:\/\/www.sqltabletalk.com\/#website\"},\"datePublished\":\"2024-03-08T13:55:00+00:00\",\"description\":\"In SQL Server, wait types are important indicators of where and why delays occur during query execution, directly impacting database performance. Properly understanding and diagnosing these wait types enable database administrators to pinpoint specific performance bottlenecks. This blog post aims to provide an overview of essential wait types that demand attention, distinguish common wait types that can usually be ignored, and offer strategies for effective diagnosis and interpretation to enhance overall database performance.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.sqltabletalk.com\/?p=391#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.sqltabletalk.com\/?p=391\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.sqltabletalk.com\/?p=391#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.sqltabletalk.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Understanding and Diagnosing SQL Server Wait Types\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.sqltabletalk.com\/#website\",\"url\":\"https:\/\/www.sqltabletalk.com\/\",\"name\":\"SQL Table Talk\",\"description\":\"Breaking Down SQL Server, One Post at a Time.\",\"publisher\":{\"@id\":\"https:\/\/www.sqltabletalk.com\/#\/schema\/person\/1947e42a9438bccd91691d8b791888e0\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.sqltabletalk.com\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/www.sqltabletalk.com\/#\/schema\/person\/1947e42a9438bccd91691d8b791888e0\",\"name\":\"Stephen Planck\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.sqltabletalk.com\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/64181114edc3de3d99072c049bcec024f025c9536dc89fc8ff1bac58976ca81e?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/64181114edc3de3d99072c049bcec024f025c9536dc89fc8ff1bac58976ca81e?s=96&d=mm&r=g\",\"caption\":\"Stephen Planck\"},\"logo\":{\"@id\":\"https:\/\/www.sqltabletalk.com\/#\/schema\/person\/image\/\"},\"sameAs\":[\"https:\/\/dexterwiki.com\",\"https:\/\/www.linkedin.com\/in\/stephen-planck-4611b692?trk=people-guest_people_search-card&challengeId=AQErf8gbBmcVMwAAAYsyIsxO-0UvU8z7cHrBpZoo_n3xt9qEKpRN5B_jd_LmAMu-OfeArkQ7GDjobJ2uRoQQV35EQdh_rR6kxA&submissionId=09de7067-c335-8e17-40b8-8dc32b60ed6c&challengeSource=AgEcUCw35zpPmAAAAYsyI4vAWhJTV7Nt4vZYKc3V1qiDBpCkKgUvtlOBgYXcE84&challegeType=AgE_wZiTT09IAQAAAYsyI4vDmNvbZIYe6XHju5V2bXVvM3IVxnJslgY&memberId=AgESFTkUShzs_gAAAYsyI4vGYk0Gic1uc5kB6cKOABA26Gw&recognizeDevice=AgHdSZyUSI5CEwAAAYsyI4vKd_koF9JgpsCJShT8QfbK1QMiv8SI\",\"https:\/\/www.youtube.com\/linuxmate\"],\"url\":\"https:\/\/www.sqltabletalk.com\/?author=1\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Mastering SQL Server Performance: Diagnosing Wait Types","description":"In SQL Server, wait types are important indicators of where and why delays occur during query execution, directly impacting database performance. Properly understanding and diagnosing these wait types enable database administrators to pinpoint specific performance bottlenecks. This blog post aims to provide an overview of essential wait types that demand attention, distinguish common wait types that can usually be ignored, and offer strategies for effective diagnosis and interpretation to enhance overall database performance.","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.sqltabletalk.com\/?p=391","og_locale":"en_US","og_type":"article","og_title":"Mastering SQL Server Performance: Diagnosing Wait Types","og_description":"In SQL Server, wait types are important indicators of where and why delays occur during query execution, directly impacting database performance. Properly understanding and diagnosing these wait types enable database administrators to pinpoint specific performance bottlenecks. This blog post aims to provide an overview of essential wait types that demand attention, distinguish common wait types that can usually be ignored, and offer strategies for effective diagnosis and interpretation to enhance overall database performance.","og_url":"https:\/\/www.sqltabletalk.com\/?p=391","og_site_name":"SQL Table Talk","article_published_time":"2024-03-08T13:55:00+00:00","author":"Stephen Planck","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Stephen Planck","Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.sqltabletalk.com\/?p=391#article","isPartOf":{"@id":"https:\/\/www.sqltabletalk.com\/?p=391"},"author":{"name":"Stephen Planck","@id":"https:\/\/www.sqltabletalk.com\/#\/schema\/person\/1947e42a9438bccd91691d8b791888e0"},"headline":"Understanding and Diagnosing SQL Server Wait Types","datePublished":"2024-03-08T13:55:00+00:00","mainEntityOfPage":{"@id":"https:\/\/www.sqltabletalk.com\/?p=391"},"wordCount":677,"commentCount":2,"publisher":{"@id":"https:\/\/www.sqltabletalk.com\/#\/schema\/person\/1947e42a9438bccd91691d8b791888e0"},"keywords":["Internals","memory","SQL Server performance","Wait Types"],"articleSection":["Internals","Memory","Performance","Query Optimization","Storage Engine","Transaction Logs","Troubleshooting"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.sqltabletalk.com\/?p=391#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.sqltabletalk.com\/?p=391","url":"https:\/\/www.sqltabletalk.com\/?p=391","name":"Mastering SQL Server Performance: Diagnosing Wait Types","isPartOf":{"@id":"https:\/\/www.sqltabletalk.com\/#website"},"datePublished":"2024-03-08T13:55:00+00:00","description":"In SQL Server, wait types are important indicators of where and why delays occur during query execution, directly impacting database performance. Properly understanding and diagnosing these wait types enable database administrators to pinpoint specific performance bottlenecks. This blog post aims to provide an overview of essential wait types that demand attention, distinguish common wait types that can usually be ignored, and offer strategies for effective diagnosis and interpretation to enhance overall database performance.","breadcrumb":{"@id":"https:\/\/www.sqltabletalk.com\/?p=391#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.sqltabletalk.com\/?p=391"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.sqltabletalk.com\/?p=391#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.sqltabletalk.com\/"},{"@type":"ListItem","position":2,"name":"Understanding and Diagnosing SQL Server Wait Types"}]},{"@type":"WebSite","@id":"https:\/\/www.sqltabletalk.com\/#website","url":"https:\/\/www.sqltabletalk.com\/","name":"SQL Table Talk","description":"Breaking Down SQL Server, One Post at a Time.","publisher":{"@id":"https:\/\/www.sqltabletalk.com\/#\/schema\/person\/1947e42a9438bccd91691d8b791888e0"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.sqltabletalk.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/www.sqltabletalk.com\/#\/schema\/person\/1947e42a9438bccd91691d8b791888e0","name":"Stephen Planck","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.sqltabletalk.com\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/64181114edc3de3d99072c049bcec024f025c9536dc89fc8ff1bac58976ca81e?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/64181114edc3de3d99072c049bcec024f025c9536dc89fc8ff1bac58976ca81e?s=96&d=mm&r=g","caption":"Stephen Planck"},"logo":{"@id":"https:\/\/www.sqltabletalk.com\/#\/schema\/person\/image\/"},"sameAs":["https:\/\/dexterwiki.com","https:\/\/www.linkedin.com\/in\/stephen-planck-4611b692?trk=people-guest_people_search-card&challengeId=AQErf8gbBmcVMwAAAYsyIsxO-0UvU8z7cHrBpZoo_n3xt9qEKpRN5B_jd_LmAMu-OfeArkQ7GDjobJ2uRoQQV35EQdh_rR6kxA&submissionId=09de7067-c335-8e17-40b8-8dc32b60ed6c&challengeSource=AgEcUCw35zpPmAAAAYsyI4vAWhJTV7Nt4vZYKc3V1qiDBpCkKgUvtlOBgYXcE84&challegeType=AgE_wZiTT09IAQAAAYsyI4vDmNvbZIYe6XHju5V2bXVvM3IVxnJslgY&memberId=AgESFTkUShzs_gAAAYsyI4vGYk0Gic1uc5kB6cKOABA26Gw&recognizeDevice=AgHdSZyUSI5CEwAAAYsyI4vKd_koF9JgpsCJShT8QfbK1QMiv8SI","https:\/\/www.youtube.com\/linuxmate"],"url":"https:\/\/www.sqltabletalk.com\/?author=1"}]}},"jetpack_featured_media_url":"","jetpack-related-posts":[],"jetpack_sharing_enabled":true,"jetpack_likes_enabled":true,"_links":{"self":[{"href":"https:\/\/www.sqltabletalk.com\/index.php?rest_route=\/wp\/v2\/posts\/391","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.sqltabletalk.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.sqltabletalk.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.sqltabletalk.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.sqltabletalk.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=391"}],"version-history":[{"count":3,"href":"https:\/\/www.sqltabletalk.com\/index.php?rest_route=\/wp\/v2\/posts\/391\/revisions"}],"predecessor-version":[{"id":400,"href":"https:\/\/www.sqltabletalk.com\/index.php?rest_route=\/wp\/v2\/posts\/391\/revisions\/400"}],"wp:attachment":[{"href":"https:\/\/www.sqltabletalk.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=391"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.sqltabletalk.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=391"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.sqltabletalk.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=391"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}