J'ai une grande quantité de données de modèles météorologiques mises dans une base de données PostgreSQL. La machine possède 8 cœurs et 16 Go de RAM. J'utilise PostgreSQL 9.3 avec PostGIS 2.1. Chaque tableau aura une variété différente de données météorologiques (température, point de rosée, vent, etc.). Chaque table aura 6-7 colonnes: latitude, longitude, géométrie du point, élévation, date-heure pour laquelle le modèle est pertinent et 1-2 valeurs de données d'intérêt. Les données seront principalement interrogées pour une boîte englobante par le temps et l'élévation. Il y aura environ 145 757 360 lignes par table (les données plus anciennes que maintenant ne sont plus pertinentes seront supprimées). J'évalue approximativement la taille des tables à environ 10 Go chacune sans index. (C'est 52 octets de données plus 23 octets de surcharge par ligne). Les données seront régulièrement mises à jour / insérées à mesure que de nouvelles données de modèle seront disponibles. Remarque:
Je regarde donc ces deux plans:
- Il vous suffit d'indexer et de regrouper par (date / heure, élévation) avec un index supplémentaire pour la géométrie du point. Exécutez un travail cron régulier qui supprime les anciennes lignes, exécute le vide / analyse et re-cluster.
- Partitionner par datetime puis cluster et indexer par élévation par table avec un index sur la géométrie. Exécutez une tâche cron régulière pour ajouter de nouvelles tables à l'avenir et supprimer les anciennes tables.
Plus loin,
- Donc, je sais que supprimer une table est beaucoup plus efficace et supprimer et passer l'aspirateur. Mais verrais-je une amélioration des performances autrement?
- Les partitions sont-elles appropriées lorsque toutes les tables seront régulièrement mises à jour et sélectionnées jusqu'à ce qu'elles soient supprimées comme non pertinentes (la documentation indiquait que les partitions fonctionnaient mieux alors que seules quelques-unes seraient sélectionnées)?
Lors de la livraison des données, les sélections seront-elles plus rapides que l'index clusterisé? La réponse change-t-elle si plusieurs demandes sont faites en même temps?
Je vous remercie. J'espère avoir mis en place toutes les données nécessaires. Sinon, faites le moi savoir et je vais l'ajouter.
xmin
ouxmax
, etc. Il y a une caractéristique qui pourrait en faire 9.4 que vous excitera probablement, appelée index minmax, qui fera des choses comme cela beaucoup plus pratique.