{"id":37010,"date":"2020-01-30T11:18:00","date_gmt":"2020-01-30T18:18:00","guid":{"rendered":"https:\/\/virtual-dba.com\/?p=37010"},"modified":"2026-01-12T14:31:32","modified_gmt":"2026-01-12T21:31:32","slug":"postgresql-performance-identifying-hot-and-slow-queries","status":"publish","type":"post","link":"https:\/\/virtual-dba.com\/blog\/postgresql-performance-identifying-hot-and-slow-queries\/","title":{"rendered":"PostgreSQL Performance Identifying Hot and Slow Queries"},"content":{"rendered":"\n<div class=\"wp-block-yoast-seo-table-of-contents yoast-table-of-contents\"><h2>Table of contents<\/h2><ul><li><a href=\"#h-slow-queries\" data-level=\"2\">Slow Queries<\/a><ul><li><a href=\"#h-multi-tenant-queries\" data-level=\"3\">Multi-Tenant Queries<\/a><\/li><\/ul><\/li><li><a href=\"#h-hot-queries\" data-level=\"2\">Hot Queries<\/a><\/li><\/ul><\/div>\n\n\n\n<p>Using pg_stat_statements, we&#8217;ll look at several ways to identify queries with slow response times and those that are heavily used. If you&#8217;re not familiar with how to enable pg_stat_statements, please see my other <a href=\"https:\/\/virtual-dba.com\/postgresql-performance-enabling-pg-stat-statements\/\">blog<\/a>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-slow-queries\">Slow Queries<\/h2>\n\n\n\n<p>In the pg_stat_statements table, there are several columns, which I will focus on. These metrics will help you identify which queries have a high response time. These metrics are based on when the pg_stat_statements table was last reset, if you&#8217;re postgresql.conf has &#8220;pg_stat_statements.save&#8221; set to off, your table will reset every time you restart the server.<\/p>\n\n\n\n<p><strong>Columns:<\/strong><\/p>\n\n\n\n<p><strong>calls &#8211;<\/strong> The total number of times the query has been executed since pg_stat_statements was reset.<br><strong>total_time &#8211;<\/strong> The total combined execution time for all calls<br><strong>query &#8211;<\/strong> The query text that was executed<\/p>\n\n\n\n<p>Let&#8217;s execute an aggregate query to find out which queries are responding the slowest. To do this, we want to divide the <strong>total_time<\/strong> by the total number of <strong>calls. <\/strong>This will give us the average response time of each query in milliseconds.<\/p>\n\n\n<pre><code>select query, calls, (total_time\/calls)::integer as avg_time_ms \nfrom pg_stat_statements\nwhere calls &gt; 1000\norder by avg_time_ms desc\nlimit 100;<\/code><\/pre>\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"318\" height=\"219\" src=\"https:\/\/virtual-dba.com\/wp-content\/uploads\/avg_time_ms.png\" alt=\"avg_time_ms\" class=\"wp-image-37016\"\/><\/figure>\n\n\n\n<p>The predicate &#8220;where calls &gt; 1000&#8221; is used to isolate only queries that are used most often, this will ignore ad hoc queries and focus on those that are used regularly in your application. From this list, you can decide which of these are not meeting response time thresholds.<\/p>\n\n\n\n<p>One other predicate I like to add to this query:<\/p>\n\n\n<pre><code>select query, calls, (total_time\/calls)::integer as avg_time_ms \nfrom pg_stat_statements\nwhere calls &gt; 1000\nand rows &lt; 5000\norder by avg_time_ms desc\nlimit 100;<\/code><\/pre>\n\n\n<p>I add the <strong>&#8220;and rows &lt; 5000<\/strong>&#8221; predicate to determine which queries are taking a long response time and returning small amounts of data. I understand this can sometimes lead to false positives depending on the complexity of the query, but it&#8217;s another tool to use in your investigation.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-multi-tenant-queries\">Multi-Tenant Queries<\/h3>\n\n\n\n<p>If you&#8217;re hosting a multi-tenant application\/database, then you&#8217;ll quickly find out that you&#8217;ll have duplicate entries in your pg_stat_statements table. There currently isn&#8217;t a way to know which schema the query is coming from, but you can group these queries to get an idea of which ones are being troublesome across each tenant.<\/p>\n\n\n\n<p>Using a CTE<\/p>\n\n\n<pre><code>with timeperquery as \n(\nselect query, (calls\/total_time) as ms_per_call\nfrom pg_stat_statements\nwhere rows != 0\n)\nselect query, sum(ms_per_call)::integer as ms_per_query \nfrom timeperquery\ngroup by query\norder by ms_per_query desc<\/code><\/pre>\n\n\n<p>This will give you the queries with the highest response times across all tenants.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"250\" height=\"219\" src=\"https:\/\/virtual-dba.com\/wp-content\/uploads\/ms_per_query.png\" alt=\"ms_per_query\" class=\"wp-image-37017\"\/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-hot-queries\">Hot Queries<\/h2>\n\n\n\n<p>Hot queries need to be identified, so you&#8217;re familiar with the most active areas of your database. Once you identify these hot spots, you can determine what the impact will be if something were to go wrong or ways that you can improve the most used portions.<\/p>\n\n\n\n<p>If you have a query that is executed 1000 times in 650ms per call and you&#8217;re able to optimize that query down to 300ms per call, you&#8217;re saving 350 seconds of execution time. If there is another query that runs 100,000 times in 100ms, but you can optimize it to 80ms, you&#8217;re saving 2,000 seconds of execution time. It&#8217;s not always the largest response time that is going to have the most effect from a utilization perspective.<\/p>\n\n\n\n<p>Of course, optimization is usually driven by end-user expectations, but it&#8217;s a valid concern either way.<\/p>\n\n\n<pre><code>select \n\tquery, \n\tcalls,\n\ttotal_time::integer, \n\t(calls\/total_time)::integer as ms_per_call, \n\tshared_blks_hit, \n\tshared_blks_read \nfrom pg_stat_statements pss\norder by calls desc\nlimit 10;<\/code><\/pre>\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"728\" height=\"276\" src=\"https:\/\/virtual-dba.com\/wp-content\/uploads\/pg_stat_statements-1.png\" alt=\"pg_stat_statements\" class=\"wp-image-37018\"\/><\/figure>\n\n\n\n<p>This top 10 list shows us the hottest queries being executed the most times against the database. We can divulge from this list that there are several hot queries that have less than desirable response times for the amount of times they&#8217;re executed. The shared_blks_hit compared to shared_blks_read tells us that data is being properly pulled from the cache.<\/p>\n\n\n\n<p>There are many ways to use this information to determine how your database is running. It will also give you information pertaining to what you can troubleshoot if your queries are slow.<\/p>\n\n\n\n<p>Please utilize my other blogs to help you with your PostgreSQL performance issues.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Using pg_stat_statements, we&#8217;ll look at several ways to identify queries with slow response times and those that are heavily used. If you&#8217;re not familiar with how to enable pg_stat_statements, please see my other blog. Slow Queries In the pg_stat_statements table, there are several columns, which I will focus on. These metrics will help you identify [&hellip;]<\/p>\n","protected":false},"author":3,"featured_media":37013,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_et_pb_use_builder":"off","_et_pb_old_content":"","_et_gb_content_width":"","content-type":"","footnotes":""},"categories":[4166,2163],"tags":[4034,4139],"class_list":["post-37010","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-blog","category-postgresql","tag-hot-queries","tag-postgresql-performance-tuning"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.1 (Yoast SEO v27.1.1) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>PostgreSQL Performance Identifying Hot and Slow Queries<\/title>\n<meta name=\"description\" content=\"This article assists with how to identify slow queries using pg_stat_statements for your PostgreSQL Performance needs.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/virtual-dba.com\/blog\/postgresql-performance-identifying-hot-and-slow-queries\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"PostgreSQL Performance Identifying Hot and Slow Queries\" \/>\n<meta property=\"og:description\" content=\"This article assists with how to identify slow queries using pg_stat_statements for your PostgreSQL Performance needs.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/virtual-dba.com\/blog\/postgresql-performance-identifying-hot-and-slow-queries\/\" \/>\n<meta property=\"og:site_name\" content=\"Virtual-DBA Remote DBA Services &amp; Support - Certified Database Experts\" \/>\n<meta property=\"article:published_time\" content=\"2020-01-30T18:18:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-01-12T21:31:32+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/virtual-dba.com\/wp-content\/uploads\/PostgreSQL-Performance-Identifying-Hot-and-Slow-Queries.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"557\" \/>\n\t<meta property=\"og:image:height\" content=\"291\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"XTIVIA\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@virtual_dba\" \/>\n<meta name=\"twitter:site\" content=\"@virtual_dba\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"XTIVIA\" \/>\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:\/\/virtual-dba.com\/blog\/postgresql-performance-identifying-hot-and-slow-queries\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/virtual-dba.com\/blog\/postgresql-performance-identifying-hot-and-slow-queries\/\"},\"author\":{\"name\":\"XTIVIA\",\"@id\":\"https:\/\/virtual-dba.com\/#\/schema\/person\/2d86f74bed0c3f1b49100f7fdf7d78d1\"},\"headline\":\"PostgreSQL Performance Identifying Hot and Slow Queries\",\"datePublished\":\"2020-01-30T18:18:00+00:00\",\"dateModified\":\"2026-01-12T21:31:32+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/virtual-dba.com\/blog\/postgresql-performance-identifying-hot-and-slow-queries\/\"},\"wordCount\":643,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/virtual-dba.com\/#organization\"},\"image\":{\"@id\":\"https:\/\/virtual-dba.com\/blog\/postgresql-performance-identifying-hot-and-slow-queries\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/virtual-dba.com\/wp-content\/uploads\/PostgreSQL-Performance-Identifying-Hot-and-Slow-Queries.jpg\",\"keywords\":[\"hot queries\",\"PostgreSQL Performance tuning\"],\"articleSection\":[\"Blog\",\"PostgreSQL\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/virtual-dba.com\/blog\/postgresql-performance-identifying-hot-and-slow-queries\/#respond\"]}],\"accessibilityFeature\":[\"tableOfContents\"]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/virtual-dba.com\/blog\/postgresql-performance-identifying-hot-and-slow-queries\/\",\"url\":\"https:\/\/virtual-dba.com\/blog\/postgresql-performance-identifying-hot-and-slow-queries\/\",\"name\":\"PostgreSQL Performance Identifying Hot and Slow Queries\",\"isPartOf\":{\"@id\":\"https:\/\/virtual-dba.com\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/virtual-dba.com\/blog\/postgresql-performance-identifying-hot-and-slow-queries\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/virtual-dba.com\/blog\/postgresql-performance-identifying-hot-and-slow-queries\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/virtual-dba.com\/wp-content\/uploads\/PostgreSQL-Performance-Identifying-Hot-and-Slow-Queries.jpg\",\"datePublished\":\"2020-01-30T18:18:00+00:00\",\"dateModified\":\"2026-01-12T21:31:32+00:00\",\"description\":\"This article assists with how to identify slow queries using pg_stat_statements for your PostgreSQL Performance needs.\",\"breadcrumb\":{\"@id\":\"https:\/\/virtual-dba.com\/blog\/postgresql-performance-identifying-hot-and-slow-queries\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/virtual-dba.com\/blog\/postgresql-performance-identifying-hot-and-slow-queries\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/virtual-dba.com\/blog\/postgresql-performance-identifying-hot-and-slow-queries\/#primaryimage\",\"url\":\"https:\/\/virtual-dba.com\/wp-content\/uploads\/PostgreSQL-Performance-Identifying-Hot-and-Slow-Queries.jpg\",\"contentUrl\":\"https:\/\/virtual-dba.com\/wp-content\/uploads\/PostgreSQL-Performance-Identifying-Hot-and-Slow-Queries.jpg\",\"width\":557,\"height\":291},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/virtual-dba.com\/blog\/postgresql-performance-identifying-hot-and-slow-queries\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/virtual-dba.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"PostgreSQL Performance Identifying Hot and Slow Queries\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/virtual-dba.com\/#website\",\"url\":\"https:\/\/virtual-dba.com\/\",\"name\":\"Virtual-DBA Remote DBA Services &amp; Support - Certified Database Experts\",\"description\":\"Remote Database Administration\",\"publisher\":{\"@id\":\"https:\/\/virtual-dba.com\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/virtual-dba.com\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/virtual-dba.com\/#organization\",\"name\":\"Virtual-DBA: Remote DBA | Remote Database Administration\",\"alternateName\":\"Virtual-DBA powered by XTIVIA\",\"url\":\"https:\/\/virtual-dba.com\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/virtual-dba.com\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/virtual-dba.com\/wp-content\/uploads\/V-DBA-Database-Services-and-Support-Featured-Logo.jpg\",\"contentUrl\":\"https:\/\/virtual-dba.com\/wp-content\/uploads\/V-DBA-Database-Services-and-Support-Featured-Logo.jpg\",\"width\":557,\"height\":291,\"caption\":\"Virtual-DBA: Remote DBA | Remote Database Administration\"},\"image\":{\"@id\":\"https:\/\/virtual-dba.com\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/x.com\/virtual_dba\",\"https:\/\/www.linkedin.com\/showcase\/36220649\/\",\"https:\/\/www.youtube.com\/channel\/UCx3AIeUQ2ziTLKZSJDZ-SEg\"],\"description\":\"Eliminate database downtime and spiraling costs with XTIVIA\u2019s Virtual-DBA. In today\u2019s always-on business world, gaps in 24x7 on-call DBA support, neglected maintenance and security, or a stretched team struggling with overwhelming workloads can lead to costly disruptions and threaten business continuity. XTIVIA\u2019s Virtual-DBA provides the immediate, expert database administration you need, exactly when you need it, ensuring optimal performance, ironclad security, and significant cost savings without the burden of expanding your in-house team. The goal of Virtual-DBA is to provide a cost-effective solution for organizations seeking to optimize the security, management, maintenance, availability, and performance of their critical business systems, whether self-managed or cloud-managed (e.g., AWS RDS, Azure SQL Database). We accomplish this through a comprehensive remote DBA service offering designed specifically to meet the Oracle\u00ae, DB2\u00ae, Informix\u00ae, MySQL\u2122, PostgreSQL\u00ae, MongoDB\u00ae, MariaDB, and Microsoft SQL Server\u00ae, CockroachDB, Databricks, AWS, and Azure needs of our clients.\",\"email\":\"info@xtivia.com\",\"telephone\":\"8886853101\",\"legalName\":\"XTIVIA, Inc\",\"foundingDate\":\"1992-05-01\",\"numberOfEmployees\":{\"@type\":\"QuantitativeValue\",\"minValue\":\"201\",\"maxValue\":\"500\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/virtual-dba.com\/#\/schema\/person\/2d86f74bed0c3f1b49100f7fdf7d78d1\",\"name\":\"XTIVIA\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/virtual-dba.com\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/0d3648a00e319a37cf8d6d19f762acfbbb4fd0320fd8a6d6b1e64f44a2a6f259?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/0d3648a00e319a37cf8d6d19f762acfbbb4fd0320fd8a6d6b1e64f44a2a6f259?s=96&d=mm&r=g\",\"caption\":\"XTIVIA\"},\"url\":\"https:\/\/virtual-dba.com\/author\/xtivia\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"PostgreSQL Performance Identifying Hot and Slow Queries","description":"This article assists with how to identify slow queries using pg_stat_statements for your PostgreSQL Performance needs.","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:\/\/virtual-dba.com\/blog\/postgresql-performance-identifying-hot-and-slow-queries\/","og_locale":"en_US","og_type":"article","og_title":"PostgreSQL Performance Identifying Hot and Slow Queries","og_description":"This article assists with how to identify slow queries using pg_stat_statements for your PostgreSQL Performance needs.","og_url":"https:\/\/virtual-dba.com\/blog\/postgresql-performance-identifying-hot-and-slow-queries\/","og_site_name":"Virtual-DBA Remote DBA Services &amp; Support - Certified Database Experts","article_published_time":"2020-01-30T18:18:00+00:00","article_modified_time":"2026-01-12T21:31:32+00:00","og_image":[{"width":557,"height":291,"url":"https:\/\/virtual-dba.com\/wp-content\/uploads\/PostgreSQL-Performance-Identifying-Hot-and-Slow-Queries.jpg","type":"image\/jpeg"}],"author":"XTIVIA","twitter_card":"summary_large_image","twitter_creator":"@virtual_dba","twitter_site":"@virtual_dba","twitter_misc":{"Written by":"XTIVIA","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/virtual-dba.com\/blog\/postgresql-performance-identifying-hot-and-slow-queries\/#article","isPartOf":{"@id":"https:\/\/virtual-dba.com\/blog\/postgresql-performance-identifying-hot-and-slow-queries\/"},"author":{"name":"XTIVIA","@id":"https:\/\/virtual-dba.com\/#\/schema\/person\/2d86f74bed0c3f1b49100f7fdf7d78d1"},"headline":"PostgreSQL Performance Identifying Hot and Slow Queries","datePublished":"2020-01-30T18:18:00+00:00","dateModified":"2026-01-12T21:31:32+00:00","mainEntityOfPage":{"@id":"https:\/\/virtual-dba.com\/blog\/postgresql-performance-identifying-hot-and-slow-queries\/"},"wordCount":643,"commentCount":0,"publisher":{"@id":"https:\/\/virtual-dba.com\/#organization"},"image":{"@id":"https:\/\/virtual-dba.com\/blog\/postgresql-performance-identifying-hot-and-slow-queries\/#primaryimage"},"thumbnailUrl":"https:\/\/virtual-dba.com\/wp-content\/uploads\/PostgreSQL-Performance-Identifying-Hot-and-Slow-Queries.jpg","keywords":["hot queries","PostgreSQL Performance tuning"],"articleSection":["Blog","PostgreSQL"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/virtual-dba.com\/blog\/postgresql-performance-identifying-hot-and-slow-queries\/#respond"]}],"accessibilityFeature":["tableOfContents"]},{"@type":"WebPage","@id":"https:\/\/virtual-dba.com\/blog\/postgresql-performance-identifying-hot-and-slow-queries\/","url":"https:\/\/virtual-dba.com\/blog\/postgresql-performance-identifying-hot-and-slow-queries\/","name":"PostgreSQL Performance Identifying Hot and Slow Queries","isPartOf":{"@id":"https:\/\/virtual-dba.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/virtual-dba.com\/blog\/postgresql-performance-identifying-hot-and-slow-queries\/#primaryimage"},"image":{"@id":"https:\/\/virtual-dba.com\/blog\/postgresql-performance-identifying-hot-and-slow-queries\/#primaryimage"},"thumbnailUrl":"https:\/\/virtual-dba.com\/wp-content\/uploads\/PostgreSQL-Performance-Identifying-Hot-and-Slow-Queries.jpg","datePublished":"2020-01-30T18:18:00+00:00","dateModified":"2026-01-12T21:31:32+00:00","description":"This article assists with how to identify slow queries using pg_stat_statements for your PostgreSQL Performance needs.","breadcrumb":{"@id":"https:\/\/virtual-dba.com\/blog\/postgresql-performance-identifying-hot-and-slow-queries\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/virtual-dba.com\/blog\/postgresql-performance-identifying-hot-and-slow-queries\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/virtual-dba.com\/blog\/postgresql-performance-identifying-hot-and-slow-queries\/#primaryimage","url":"https:\/\/virtual-dba.com\/wp-content\/uploads\/PostgreSQL-Performance-Identifying-Hot-and-Slow-Queries.jpg","contentUrl":"https:\/\/virtual-dba.com\/wp-content\/uploads\/PostgreSQL-Performance-Identifying-Hot-and-Slow-Queries.jpg","width":557,"height":291},{"@type":"BreadcrumbList","@id":"https:\/\/virtual-dba.com\/blog\/postgresql-performance-identifying-hot-and-slow-queries\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/virtual-dba.com\/"},{"@type":"ListItem","position":2,"name":"PostgreSQL Performance Identifying Hot and Slow Queries"}]},{"@type":"WebSite","@id":"https:\/\/virtual-dba.com\/#website","url":"https:\/\/virtual-dba.com\/","name":"Virtual-DBA Remote DBA Services &amp; Support - Certified Database Experts","description":"Remote Database Administration","publisher":{"@id":"https:\/\/virtual-dba.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/virtual-dba.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/virtual-dba.com\/#organization","name":"Virtual-DBA: Remote DBA | Remote Database Administration","alternateName":"Virtual-DBA powered by XTIVIA","url":"https:\/\/virtual-dba.com\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/virtual-dba.com\/#\/schema\/logo\/image\/","url":"https:\/\/virtual-dba.com\/wp-content\/uploads\/V-DBA-Database-Services-and-Support-Featured-Logo.jpg","contentUrl":"https:\/\/virtual-dba.com\/wp-content\/uploads\/V-DBA-Database-Services-and-Support-Featured-Logo.jpg","width":557,"height":291,"caption":"Virtual-DBA: Remote DBA | Remote Database Administration"},"image":{"@id":"https:\/\/virtual-dba.com\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/x.com\/virtual_dba","https:\/\/www.linkedin.com\/showcase\/36220649\/","https:\/\/www.youtube.com\/channel\/UCx3AIeUQ2ziTLKZSJDZ-SEg"],"description":"Eliminate database downtime and spiraling costs with XTIVIA\u2019s Virtual-DBA. In today\u2019s always-on business world, gaps in 24x7 on-call DBA support, neglected maintenance and security, or a stretched team struggling with overwhelming workloads can lead to costly disruptions and threaten business continuity. XTIVIA\u2019s Virtual-DBA provides the immediate, expert database administration you need, exactly when you need it, ensuring optimal performance, ironclad security, and significant cost savings without the burden of expanding your in-house team. The goal of Virtual-DBA is to provide a cost-effective solution for organizations seeking to optimize the security, management, maintenance, availability, and performance of their critical business systems, whether self-managed or cloud-managed (e.g., AWS RDS, Azure SQL Database). We accomplish this through a comprehensive remote DBA service offering designed specifically to meet the Oracle\u00ae, DB2\u00ae, Informix\u00ae, MySQL\u2122, PostgreSQL\u00ae, MongoDB\u00ae, MariaDB, and Microsoft SQL Server\u00ae, CockroachDB, Databricks, AWS, and Azure needs of our clients.","email":"info@xtivia.com","telephone":"8886853101","legalName":"XTIVIA, Inc","foundingDate":"1992-05-01","numberOfEmployees":{"@type":"QuantitativeValue","minValue":"201","maxValue":"500"}},{"@type":"Person","@id":"https:\/\/virtual-dba.com\/#\/schema\/person\/2d86f74bed0c3f1b49100f7fdf7d78d1","name":"XTIVIA","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/virtual-dba.com\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/0d3648a00e319a37cf8d6d19f762acfbbb4fd0320fd8a6d6b1e64f44a2a6f259?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/0d3648a00e319a37cf8d6d19f762acfbbb4fd0320fd8a6d6b1e64f44a2a6f259?s=96&d=mm&r=g","caption":"XTIVIA"},"url":"https:\/\/virtual-dba.com\/author\/xtivia\/"}]}},"_links":{"self":[{"href":"https:\/\/virtual-dba.com\/wp-json\/wp\/v2\/posts\/37010","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/virtual-dba.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/virtual-dba.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/virtual-dba.com\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/virtual-dba.com\/wp-json\/wp\/v2\/comments?post=37010"}],"version-history":[{"count":0,"href":"https:\/\/virtual-dba.com\/wp-json\/wp\/v2\/posts\/37010\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/virtual-dba.com\/wp-json\/wp\/v2\/media\/37013"}],"wp:attachment":[{"href":"https:\/\/virtual-dba.com\/wp-json\/wp\/v2\/media?parent=37010"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/virtual-dba.com\/wp-json\/wp\/v2\/categories?post=37010"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/virtual-dba.com\/wp-json\/wp\/v2\/tags?post=37010"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}