13 poin oleh GN⁺ 2024-09-27 | 1 komentar | Bagikan ke WhatsApp
  • PostgreSQL 17 mencakup peningkatan performa besar, perbaikan manajemen memori, optimasi akses penyimpanan, peningkatan beban kerja dengan konkurensi tinggi, peningkatan kecepatan pemuatan massal dan ekspor, serta perbaikan eksekusi kueri indeks

Peningkatan performa di seluruh sistem

  • Memperbaiki struktur memori internal dari proses vacuum PostgreSQL yang esensial untuk operasi normal, sehingga penggunaan memori berkurang hingga 20 kali lipat
    • Kecepatan vacuum meningkat dan penggunaan sumber daya bersama berkurang, sehingga lebih banyak sumber daya tersedia untuk workload
  • Terus meningkatkan performa lapisan I/O
    • Perbaikan pemrosesan Write-Ahead Log(WAL) menghasilkan throughput tulis hingga 2x lebih baik pada workload dengan konkurensi tinggi
    • Antarmuka streaming I/O baru meningkatkan kecepatan sequential scan (membaca seluruh data dalam tabel) dan kecepatan pembaruan statistik rencana eksekusi dari perintah ANALYZE
  • Memperluas dampak peningkatan performa ke eksekusi kueri
    • Meningkatkan performa kueri dengan klausa IN yang menggunakan indeks B-tree (metode indeks default PostgreSQL)
    • Mendukung build paralel pada indeks BRIN
  • Mencakup berbagai peningkatan untuk penyusunan rencana kueri
    • Optimasi untuk constraint NOT NULL
    • Perbaikan pemrosesan common table expression (kueri WITH)
  • Memperluas dukungan SIMD(Single Instruction/Multiple Data) untuk akselerasi komputasi, termasuk penggunaan AVX-512 pada fungsi bit_count

Semakin memperluas pengalaman pengembang yang kuat

  • PostgreSQL adalah database relasional pertama yang menambahkan dukungan JSON (2012)
  • Di PostgreSQL 17, implementasi standar SQL/JSON diperluas lebih jauh
    • JSON_TABLE memungkinkan data JSON dikonversi menjadi tabel PostgreSQL standar
    • Mendukung konstruktor SQL/JSON (JSON, JSON_SCALAR, JSON_SERIALIZE) dan fungsi kueri (JSON_EXISTS, JSON_QUERY, JSON_VALUE)
    • Menambahkan ekspresi jsonpath yang berfokus pada konversi data JSON ke tipe data dasar PostgreSQL (angka, boolean, string, tanggal/waktu)
  • Menambahkan klausa RETURNING dan fitur pembaruan view ke perintah MERGE
  • Meningkatkan fitur pemuatan massal dan ekspor data
    • Peningkatan performa hingga 2x saat mengekspor baris besar menggunakan perintah COPY
    • Peningkatan performa COPY saat encoding sumber dan target sama
    • Menambahkan opsi ON_ERROR yang memungkinkan impor tetap dilanjutkan meski terjadi error saat insert
  • Memperluas kemampuan pengelolaan data yang terdistribusi di partisi dan instance PostgreSQL jarak jauh
    • Mendukung penggunaan kolom ID dan exclusion constraint pada tabel partisi
    • Dengan postgres_fdw, subkueri EXISTS dan IN dapat didorong ke server jarak jauh
  • Menyertakan penyedia collation bawaan yang independen terhadap platform dan bersifat immutable
    • Menyediakan semantik pengurutan yang mirip dengan collation C, tetapi menggunakan encoding UTF-8 alih-alih SQL_ASCII
    • Dengan penyedia collation baru ini, kueri berbasis teks akan mengembalikan hasil pengurutan yang sama terlepas dari lokasi eksekusi PostgreSQL

Peningkatan logical replication untuk high availability dan upgrade versi mayor

  • Logical replication digunakan untuk melakukan streaming data secara real-time
  • Pada versi sebelumnya, slot logical replication harus dihapus saat melakukan upgrade versi mayor, sehingga data perlu disinkronkan ulang ke subscriber setelah upgrade
  • Mulai PostgreSQL 17, slot logical replication tidak perlu dihapus, sehingga proses upgrade menjadi lebih sederhana
  • Menyertakan kemampuan kontrol failover untuk logical replication, sehingga deployment di lingkungan high availability menjadi lebih tangguh
  • Memperkenalkan alat baris perintah pg_createsubscriber untuk mengonversi replika fisik menjadi replika logis baru

Lebih banyak opsi untuk keamanan dan pengelolaan operasional

  • PostgreSQL 17 semakin memperluas cara pengguna mengelola seluruh siklus hidup sistem database
  • Menambahkan opsi TLS baru bernama sslnegotiation yang memungkinkan handshake TLS langsung saat menggunakan ALPN
  • Menambahkan peran bawaan pg_maintain yang memberikan izin untuk menjalankan tugas pemeliharaan
  • pg_basebackup, utilitas backup yang disertakan dalam PostgreSQL, kini mendukung backup inkremental dan menambahkan utilitas pg_combinebackup untuk merekonstruksi backup penuh
  • pg_dump kini menyertakan opsi baru --filter untuk memilih objek yang akan disertakan saat membuat file dump
  • Peningkatan fitur pemantauan dan analisis
    • EXPLAIN menampilkan waktu yang dihabiskan untuk membaca dan menulis blok I/O lokal
    • Menyertakan dua opsi baru, SERIALIZE dan MEMORY: berguna untuk melihat waktu yang dibutuhkan untuk konversi data untuk transmisi jaringan dan jumlah memori yang digunakan
  • Melaporkan progres pembersihan indeks
  • Menambahkan system view pg_wait_events yang jika digabungkan dengan pg_stat_activity memberikan insight tentang alasan sesi aktif sedang menunggu

1 komentar

 
GN⁺ 2024-09-27
Opini Hacker News
  • Ucapan selamat atas rilis baru PostgreSQL 17 disertai penyebutan berbagai peningkatan

    • Perbaikan struktur memori untuk operasi vacuum menurunkan penggunaan memori hingga 20 kali lipat
    • Utilitas pencadangan pg_basebackup kini mendukung backup inkremental dan utilitas pg_combinebackup ditambahkan
    • Peningkatan pada foreign data wrapper (FDW) memungkinkan pemrosesan subkueri EXISTS dan IN di server jarak jauh
  • Pendapat tentang kegunaan fitur JSON

    • Menekankan kegunaan fitur JSON dalam basis data relasional
    • Menyebut pentingnya kemampuan untuk menghasilkan JSON dari data
    • Mengungkapkan antusiasme untuk mempelajari fitur JSON_TABLE
  • Berbagi pengalaman menggunakan fitur JSON_TABLE

    • Menekankan kegunaan pendekatan menyimpan respons JSON di kolom jsonb lalu menulis view untuk mem-parsing-nya
    • Merasa senang setelah melihat pendekatan ini dibahas dalam dokumentasi fitur baru PostgreSQL
  • Menyebut peningkatan performa dan perbaikan fitur UX di PostgreSQL 17

    • Dukungan untuk kolom ID dan exclusion constraint pada tabel yang dipartisi
    • Penambahan penyedia collation yang independen platform dan immutable untuk menjamin hasil pengurutan yang konsisten pada kueri berbasis teks
  • Kesan terhadap change log

    • Menyayangkan PR UUIDv7 tidak disertakan
  • Berbagi pengalaman berpindah dari Oracle ke MSSQL karena masalah kepercayaan terhadap perangkat lunak open source

    • Atasan berpendapat bahwa "open source tidak bisa dipercaya untuk perangkat lunak bisnis"
  • Mengucapkan terima kasih atas peningkatan berkelanjutan pada Postgres dan berharap ekstensi Incremental View Maintenance (IVM) mendapat dukungan resmi

  • Menaruh harapan pada dukungan upgrade versi mayor PostgreSQL

  • Berharap Postgres mengadopsi system-versioned tables

  • Berharap peningkatan integrasi JSON di Postgres akan memungkinkan paradigma baru framework web