{"id":23,"date":"2023-10-06T04:59:06","date_gmt":"2023-10-06T04:59:06","guid":{"rendered":"https:\/\/www.sqltabletalk.com\/?p=23"},"modified":"2023-10-14T04:44:47","modified_gmt":"2023-10-14T04:44:47","slug":"optimizing-sql-server-performance-a-look-at-the-buffer-cache-and-page-life-expectancy","status":"publish","type":"post","link":"https:\/\/www.sqltabletalk.com\/?p=23","title":{"rendered":"Optimizing SQL Server Performance: A Look at the Buffer Cache and Page Life Expectancy"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">Introduction<\/h2>\n\n\n\n<p>SQL Server Buffer Cache is pivotal in enhancing SQL Server performance by minimizing the reliance on physical I\/O operations. This article looks at the significance and the role of SQL Server Buffer Cache, its implications in high volume scenarios, and provides insights on its management, with an emphasis on the impacts of low Page Life Expectancy (PLE) in large transactional environments.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Internal Mechanics of Buffer Cache in SQL Server and SQLOS<\/h2>\n\n\n\n<p>SQL Server&#8217;s Buffer Cache is not just a passive storage of pages in memory; its implementation and management are intricately designed to optimize performance. Here\u2019s an insight into its inner workings:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Buffer Pool Architecture:<\/strong> The Buffer Cache, primarily managed by SQLOS (SQL Server Operating System), is a part of the larger Buffer Pool. This Buffer Pool is partitioned into multiple smaller caches to optimize memory access in multi-core systems, ensuring each CPU core can quickly access its local cache.<\/li>\n\n\n\n<li><strong>Page Retrieval:<\/strong> When a query requests a data page, SQL Server first checks the Buffer Cache. If the page is present (a cache hit), it&#8217;s retrieved from memory, speeding up the process significantly. If not present (a cache miss), the required page is read from the disk into the Buffer Cache.<\/li>\n\n\n\n<li><strong>LRU-K Algorithm:<\/strong> SQL Server uses an approximation of the LRU-K (Least Recently Used-K) algorithm to manage pages in the Buffer Cache. This algorithm keeps track of pages accessed multiple times within a certain timeframe. This predictive method allows SQL Server to anticipate future page requests, thus optimizing the pages it keeps in the Buffer Cache.<\/li>\n\n\n\n<li><strong>Lazy Writer and Checkpoint:<\/strong> Two significant processes manage memory pressure:\n<ul class=\"wp-block-list\">\n<li>Lazy Writer: Periodically reviews the Buffer Cache and writes dirty pages (pages with changes not yet written to disk) back to the storage subsystem and frees up space in the cache.<\/li>\n\n\n\n<li>Checkpoint: Operates at more predictable intervals to ensure that all dirty pages are written to disk. This process ensures data integrity and aids in reducing recovery times.<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>SQLOS and Memory Management:<\/strong> SQLOS sits beneath SQL Server, providing various OS-level services, including memory management. SQLOS\u2019s memory manager coordinates with the Buffer Pool, ensuring memory is allocated and deallocated as needed. When SQL Server needs more memory, SQLOS negotiates with the Windows OS to obtain it. If the system overall is under memory pressure, SQLOS may release memory back to Windows.<\/li>\n<\/ul>\n\n\n\n<p>Understanding these internal operations and the coordination between SQL Server and SQLOS is essential to get a comprehensive picture of how Buffer Cache contributes to the efficiency and speed of the SQL Server.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Importance of Buffer Cache<\/h2>\n\n\n\n<p>SQL Server Buffer Cache is a key component in the system\u2019s main memory (RAM) that holds data pages read from the disk. This temporary storage allows SQL Server to quickly retrieve the data, reducing the need for repeated disk reads, making it essential in high volume scenarios. Buffer Cache is vital for optimizing database performance and resource efficiency. By diminishing the dependency on slower disk I\/O operations, Buffer Cache accelerates data retrieval, enhancing overall system response and query performance in high-transaction environments.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Buffer Cache in High Volume SQL Instances<\/h2>\n\n\n\n<p>When Buffer Cache is full in high volume SQL instances, SQL Server deploys the Lazy Writer to free space by writing modified pages back to disk and removing unmodified ones from the cache. However, this can lead to performance degradation due to increased I\/O operations and CPU usage under severe cache pressure.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Page Life Expectancy (PLE) and Large Transactional Environments<\/h2>\n\n\n\n<p>PLE is a crucial metric representing the average duration (in seconds) a data page is expected to remain in the Buffer Cache. In large transactional environments, especially those with substantial memory allocations like 1TB of RAM, maintaining a healthy PLE is pivotal.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Implications of Low PLE<\/h2>\n\n\n\n<p>A constantly low PLE, particularly below 300 seconds, is typically abnormal in systems with extensive RAM, like 1TB, and can signify substantial stress on the Buffer Cache. This stress, often resulting from inefficient queries or inadequate memory, necessitates frequent data page evictions from the cache, elevating disk I\/O and potentially causing notable slowdowns and reduced overall performance in large transactional systems.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Viewing and Managing Buffer Cache<\/h2>\n\n\n\n<p>SQL Server\u2019s Dynamic Management Views (DMVs) are instrumental in examining Buffer Cache:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\nSELECT * FROM sys.dm_os_buffer_descriptors;\n<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>\nSELECT COUNT(*) * 8 \/ 1024 as 'Buffer Cache Size (MB)' FROM sys.dm_os_buffer_descriptors;\n<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>\nSELECT &#91;object_name], &#91;counter_name], &#91;cntr_value] FROM sys.dm_os_performance_counters WHERE &#91;object_name] LIKE '%Buffer Manager%' AND &#91;counter_name] IN ('Buffer cache hit ratio', 'Page life expectancy');\n<\/code><\/pre>\n\n\n\n<p>To circumvent the repercussions of low PLE values in extensive transactional environments, it\u2019s imperative to routinely monitor Buffer Cache, fine-tune configurations, optimize queries, and ensure SQL Server instances are endowed with sufficient memory.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Monitoring SQL Server Memory Usage and PLE<\/h2>\n\n\n\n<p>Keeping tabs on SQL Server\u2019s memory consumption and the Page Life Expectancy (PLE) can offer insights into its performance and efficiency. Using SQL Server\u2019s Dynamic Management Views (DMVs), you can fetch this information with ease.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\nSELECT (physical_memory_in_use_kb\/1024) AS 'SQL Server Memory Usage (MB)', (SELECT cntr_value FROM sys.dm_os_performance_counters WHERE object_name = 'SQLServer:Buffer Manager' AND counter_name = 'Page life expectancy') AS 'Page Life Expectancy' FROM sys.dm_os_process_memory;\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Conclusion<\/h2>\n\n\n\n<p>Understanding and effectively managing SQL Server Buffer Cache is fundamental for optimizing performance in high-transaction environments. Regular monitoring, efficient configurations, and apt memory allocations are crucial in ensuring seamless operations, especially in instances with massive transaction volumes.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>SQL Server Buffer Cache is pivotal in enhancing SQL Server performance by minimizing the reliance on physical I\/O operations. This article looks at the significance and the role of SQL Server Buffer Cache, its implications in high volume scenarios, and provides insights on its management, with an emphasis on the impacts of low Page Life Expectancy (PLE) in large transactional environments.<\/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":[6,5],"tags":[9,10,7,11],"class_list":["post-23","post","type-post","status-publish","format-standard","hentry","category-memory","category-performance","tag-buffer","tag-cache","tag-memory","tag-ple"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.1.1 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Optimizing SQL Server Performance: A Look at the Buffer Cache and Page Life Expectancy - SQL Table Talk<\/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.sqltabletalk.com\/?p=23\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Optimizing SQL Server Performance: A Look at the Buffer Cache and Page Life Expectancy - SQL Table Talk\" \/>\n<meta property=\"og:description\" content=\"SQL Server Buffer Cache is pivotal in enhancing SQL Server performance by minimizing the reliance on physical I\/O operations. This article looks at the significance and the role of SQL Server Buffer Cache, its implications in high volume scenarios, and provides insights on its management, with an emphasis on the impacts of low Page Life Expectancy (PLE) in large transactional environments.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.sqltabletalk.com\/?p=23\" \/>\n<meta property=\"og:site_name\" content=\"SQL Table Talk\" \/>\n<meta property=\"article:published_time\" content=\"2023-10-06T04:59:06+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-10-14T04:44:47+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=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.sqltabletalk.com\/?p=23#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.sqltabletalk.com\/?p=23\"},\"author\":{\"name\":\"Stephen Planck\",\"@id\":\"https:\/\/www.sqltabletalk.com\/#\/schema\/person\/1947e42a9438bccd91691d8b791888e0\"},\"headline\":\"Optimizing SQL Server Performance: A Look at the Buffer Cache and Page Life Expectancy\",\"datePublished\":\"2023-10-06T04:59:06+00:00\",\"dateModified\":\"2023-10-14T04:44:47+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.sqltabletalk.com\/?p=23\"},\"wordCount\":834,\"commentCount\":4,\"publisher\":{\"@id\":\"https:\/\/www.sqltabletalk.com\/#\/schema\/person\/1947e42a9438bccd91691d8b791888e0\"},\"keywords\":[\"Buffer\",\"cache\",\"memory\",\"ple\"],\"articleSection\":[\"Memory\",\"Performance\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.sqltabletalk.com\/?p=23#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.sqltabletalk.com\/?p=23\",\"url\":\"https:\/\/www.sqltabletalk.com\/?p=23\",\"name\":\"Optimizing SQL Server Performance: A Look at the Buffer Cache and Page Life Expectancy - SQL Table Talk\",\"isPartOf\":{\"@id\":\"https:\/\/www.sqltabletalk.com\/#website\"},\"datePublished\":\"2023-10-06T04:59:06+00:00\",\"dateModified\":\"2023-10-14T04:44:47+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.sqltabletalk.com\/?p=23#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.sqltabletalk.com\/?p=23\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.sqltabletalk.com\/?p=23#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.sqltabletalk.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Optimizing SQL Server Performance: A Look at the Buffer Cache and Page Life Expectancy\"}]},{\"@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":"Optimizing SQL Server Performance: A Look at the Buffer Cache and Page Life Expectancy - SQL Table Talk","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=23","og_locale":"en_US","og_type":"article","og_title":"Optimizing SQL Server Performance: A Look at the Buffer Cache and Page Life Expectancy - SQL Table Talk","og_description":"SQL Server Buffer Cache is pivotal in enhancing SQL Server performance by minimizing the reliance on physical I\/O operations. This article looks at the significance and the role of SQL Server Buffer Cache, its implications in high volume scenarios, and provides insights on its management, with an emphasis on the impacts of low Page Life Expectancy (PLE) in large transactional environments.","og_url":"https:\/\/www.sqltabletalk.com\/?p=23","og_site_name":"SQL Table Talk","article_published_time":"2023-10-06T04:59:06+00:00","article_modified_time":"2023-10-14T04:44:47+00:00","author":"Stephen Planck","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Stephen Planck","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.sqltabletalk.com\/?p=23#article","isPartOf":{"@id":"https:\/\/www.sqltabletalk.com\/?p=23"},"author":{"name":"Stephen Planck","@id":"https:\/\/www.sqltabletalk.com\/#\/schema\/person\/1947e42a9438bccd91691d8b791888e0"},"headline":"Optimizing SQL Server Performance: A Look at the Buffer Cache and Page Life Expectancy","datePublished":"2023-10-06T04:59:06+00:00","dateModified":"2023-10-14T04:44:47+00:00","mainEntityOfPage":{"@id":"https:\/\/www.sqltabletalk.com\/?p=23"},"wordCount":834,"commentCount":4,"publisher":{"@id":"https:\/\/www.sqltabletalk.com\/#\/schema\/person\/1947e42a9438bccd91691d8b791888e0"},"keywords":["Buffer","cache","memory","ple"],"articleSection":["Memory","Performance"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.sqltabletalk.com\/?p=23#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.sqltabletalk.com\/?p=23","url":"https:\/\/www.sqltabletalk.com\/?p=23","name":"Optimizing SQL Server Performance: A Look at the Buffer Cache and Page Life Expectancy - SQL Table Talk","isPartOf":{"@id":"https:\/\/www.sqltabletalk.com\/#website"},"datePublished":"2023-10-06T04:59:06+00:00","dateModified":"2023-10-14T04:44:47+00:00","breadcrumb":{"@id":"https:\/\/www.sqltabletalk.com\/?p=23#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.sqltabletalk.com\/?p=23"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.sqltabletalk.com\/?p=23#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.sqltabletalk.com\/"},{"@type":"ListItem","position":2,"name":"Optimizing SQL Server Performance: A Look at the Buffer Cache and Page Life Expectancy"}]},{"@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\/23","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=23"}],"version-history":[{"count":3,"href":"https:\/\/www.sqltabletalk.com\/index.php?rest_route=\/wp\/v2\/posts\/23\/revisions"}],"predecessor-version":[{"id":46,"href":"https:\/\/www.sqltabletalk.com\/index.php?rest_route=\/wp\/v2\/posts\/23\/revisions\/46"}],"wp:attachment":[{"href":"https:\/\/www.sqltabletalk.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=23"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.sqltabletalk.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=23"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.sqltabletalk.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=23"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}