SQL Academy · Lektion

TimescaleDB-hypertabeller

Konvertera en Postgres-tabell till en TimescaleDB-hypertabell med automatisk tidspartitionering enligt ett intervall för chunks.

Lektion 1 av 413 steg

TimescaleDB-hypertabeller är en gratis lektion i SQL Academy på CoddyKit. Detta är lektion 1 av 4. Ni kan läsa hela lektionen gratis nedan och sedan öva praktiskt i webbläsaren med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt. Den ingår i lärvägen för SQL Academy, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i SQL Academy innehåller totalt 4 lektioner.

Vad är TimescaleDB?

En PostgreSQL-utökning som är byggd för tidsseriedata. Den lägger till automatisk tidsbaserad partitionering, komprimering, bevarande och kontinuerliga aggregat. Den kan användas fristående eller tillsammans med vanlig Postgres.

Hypertable

En logiskt sammanhängande tabell som fysiskt delas upp i "chunks" utifrån 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.

Tidsintervall för chunks

Standardintervallet för en chunk är 7 dagar. Anpassa det efter dataflödet (mindre chunks för data med hög insättningstakt):

SELECT create_hypertable('metrics', 'ts', chunk_time_interval => INTERVAL '1 day');
-- One chunk per day, smaller and faster to drop.

Infoga data

Använd bara en vanlig INSERT — TimescaleDB dirigerar raderna till rätt chunk:

INSERT INTO metrics (ts, device_id, value)
VALUES (NOW(), 1, 42.5);

Fråga hypertables

Det ser ut som en vanlig tabell. Optimeraren tar bort chunks från sökningen för tidsbegränsade frågor:

SELECT * FROM metrics
WHERE ts >= NOW() - INTERVAL '7 days'
ORDER BY ts DESC LIMIT 100;
-- Only the relevant chunks are read.

time_bucket: smartare date_trunc

TimescaleDB:s hjälpfunktion för 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 med flera kolumner

För arbetsbelastningar med flera tenants kan du även partitionera efter device_id:

SELECT create_hypertable('metrics', 'ts', 'device_id', 4);
-- Hash-partitions device_id into 4 space partitions per time chunk.

Fråga med båda filtren

Bäst prestanda uppnås när båda partitioneringsdimensionerna filtreras:

SELECT * FROM metrics
WHERE device_id = 42
  AND ts >= NOW() - INTERVAL '7 days';
-- Prunes by both time and space.

Index på hypertables

Index sprids till varje chunk:

CREATE INDEX metrics_device_idx ON metrics (device_id, ts DESC);
-- Composite index ideal for 'recent data for one device' queries.

Uppdatera hypertables

UPDATE och DELETE fungerar, men bör vara ovanliga för tidsseriedata. Gamla data är vanligtvis skrivskyddade och oföränderliga.

Migrera från vanliga tabeller

Befintliga tabeller kan konverteras till hypertables:

SELECT create_hypertable('metrics', 'ts', migrate_data => true);

Sammanfattning

Hypertables = automatisk tidsbaserad partitionering för Postgres.

  • En logisk tabell, många fysiska chunks
  • create_hypertable + chunk_time_interval
  • time_bucket för grupperade aggregat
  • Index sprids till alla chunks

Snabbtest

Du läser in IoT-mätvärden med 100 000 rader per sekund. Varför bör du konvertera tabellen till en TimescaleDB-hypertable?

Gratis att börja

Lär dig SQL med en AI-lärare – gratis

Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.

Kurser
46
Lektioner
183

Vanliga frågor

Är lektionen ”TimescaleDB-hypertabeller” gratis?

Ja – hela texten till ”TimescaleDB-hypertabeller” kan läsas gratis här på webben. Om Ni vill öva interaktivt med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt och låsa upp resten av kursen i SQL Academy, kan Ni uppgradera till CoddyKit PRO. Kursen i SQL Academy innehåller totalt 4 lektioner.

Vad lär jag mig i ”TimescaleDB-hypertabeller”?

Konvertera en Postgres-tabell till en TimescaleDB-hypertabell med automatisk tidspartitionering enligt ett intervall för chunks. Ni övar på SQL Academy med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.

Behöver jag någon erfarenhet för att börja lära mig SQL Academy?

Du behöver inga förkunskaper. Utbildningen i SQL Academy på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 1 av 4.

Hur lång tid tar lektionen ”TimescaleDB-hypertabeller”?

De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.

Kan jag skriva och köra kod i den här SQL Academy-lektionen?

Ja. Varje SQL Academy-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.

Alla lektioner i den här kursen

  1. TimescaleDB-hypertabeller
  2. Kontinuerliga aggregat
  3. Komprimerings- och retentionprinciper
  4. Val av index för tidsserier
← Tillbaka till SQL Academy