TimescaleDB-hypertabeller
Omdan en Postgres-tabel til en TimescaleDB-hypertabel med automatisk tidsbaseret partitionering efter chunk-interval.
TimescaleDB-hypertabeller er en gratis SQL Academy-lektion på CoddyKit. Dette er lektion 1 af 4. Du kan læse hele lektionen gratis nedenfor — og derefter øve dig praktisk i browseren med en indbygget kodeeditor og en AI-vejleder, der er tilgængelig døgnet rundt. Den er en del af læringsforløbet i SQL Academy, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. SQL Academy-kurset indeholder 4 lektioner i alt.
Hvad er TimescaleDB?
En PostgreSQL-udvidelse, der er udviklet til tidsseriedata. Den tilføjer automatisk tids-partitionering, komprimering, opbevaring og kontinuerlige aggregater. Den kan bruges selvstændigt eller sammen med almindelig Postgres.
Hypertabel
En logisk enkelt tabel, der fysisk er opdelt i "chunks" efter tid:
CREATE EXTENSION IF NOT EXISTS timescaledb;
CREATE TABLE metrics (
ts TIMESTAMPTZ NOT NULL,
device_id BIGINT NOT NULL,
value DOUBLE PRECISION
);
SELECT create_hypertable('metrics', 'ts');
-- metrics is now a hypertable, chunks created automatically.Tidsinterval for chunks
Et chunk er som standard 7 dage. Justér det efter dataenes hastighed (mindre chunks til data med høj hastighed):
SELECT create_hypertable('metrics', 'ts', chunk_time_interval => INTERVAL '1 day');
-- One chunk per day, smaller and faster to drop.Indsættelse af data
Brug bare en normal INSERT — TimescaleDB dirigerer rækkerne til det rigtige chunk:
INSERT INTO metrics (ts, device_id, value)
VALUES (NOW(), 1, 42.5);Forespørgsler på hypertabeller
Det ligner en normal tabel. Planlæggeren frasorterer chunks for forespørgsler med tidsbegrænsninger:
SELECT * FROM metrics
WHERE ts >= NOW() - INTERVAL '7 days'
ORDER BY ts DESC LIMIT 100;
-- Only the relevant chunks are read.time_bucket: smartere date_trunc
TimescaleDB's hjælpefunktion til gruppering:
SELECT time_bucket('1 hour', ts) AS hour,
AVG(value) AS avg_value
FROM metrics
WHERE device_id = 42
AND ts >= NOW() - INTERVAL '24 hours'
GROUP BY hour
ORDER BY hour;Partitionering efter flere kolonner
For arbejdsbelastninger med flere lejere kan du også partitionere efter device_id:
SELECT create_hypertable('metrics', 'ts', 'device_id', 4);
-- Hash-partitions device_id into 4 space partitions per time chunk.Forespørgsler med begge filtre
Du får den bedste ydeevne, når begge partitioneringsdimensioner filtreres:
SELECT * FROM metrics
WHERE device_id = 42
AND ts >= NOW() - INTERVAL '7 days';
-- Prunes by both time and space.Indeks på hypertabeller
Indeks videreføres til hvert chunk:
CREATE INDEX metrics_device_idx ON metrics (device_id, ts DESC);
-- Composite index ideal for 'recent data for one device' queries.Opdatering af hypertabeller
UPDATE- og DELETE-operationer fungerer, men bør være sjældne på tidsseriedata. Gamle data tilføjes normalt kun og er uforanderlige.
Migrering fra almindelige tabeller
Eksisterende tabeller kan konverteres til hypertabeller:
SELECT create_hypertable('metrics', 'ts', migrate_data => true);Opsummering
Hypertabeller = automatisk tids-partitionering til Postgres.
- Én logisk tabel, mange fysiske chunks
- create_hypertable + chunk_time_interval
- time_bucket til aggregeringer i intervaller
- Indeks videreføres til alle chunks
Hurtigt tjek
Du indlæser IoT-målinger med 100.000 rækker/sek. Hvorfor konvertere tabellen til en TimescaleDB-hypertabel?
Lær SQL med en AI-underviser — gratis
Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.
- Kurser
- 46
- Lektioner
- 183
Ofte stillede spørgsmål
Er lektionen “TimescaleDB-hypertabeller” gratis?
Ja — hele teksten til “TimescaleDB-hypertabeller” kan læses gratis her på nettet. Hvis du vil øve dig interaktivt med en indbygget kodeeditor og en AI-vejleder døgnet rundt og få adgang til resten af SQL Academy-kurset, skal du opgradere til CoddyKit PRO. SQL Academy-kurset indeholder 4 lektioner i alt.
Hvad lærer jeg i “TimescaleDB-hypertabeller”?
Omdan en Postgres-tabel til en TimescaleDB-hypertabel med automatisk tidsbaseret partitionering efter chunk-interval. Du øver dig i SQL Academy med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.
Skal jeg have erfaring for at begynde på SQL Academy?
Der kræves ingen tidligere erfaring. SQL Academy på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 1 af 4.
Hvor lang tid tager lektionen “TimescaleDB-hypertabeller”?
De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.
Kan jeg skrive og køre kode i denne SQL Academy-lektion?
Ja. Alle SQL Academy-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.
Alle lektioner i dette kursus
- TimescaleDB-hypertabeller
- Kontinuerlige aggregeringer
- Komprimerings- og opbevaringspolitikker
- Valg af indekser til tidsserier