Politiques de compression et de rétention
Compressez les anciens blocs avec la compression en colonnes de TimescaleDB et supprimez automatiquement les blocs arrivés à expiration.
Politiques de compression et de rétention est une leçon SQL Academy gratuite sur CoddyKit. Ceci est la leçon 3 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage SQL Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours SQL Academy comprend 4 leçons au total.
Pourquoi compresser ?
Les données de séries temporelles se compressent très bien. TimescaleDB compresse les blocs au format en colonnes et atteint souvent des taux de compression de 10 à 20 fois.
Compresser une table hyperpartitionnée
Configurez les colonnes qui servent à segmenter et à ordonner les données compressées :
ALTER TABLE metrics SET (
timescaledb.compress,
timescaledb.compress_segmentby = 'device_id',
timescaledb.compress_orderby = 'ts DESC'
);Politique de compression
Automatisez la compression des anciens blocs :
SELECT add_compression_policy('metrics', INTERVAL '7 days');
-- Chunks older than 7 days get compressed automatically.Performances des requêtes sur les données compressées
Les lectures sur les blocs compressés restent rapides : TimescaleDB transmet les filtres au stockage en colonnes. Les écritures et mises à jour sur les blocs compressés sont limitées (principalement des ajouts).
Politique de rétention
Supprimez les données plus anciennes que N intervalles — rapidement (suppression du bloc) plutôt que lentement (DELETE) :
SELECT add_retention_policy('metrics', INTERVAL '90 days');
-- Chunks older than 90 days are dropped automatically.Opérations manuelles sur les blocs
Explorez les blocs :
SELECT * FROM chunks_detailed_size('metrics');
SELECT show_chunks('metrics', older_than => INTERVAL '90 days');
SELECT drop_chunks('metrics', older_than => INTERVAL '90 days');Hiérarchisation du stockage
Déplacez les anciens blocs vers un disque lent en modifiant l'espace de table de chaque bloc. Associée à la compression, cette méthode permet de conserver plusieurs années de données à faible coût.
Taux de compression en pratique
Taux habituels pour les données de capteurs :
- Mesures numériques : économie d'espace de 90 à 95 % ou plus
- Données catégorielles : 70 à 80 %
- Chaînes/JSON : dépend du contenu
Décompresser pour effectuer des mises à jour
Vous pouvez décompresser un bloc pour mettre à jour d'anciennes données, puis le recompresser :
SELECT decompress_chunk(c) FROM show_chunks('metrics', newer_than => INTERVAL '60 days') c;
-- Update / fix
SELECT compress_chunk(c) FROM show_chunks('metrics', newer_than => INTERVAL '60 days') c;Équivalents PostgreSQL classiques
Sans TimescaleDB, vous pouvez créer votre propre solution à l'aide de partitions :
DROP TABLE events_2022; -- retention (fast)
-- No native columnar compression in vanilla Postgres for time-series.Associer aux agrégats continus
Schéma courant : conserver les données brutes pendant 30 jours, les agrégats horaires pendant 1 an et les agrégats quotidiens indéfiniment. Chaque niveau est compressé ou conservé selon les besoins.
Surveillance
Suivez la taille compressée et le taux de compression :
SELECT * FROM hypertable_compression_stats('metrics');Récapitulatif
La compression et la rétention transforment PostgreSQL en un système efficace pour les séries temporelles.
- Compressez les anciens blocs 10 à 20 fois
- La rétention supprime les blocs instantanément
- Organisez les données brutes, horaires et quotidiennes selon des durées de conservation différentes
- Décompressez pour effectuer un remplissage rétroactif si nécessaire
Vérification rapide
Vous souhaitez conserver 7 jours de mesures brutes et supprimer automatiquement tout ce qui est plus ancien. Quelle est la solution TimescaleDB ?
Questions Fréquemment Posées
La leçon « Politiques de compression et de rétention » est-elle gratuite ?
Oui — le texte complet de « Politiques de compression et de rétention » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours SQL Academy, passe à CoddyKit PRO. Le cours SQL Academy comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Politiques de compression et de rétention » ?
Compressez les anciens blocs avec la compression en colonnes de TimescaleDB et supprimez automatiquement les blocs arrivés à expiration. Tu pratiques SQL Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer SQL Academy ?
Aucune expérience préalable n'est requise. SQL Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 3 sur 4.
Combien de temps prend la leçon « Politiques de compression et de rétention » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon SQL Academy ?
Oui. Chaque leçon SQL Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Tables hypertables TimescaleDB
- Agrégats continus
- Politiques de compression et de rétention
- Choisir les index pour les séries temporelles