PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

PostgreSQL :Comment optimiser ma base de données pour stocker et interroger un énorme graphe

Je suppose que c'est à cause d'une "densité" d'enregistrements de même clé sur le disque. Je pense que les enregistrements avec le même identifiant sont stockés de manière dense (c. , répartis sur un grand nombre de blocs). Si vous avez inséré des enregistrements dans l'ordre de l'identifiant, cette situation peut se produire.

Supposons que :1. il y a 10 000 enregistrements,2. ils sont stockés dans l'ordre tel que (id, lien) =(1, 1), (1, 2),..., (1, 100), (2, 1)..., et3. 50 enregistrements peuvent être stockés dans un bloc.

Dans l'hypothèse ci-dessus, le bloc #1~#3 se compose des enregistrements (1, 1)~(1, 50), (1, 51)~(1, 100) et (2, 1)~(2, 50) respectivement.

Lorsque vous SELECT * FROM edges WHERE id=1 , seuls 2 blocs (#1, #2) doivent être chargés et scannés. D'autre part, SELECT * FROM edges WHERE link=1 nécessite 50 blocs (#1, #3, #5,...), même si le nombre de lignes est le même.