2017-08-11 1 views
1

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

+0

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. –

+1

'... 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

+0

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. –

Répondre

1

Problème ne sera pas PostgreSQL mais le matériel et comment vous allez régler la base de données. En fait, Yahoo, Reddit, Yandex et d'autres l'utilisent. Et à partir de 9,6 il y a paralell queries afin que vous puissiez utiliser votre processeur plus efficacement.

0

Il existe certaines étapes de configuration que vous pouvez envisager pour obtenir une réponse meilleure et plus rapide avec autant de données. Vous pouvez utiliser l'approche multi-locataires, indexer la base de données, utiliser les systèmes de base Linux au lieu de Windows.

This liens vous aideront à trier ces aspects ainsi que d'autres aussi.