Je fais un PoC pour vérifier si Postgres est le bon candidat pour nos cas d'utilisation.Postgres performance pour une table avec plus de milliards de lignes
je la charge de travail suivante:
requête de données: couche de présentation permet de récupérer des données toutes les 15 minutes pendant 2 semaines
charge des données: Toutes les 15 minutes, 5 millions de lignes de les données sont chargées dans une table et j'ai observé qu'il consomme 375 Mo pour cette charge. Par jour, ce serait 480 millions de lignes avec une taille de table de 36GB. Après avoir chargé des données pendant quelques jours (environ 1 milliard de lignes dans un tableau), j'ai exécuté quelques requêtes et j'ai observé que les requêtes sélectionnées ne répondaient pas pendant des heures. par exemple. sélectionnez count (*) .. et sélectionnez * .. requêtes simples mais lourdes. pas de jointures
Mon exigence est de charger les données toutes les 15 minutes et de les stocker pendant quelques mois, mais je n'ai pas encore atteint ce point. Même avec quelques jours de données pour la charge de travail ci-dessus, j'observe que les requêtes select ne répondent pas.
Je me demande si postgres a des limites avec ce type de charge de travail ou si je ne l'ai pas réglé correctement! Ai-je manqué de configurer un paramètre clé?
J'ai passé en revue la documentation officielle de postgres (https://www.postgresql.org/about/) sur les limites et mon exigence n'a pas vraiment atteint les limites théoriques spécifiées dans postgres.
Configuration Postgres: Voici les paramètres postgres que j'ai configurés.
checkpoint_completion_target | 0.9
default_statistics_target | 500
effective_cache_size | 135GB
maintenance_work_mem | 2GB
max_connections | 50
max_stack_depth | 2MB
max_wal_size | 8GB
min_wal_size | 4GB
shared_buffers | 45GB
wal_buffers | 16MB
work_mem | 471859kB
Configuration du serveur:
virtualisé matériel!
vCPU: 32
RAM: 200 Go
Je me demande si postgres a besoin d'un matériel dédié physique. Peut-être qu'il ne peut pas gérer cette charge sur le matériel virtualisé!
Appréciez si vous avez des commentaires ou des suggestions à ce sujet. BR/Nag
Quelles sortes de requêtes exécutez-vous? Avec ce type de volume de données, vous avez généralement besoin de requêtes analytiques de type OLAP et de restructuration/de cumul de données. –
'... des requêtes simples mais lourdes. pas de jointures ... 'Il n'y a pas de place pour l'optimisation pour ce genre de requêtes. Une requête qui a besoin de toutes les lignes devra récupérer toutes les pages. – joop
Vous devez optimiser votre matériel pour une lecture rapide du disque, car vous ne pouvez pas mettre autant de données en mémoire cache. Pour certaines requêtes, vous pouvez fournir des vues matérialisées ou d'autres optimisations pour améliorer les performances. –