sql >> Base de Datos >  >> RDS >> PostgreSQL

PostgreSQL:cómo optimizar mi base de datos para almacenar y consultar un gráfico enorme

Supongo que se debe a una "densidad" de registros de la misma clave en el disco. Creo que los registros con la misma identificación se almacenan de forma densa (es decir, pocos bloques) y aquellos con el mismo enlace se almacenan de forma dispersa (es decir, , distribuido en una gran cantidad de bloques). Si ha insertado registros en el orden de identificación, esta situación puede ocurrir.

Suponga que:1. hay 10.000 registros, 2. se almacenan en un orden como (id, enlace) =(1, 1), (1, 2),..., (1, 100), (2, 1)... y3. Se pueden almacenar 50 registros en un bloque.

En el supuesto anterior, el bloque #1~#3 consta de los registros (1, 1)~(1, 50), (1, 51)~(1, 100) y (2, 1)~(2, 50) respectivamente.

Cuando SELECT * FROM edges WHERE id=1 , solo se deben cargar y escanear 2 bloques (n.º 1, n.º 2). Por otro lado, SELECT * FROM edges WHERE link=1 requiere 50 bloques (#1, #3, #5,...), aunque el número de filas sea el mismo.