Zaman Serisi INDEX Seçimleri
Zaman serisi iş yükleri için doğru INDEX'leri seçin — bileşik (device_id, ts DESC) yaygın kalıbı kapsar.
Zaman Serisi INDEX Seçimleri, CoddyKit'te ücretsiz bir SQL Academy dersidir. Bu, 4 dersinin 4. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, SQL Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. SQL Academy kursu toplamda 4 dersten oluşur.
Yaygın Zaman Serisi Sorgusu
"Tek bir varlık için en güncel veriler":
SELECT * FROM metrics
WHERE device_id = 42
AND ts >= NOW() - INTERVAL '24 hours'
ORDER BY ts DESC LIMIT 1000;Bileşik Dizin (device_id, ts DESC)
Zaman serileri için temel dizin:
CREATE INDEX metrics_device_ts_idx
ON metrics (device_id, ts DESC);
-- Equality on device_id, range + sort on ts: index handles both.Sıralama Neden Önemlidir
- (device_id, ts) — "bu cihazın en güncel verileri" için en iyi seçenek
- (ts, device_id) — "bu zamanda tüm cihazlar" için en iyi seçenek
Sorgu dağılımınıza göre seçim yapın.
Yalnızca Ekleme Yapılan Tablolar için BRIN
BRIN çok küçüktür — milyar satırlı bir tablo için birkaç MB. Yalnızca veriler dizinlenen sütuna göre fiziksel olarak sıralanmışsa etkilidir; zaman serilerinde genellikle durum böyledir:
CREATE INDEX metrics_ts_brin ON metrics USING BRIN (ts);
-- Excellent for "give me last 24 hours" on append-only tables.B-ağacı ve BRIN
- B-ağacı — tam kimliğe göre milisaniyelik aramalar; en güncel zamana göre aramalar
- BRIN — monoton verilerde hızlı aralık taramaları; bakımı ucuzdur
İkisini birleştirebilirsiniz: (device_id) üzerinde B-ağacı, (ts) üzerinde BRIN.
Hipertablo Dizinleri
TimescaleDB, dizinleri tüm parçalara dağıtır. Kullanılmayan dizinleri kaldırın — her parçada maliyet oluştururlar.
Sık Erişilen Alt Kümeler için Kısmi Dizinler
Sorguların %99'u en güncel verilere erişiyorsa:
CREATE INDEX metrics_recent_idx
ON metrics (device_id, ts DESC)
WHERE ts >= NOW() - INTERVAL '7 days';
-- Issue: predicate must use literal date or be re-created periodically.Dizin Sütununda İşlev Kullanmaktan Kaçınma
Dizinlenen sütuna işlev uygulamayın — bu, dizinin kullanımını engeller:
-- BAD:
WHERE date_trunc('hour', ts) = $1
-- GOOD:
WHERE ts >= $1 AND ts < $1 + INTERVAL '1 hour'En Son Satır Sorguları için Dizin
"Her cihaz için en son okuma" sorgusunda doğru dizin, sorguyu dizin aralık taramasına dönüştürür:
CREATE INDEX metrics_device_ts_idx ON metrics (device_id, ts DESC);
SELECT DISTINCT ON (device_id) device_id, ts, value
FROM metrics
ORDER BY device_id, ts DESC;
-- Uses the index to take the first row per device.Sık Erişim Sıralamasına Göre CLUSTER
CLUSTER, tabloyu bir dizine göre fiziksel olarak yeniden sıralar. Tek seferlik bir işlemdir; yeni veriler yine geliş sırasına göre eklenir:
CLUSTER metrics USING metrics_device_ts_idx;
-- Cluster is heavy. TimescaleDB chunks help by keeping recent chunks small.Yüksek Kardinaliteli Eşitlik için Karma Dizini
Zaman serilerinde nadiren kullanılır, ancak mevcuttur. device_id üzerinde B-ağacı genellikle yeterlidir.
Aşırı Dizin Oluşturmaktan Kaçının
Zaman serisi tabloları yazma ağırlıklıdır. Her dizin, yazma büyütmesi anlamına gelir. Yalnızca sorguladığınız şeyler için dizin ekleyin.
Özet
Zaman serilerinde dizin oluşturma, az sayıda örüntüden oluşur.
- Varlık ve ts DESC başına sorgular için bileşik (entity, ts DESC)
- Yalnızca ekleme yapılan aralık sorguları için ts üzerinde BRIN
- Hipertablolar: dizinler parçalara dağıtılır
- Sütun üzerinde işlev kullanan koşullardan kaçının
Hızlı Kontrol
En yoğun zaman serisi sorgunuz device_id ile filtreleme yapıyor ve son 24 saati okuyor. En iyi dizin hangisidir?
Yapay zeka eğitmeniyle SQL öğren — ücretsiz
Tarayıcında gerçek kod yaz ve çalıştır, 7/24 yapay zeka eğitmeninden anında yardım al; web'de ya da uygulamada kaldığın yerden devam et.
- Kurslar
- 46
- Dersler
- 183
Sıkça Sorulan Sorular
“Zaman Serisi INDEX Seçimleri” dersi ücretsiz mi?
Evet — “Zaman Serisi INDEX Seçimleri” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve SQL Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. SQL Academy kursu toplamda 4 dersten oluşur.
“Zaman Serisi INDEX Seçimleri” dersinde ne öğreneceğim?
Zaman serisi iş yükleri için doğru INDEX'leri seçin — bileşik (device_id, ts DESC) yaygın kalıbı kapsar. SQL Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
SQL Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te SQL Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 4. dersidir.
“Zaman Serisi INDEX Seçimleri” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu SQL Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her SQL Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- TimescaleDB Hiper tabloları
- Sürekli Toplamalar
- Sıkıştırma ve Saklama İlkeleri
- Zaman Serisi INDEX Seçimleri