Satır odaklı depolama ve bölümler

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

Amy McCarty

Instructor

Veritabanı depolama türleri

Satır odaklı depolama

  • Sütunlar arası ilişki korunur

Sütun odaklı depolama

  • Satırlar arası ilişki korunur
id name species age habitat received
01 Bob panda 2 Asia 2018
02 Sunny zebra 3 Africa 2018
03 Beco zebra 10 Africa 2017
04 Coco koala 5 Australia 2016
PostgreSQL'de Sorgu Performansını İyileştirme

Satır odaklı

Satır odaklı depolama

  • Sütunlar arası ilişki korunur

 

id name species age habitat received
01 Bob panda 2 Asia 2018
PostgreSQL'de Sorgu Performansını İyileştirme

Sütun odaklı

Sütun odaklı depolama

  • Satırlar arası ilişki korunur  

İki tablo. İlk tabloda id ve ad listesi: 01 - Bob. 02 - Sunny. 03 - Beco. 04 - Coco. İkinci tabloda aynı id'ler ve tür listesi: 01 - panda. 02 - zebra. 03 - zebra. 04 - koala.

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

Satır odaklı depolama

 

  • Bir satır aynı konumda saklanır
  • Tüm kayıtları eklemek/silmek hızlıdır
  • Tüm sütunları döndürmek hızlıdır
    • Tüm satırları döndürmek yavaştır
PostgreSQL'de Sorgu Performansını İyileştirme

Satırları azaltma

Satır sayısını azaltın

  • WHERE filtresi
  • INNER JOIN
  • DISTINCT
  • LIMIT
PostgreSQL'de Sorgu Performansını İyileştirme

Satır odaklı veritabanı yöntemleri

Bölümler (partitions)

  • Tek bir (ebeveyn) tabloyu birçok küçük (çocuk) tabloya bölme yöntemi

Dizinler (indexes)

  • Aramayı iyileştirmek için sıralı sütun anahtarları oluşturma yöntemi

 

Bölümler ve dizinleri kullanma

  • Kurulum ve bakım gerektirir
  • Varlığı veritabanı yöneticisi veya dokümantasyondan bilinir
PostgreSQL'de Sorgu Performansını İyileştirme

Bölüm yapısı

Kimlik, ad, tür, yaşam alanı ve alınma yılı sütunlarıyla dört kaydı olan bir hayvanat bahçesi ebeveyn tablosu. 01 - Bob - Panda - yaş - habitat - alınma. 02 - Sunny - Zebra - 3 - Afrika - 2018. 03 - Beco - Zebra - 10 - Afrika - 2017. 04 - Coco - Makav - 5 - Güney Amerika - 2016. Yaşam alanı sütununa karşılık gelen 3 çocuk tablo vardır. Asya tablosunda Bob için bir kayıt var. Afrika tablosunda Sunny ve Beco için iki kayıt var. Güney Amerika tablosunda Coco için bir kayıt var.

  • Ebeveyn tablo
    • Veritabanı arayüzünde görünür
    • Sorgular yazılır
  • Çocuk tablolar
    • Veritabanı arayüzünde görünmez
    • Sorgular bunlarda aranır
PostgreSQL'de Sorgu Performansını İyileştirme

Bölüm yapısı

Kimlik, ad, tür, yaşam alanı ve alınma yılı sütunlarıyla dört kaydı olan bir hayvanat bahçesi ebeveyn tablosu. 01 - Bob - Panda - yaş - habitat - alınma. 02 - Sunny - Zebra - 3 - Afrika - 2018. 03 - Beco - Zebra - 10 - Afrika - 2017. 04 - Coco - Makav - 5 - Güney Amerika - 2016. Yaşam alanı sütununa karşılık gelen 3 çocuk tablo vardır. Asya tablosunda Bob için bir kayıt var. Afrika tablosunda Sunny ve Beco için iki kayıt var. Güney Amerika tablosunda Coco için bir kayıt var. Afrika tablosu kırmızıyla vurgulanmıştır.

SELECT species
FROM zoo_animals
WHERE habitat = 'Africa'
PostgreSQL'de Sorgu Performansını İyileştirme

Bölüm genel bakış

Ne

  • Bir tablonun birçok küçük tabloya bölünmesi

Neden

  • Esnek depolama
  • Daha hızlı sorgular

Nerede

  • Yaygın filtre sütunları
    • Tarih, konum
PostgreSQL'de Sorgu Performansını İyileştirme

Bölüm sorgu değerlendirmesi

Sorgu planlayıcı

Büyük bir tencerenin etrafında birden çok şef

EXPLAIN
SELECT species
FROM zoo_animals
WHERE habitat = 'Africa'

Sorgu Planı

Seq Scan on zoo_animals  (cost=0.00..
17.70 rows=2 width=182)
  Filter: (state_code = 15)
  • Maliyet (zaman) tahminleri
PostgreSQL'de Sorgu Performansını İyileştirme

Hadi pratik yapalım!

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

Preparing Video For Download...