Re: Seq Scan como lo procesa Postgresql

From: Alvaro Herrera <alvherre(at)2ndquadrant(dot)com>
To: mauricio pullabuestan <jmauriciopb(at)yahoo(dot)es>
Cc: Ayuda Esp PostgreSQL <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Seq Scan como lo procesa Postgresql
Date: 2018-05-04 17:16:33
Message-ID: 20180504171633.tij4bmrazbk5rapo@alvherre.pgsql
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

mauricio pullabuestan escribió:
> Tengo una tabla que tiene al rededor de 250 mil registros y pesa unos
> 170 mb, solamente tiene su PK

> Tengo entendido que Postgres sube toda la tabla a memoria es decir 170
> mb para hacer Seq Scan y si ejecuta un promedio de 1000 estaríamos,
> haciendo que  Postgres se leyera 170 Gb, esta es la forma en que lo
> hace o lo hace de otra manera?

No, no se leen 170 GB. Hay tres optimizaciones involucradas:
1. el caché del sistema operativo
2. shared_buffers
3. synchronized_scans

Primero postgres pide al OS las páginas, con lo cual quedan en el caché.
Luego las páginas se leen desde el caché del OS a shared_buffers[*].
En el segundo seqscan se pedirán páginas al OS, que ya las tiene en
memoria, así que no hay que leerlas de disco.

Ahora, si lanzas un seqscan y ya hay otro en ejecución, el segundo
empieza desde justo la parte que está leyendo el primero (se
sincroniza) -- así se optimizan las lecturas desde disco.

[*] hay que aclarar que en un seqscan se usan máximo, si mal no
recuerdo, 4MB de shared buffers, para evitar vaciar shared_buffers de
páginas de otras tablas cuando se hace un seqscan de una tabla muy
grande.

> La consulta demora al rededor de 0.28 segundos, aparentemente
> inofensiva pero esta cargando de trabajo innecesario al servidor, se 
> creo un indice filtrado y se corrigió el problema.

Usa EXPLAIN (ANALYZE, BUFFERS) para saber qué tanto se usa de
shared_buffers.

--
Álvaro Herrera https://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Hellmuth Vargas 2018-05-04 19:08:51 Re: Seguridad en PostgreSQL
Previous Message Jared Lopez 2018-05-04 16:32:47 Seguridad en PostgreSQL