Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1tzGs5-00HayT-6F for pgsql-general@arkaria.postgresql.org; Mon, 31 Mar 2025 15:16:17 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1tzGs3-007RFw-Q4 for pgsql-general@arkaria.postgresql.org; Mon, 31 Mar 2025 15:16:15 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1tzGs3-007RFn-E3 for pgsql-general@lists.postgresql.org; Mon, 31 Mar 2025 15:16:15 +0000 Received: from smtp111.iad3b.emailsrvr.com ([146.20.161.111]) by magus.postgresql.org with esmtps (TLS1.2) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1tzGs0-002FNK-3A for pgsql-general@lists.postgresql.org; Mon, 31 Mar 2025 15:16:15 +0000 X-Auth-ID: xof@thebuild.com Received: by smtp14.relay.iad3b.emailsrvr.com (Authenticated sender: xof-AT-thebuild.com) with ESMTPSA id 7FF80E019C; Mon, 31 Mar 2025 11:16:10 -0400 (EDT) Content-Type: text/plain; charset=utf-8 Mime-Version: 1.0 (Mac OS X Mail 16.0 \(3776.700.51.11.1\)) Subject: Re: RDS IO Read time From: Christophe Pettus In-Reply-To: Date: Mon, 31 Mar 2025 08:15:39 -0700 Cc: "pgsql-general@lists.postgresql.org" Content-Transfer-Encoding: quoted-printable Message-Id: References: To: Eden Aharoni X-Mailer: Apple Mail (2.3776.700.51.11.1) X-Classification-ID: 9de14a38-24db-477f-9fd6-03ea46621f9b-1-1 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk > On Mar 31, 2025, at 06:54, Eden Aharoni = wrote: > Is this expected IO read rate? I can=E2=80=99t help but feel we=E2=80=99= re missing something here.. Really, no particular I/O rate is "expected": if PostgreSQL needs that = much data, it'll use that much I/O to get it. =46rom your description, = it's likely that it's a case of the working set for the database just = not fitting into the memory you have, so PostgreSQL needs to go out to = secondary storage a lot to fetch the data. The best first step is to use Performance Insights to see which queries = are using I/O, and run sample ones with EXPLAIN (ANALYZE, BUFFERS) to = see where the I/O is being used within the query. Given that you allow = users to assemble arbitrary queries, it's likely that PostgreSQL is = having to use a wide variety of indexes (or sequential scans), so it = can't successfully cache a particular set in memory.=