Geçici tablolarla çalışma

PostgreSQL'de Sorgu Performansını İyileştirme

Amy McCarty

Instructor

Geçici (temp) tablolar hakkında

Ne?

  • Kısa ömürlü tablo

Neden?

  • Geçici depolama
  • Veritabanı oturumu
  • Birden çok sorgu
  • Kullanıcıya özgü
  • Yavaş tablolar

Nasıl?

  • CREATE TEMP TABLE name AS
PostgreSQL'de Sorgu Performansını İyileştirme

TEMP tablo yapısı

holiday holiday_type country_code
Epiphany religious CZE
Epiphany religious FRA
Epiphany religious USA
Thanksgiving secular USA
CREATE TEMP TABLE usa_holidays AS
  SELECT holiday, holiday_type
  FROM world_holidays
  WHERE country_code = 'USA';

 

 

 

ABD Tatilleri

holiday holiday_type
Epiphany religious
Thanksgiving secular
PostgreSQL'de Sorgu Performansını İyileştirme

Yavaş, büyük tablolar

  • Çok kayıt nedeniyle yavaş

 

Tablo İstatistikleri World Holidays USA Holidays
Tür tablo geçici tablo
Satır sayısı 591.444 25
PostgreSQL'de Sorgu Performansını İyileştirme

Yavaş, karmaşık görünümler

  • Görünüm mantığı nedeniyle yavaş

Bireysel ülke tablolarının World Holidays görünümünü beslediğini gösteren diyagram

Tablo İstatistikleri World Holidays USA Holidays
Tür view temp_table
Satır sayısı 591.444 25
Kaynak 195 1
  • Tablolar veriyi içerir
  • Görünümler veriye giden talimatları içerir
PostgreSQL'de Sorgu Performansını İyileştirme

Birçok tabloyu birine bağlama

CREATE TEMP TABLE usa_holidays AS
  SELECT holiday, holiday_type
  FROM world_holidays
  WHERE country_code = 'USA';
WITH religious AS 
(   SELECT usa.holiday, r.initial_yr
     , r.celebration_dt
    FROM religious r
    INNER JOIN usa_holidays usa 
      USING (holiday)  )
, secular AS 
(   SELECT usa.holiday, s.initial_yr
     , s.celebration_dt
    FROM secular s
    INNER JOIN usa_holidays usa
      USING (holiday)  )
, ...
PostgreSQL'de Sorgu Performansını İyileştirme

ANALYZE

 

1 CREATE TEMP TABLE usa_holidays AS
2 SELECT holiday, holiday_type
3 FROM world_holidays
4 WHERE country_code = 'USA';
5 
6 ANALYZE usa_holidays;
7 
8 SELECT * FROM usa_holidays

Sorgu planlayıcı (yürütme adımları)

Büyük bir yemek tenceresinin etrafında birden çok aşçı

  • pg_statistics istatistikleri
  • Çalışma zamanı tahminleri
PostgreSQL'de Sorgu Performansını İyileştirme

Hadi pratik yapalım!

PostgreSQL'de Sorgu Performansını İyileştirme

Preparing Video For Download...