infolightbulb_outlinenew_releasesreportwarning

PostgreSQL 10’un Yenilikleri

Doruk Fişek

PostgreSQL Nedir?

  • İlişkisel veritabanı sistemi

  • En yaygın kullanılan veritabanı sunucularından biri

  • Kökleri 1986’ya dayanıyor, 30+ yıldır geliştiriliyor

  • Son yıllarda artan bir büyüme eğrisi içinde

  • Sahibi bir şirket yok, yönetimi topluluk tarafından yapılıyor

postgresql

Sürümlendirme Sistemi

  • PostgreSQL 10 öncesi:

    • Majör sürüm: 9.4, 9.5, 9.6

    • Minör sürüm: 9.4.17, 9.5.12, 9.6.8

  • PostgreSQL 10 sonrası:

    • Majör sürüm: 10, 11, 12

    • Minör sürüm: 10.3, 11.2, 12.1

Logical Replikasyon

  • Publisher/subscriber yapısı

  • Dosya sistemindeki dosyaların farkı yerine veritabanı/tablo değişimlerinin farkının aktarılması

  • Farklı PostgreSQL majör sürümleri arasında replikasyon yapılabilmesi

  • Tüm sunucu yerine belirli bir veritabanı ya da tablonun replikasyonunun yapılabilmesi

  • Çok sayıda veritabanını tek bir veritabanı sunucusunda birleştirme

  • Bir veritabanı sunucusunun belirli veritabanlarını farklı sunuculara dağıtabilme

Daha Kolay Partitioning (Bölümlendirme)

  • Eskiden inheritance ile yapılabiliyordu

  • Artık CREATE TABLE sorgusunda tanımlayarak yapılabiliyor:

CREATE TABLE measurement (
    city_id         int not null,
    logdate         date not null,
    peaktemp        int,
    unitsales       int
) PARTITION BY RANGE (logdate);

CREATE TABLE measurement_y2006m02 PARTITION OF measurement
    FOR VALUES FROM ('2006-02-01') TO ('2006-03-01');
  • PostgreSQL 11’de daha da gelişmesi planlanıyor.

Öntanımlılarda Değişiklikler

  • postgresql.conf

    • wal_level → replica

    • max_wal_senders → 10

    • max_replication_slots → 10

  • pg_hba.conf → replikasyon tanımı

  • pg_basebackup → -X stream

Veritabanı Bağlantılarına Ek Özellikler

  • Birden fazla PostgreSQL sunucu belirtilebiliyor:

host=pg1,pg2,pg3 user=kullanici password=parola
  • "Yazabilen" bir PostgreSQL sunucu seçilebiliyor:

host=pg1,pg2,pg3 target_session_attrs=read-write user=kullanici password=parola
  • .pgpass yerine başka bir dosya belirtilebiliyor:

host=pg1 passfile=/etc/pgparola

Hash İndekslerinde Yeni Özellikler

  • Göçmeye dayanıklı

  • Replikasyon destekliyor

  • Daha az kilitleniyor

  • Daha hızlı çalışıyor

Dizin İsim Değişiklikleri

  • pg_xlog dizini → pg_wal

  • pg_clog dizini → pg_xact

Fonksiyon İsim Değişiklikleri

  • pg_current_xlog_flush_location → pg_current_wal_flush_lsn

  • pg_current_xlog_insert_location → pg_current_wal_insert_lsn

  • pg_current_xlog_location → pg_current_wal_lsn

  • pg_is_xlog_replay_paused → pg_is_wal_replay_paused

  • pg_last_xlog_receive_location → pg_last_wal_receive_lsn

  • pg_last_xlog_replay_location → pg_last_wal_replay_lsn

  • pg_switch_xlog → pg_switch_wal

  • pg_xlog_location_diff → pg_wal_lsn_diff

  • pg_xlog_replay_pause → pg_wal_replay_pause

  • pg_xlog_replay_resume → pg_wal_replay_resume

  • pg_xlogfile_name → pg_walfile_name

  • pg_xlogfile_name_offset → pg_walfile_name_offset

Komut ve Parametre Değişiklikleri

  • pg_basebackup: --xlog-method → --wal-method

  • initdb + pg_basebackup: --xlog-dir → --wal-dir

  • pg_xlogdump → pg_waldump

  • pg_resetxlog → pg_resetwal

  • pg_receivexlog → pg_receivewal

View Değişiklikleri

  • pg_stat_replication

    • write_location → write_lsn

    • sent_location → sent_lsn

    • flush_location → flush_lsn

    • replay_location → replay_lsn

  • pg_create_logical_replication_slot: wal_position → lsn

  • pg_create_physical_replication_slot: wal_position → lsn

  • pg_logical_slot_get_changes: location → lsn

  • pg_logical_slot_peek_changes: location → lsn

Diğer

  • Senkron replikasyonda quorum desteği

  • Parola doğrulamasında SCRAM-SHA-256 desteği

  • Sorguların daha iyi paralelleştirilmesi

  • Tüm metinde aramada JSON desteği

  • file_fdw’a dış program çalıştırma desteği

  • Birden fazla kolonun birleşiminden istatistik toplayabilme

  • Darboğaz analizi daha kolay: 69 olan wait event sayısı artık 184.

  • XMLTABLE ile XML işleme desteği

  • Daha fazlası ve detayı: PostgreSQL 10 sürüm notları

Sorular

soru isaretleri