Topik ini meninjau fitur unggulan PostgreSQL 18 beserta jalur peningkatan dari versi 17, dengan catatan jujur bahwa lingkungan latihan jalur ini berjalan pada lini yang lebih tua, sehingga contohnya digambarkan tanpa dijalankan. Nilai topik ini ada pada kemampuan membaca rilis baru secara terarah, keterampilan yang berulang setiap tahunnya karena PostgreSQL merilis versi mayor setiap tahun.
Blok penyiapan dataset#
# versi server yang menjalankan latihan jalur ini
psql -U postgres -d perpustakaan -c "SELECT version();" version
-----------------------------------------------------------------------------------------------------------
PostgreSQL 16.2 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 10.2.1 20210130 (Red Hat 10.2.1-11), 64-bit
(1 row)Keluaran menunjukkan lini 16 di lingkungan penulisan, dan setiap topik pada jalur ini memakai fitur yang berlaku sama pada lini 16 sampai 18 kecuali dinyatakan lain. Topik ini kebalikannya, yaitu membaca apa yang berbeda pada lini terbaru tanpa mengeksekusinya.
Asynchronous I/O#
Perubahan terbesar pada PostgreSQL 18 adalah subsistem asynchronous I/O, yaitu kemampuan server mengajukan banyak operasi baca ke sistem operasi sekaligus tanpa menunggu satu per satu, sehingga pembacaan berurutan besar dan pemindaian data besar berjalan lebih cepat. Mode operasinya dipilih melalui parameter io_method, dengan worker sebagai bawaan dan io_uring sebagai jalur berkinerja penuh pada inti Linux yang mendukungnya.
# tidak-dijalankan (menuntut server PostgreSQL 18)
# membaca mode I/O dan jumlah pekerjanya
SHOW io_method;
SHOW io_workers;Dua parameter ini tidak ada pada lini sebelumnya, dan pengaturannya menjadi salah satu titik penalaan baru setelah peningkatan versi. Pemahaman yang dibawa dari jalur ini tetap berlaku, karena pembacaan halaman, pemindaian penuh, dan index scan yang dibedah pada modul index tetap menjadi bentuk eksekusinya, hanya cara menunggu disknya yang berubah.
Skip scan dan fitur perencana lain#
Btree pada PostgreSQL 18 memperoleh skip scan, kemampuan melompati nilai-nilai awalan yang berulang pada index multi-kolom, sehingga query yang menyaring kolom kedua tanpa kolom pertamanya dapat dilayani index yang sama, keterbatasan yang ditegaskan pada topik strategi CREATE INDEX. Penyaringan yang selama ini harus menunggu index baru kini sering dilayani index yang sudah ada.
Fitur perencana lain yang menyertai adalah pelaporan pemakaian memori pada EXPLAIN ANALYZE, sehingga rencana aktualnya turut menyebut beban memori tiap simpul, dan penalaan yang selama ini menumpang alat luar memperoleh sumbernya dari server sendiri.
Fitur data dan identitas#
Dua fitur data yang menonjol pada versi 18 adalah kolom terhitung virtual dan UUID versi 7. Kolom terhitung virtual menghitung ekspresinya saat dibaca alih-alih menyimpannya, kebalikan bentuk STORED yang dibahas pada topik CREATE TABLE, pilihan yang tepat untuk ekspresi yang besar dan jarang dibaca.
# tidak-dijalankan (menuntut server PostgreSQL 18)
# kolom terhitung virtual dan uuidv7
CREATE TABLE uji_18 (
id UUID PRIMARY KEY DEFAULT uuidv7(),
nama TEXT,
huruf_awal TEXT GENERATED ALWAYS AS (left(nama, 1)) VIRTUAL
);
SELECT uuidv7();uuidv7 menghasilkan UUID yang tersusun menurut waktu. Bentuk ini menjawab kelemahan UUID versi 4 yang acak terhadap urutan tulis index, kelemahan yang dibahas pada topik Boolean, UUID, dan enum, sehingga pengenal baru menjadi ramah index tanpa kehilangan keunikannya. Autentikasi OAuth 2.0 dan aturan temporal beserta tanpa tumpang tindih (without overlaps) pada constraint menjadi tambahan lain yang menarik untuk aplikasi dengan kebutuhan keamanan dan jadwal.
Jalur peningkatan dari 17 ke 18#
Peningkatan antar lini mayor pada PostgreSQL berjalan satu lini per lompatan, sehingga dari 17 ke 18 dilakukan langsung, sedangkan dari 16 ditempuh lewat 17. Alat pg_upgrade meningkatkan kluster pada tempatnya melalui dua mode yang berbeda waktu hentinya, yaitu menyalin seluruh berkas kluster lama atau menautkannya (link) tanpa menyalin isinya. Lini 18 memperbaiki proses tersebut dengan mempertahankan statistik perencana, sehingga basis data yang baru meningkat tidak memulai penalaannya dari nol.
Rangkuman langkah peningkatannya membantu membaca prosedur resminya, dan setiap langkah disertai latihan pemulihannya pada lingkungan uji sebelum disentuh di produksi.
- Baca catatan rilis 18 penuh, terutama bagian perubahan yang tidak cocok mundur, dan cocokkan dengan konfigurasi kluster sendiri.
- Cadangkan seluruh kluster dengan pg_dumpall beserta cadangan fisik pg_basebackup sebelum menyentuh apa pun.
- Jalankan pg_upgrade dengan cek dulu melalui flag –check, lalu naikkan, jalankan ANALYZE bila diperlukan, dan uji aplikasinya.
Rencana kembali (rollback) disiapkan sebelum mulai, karena peningkatan lini mayor tidak dapat dibatalkan sebagaimana transaksi, dan kembalinya berarti pemulihan dari cadangan awal, kebiasaan yang dipelajari sejak modul backup.
Kesalahan umum#
Kesalahan pertama adalah menaikkan versi tanpa membaca perubahan yang tidak cocok mundur, karena beberapa parameter dan perilaku berubah dan penyetelan lama tidak selalu sah. Kesalahan kedua adalah menaikkan lebih dari satu lini sekaligus, yang tidak didukung jalur pg_upgrade dan menuntut perjalanan per lini.
Kesalahan ketiga adalah mengira fitur baru otomatis mempercepat beban lama, padahal skip scan dan I/O asinkron menang pada pola tertentu, dan pengukuran sebelum sesudah tetap menjadi hukumnya. Kesalahan keempat adalah lupa memutakhirkan driver klien bersamaan dengan server, karena klien yang terlalu tua dapat gagal memahami protokol atau jenis data baru.
Ringkasan#
- PostgreSQL 18 memperkenalkan asynchronous I/O dengan io_method dan io_workers sebagai titik penalaan baru.
- Skip scan melayani penyaringan kolom kedua pada index multi-kolom, dan EXPLAIN ANALYZE kini melaporkan pemakaian memori.
- Kolom terhitung virtual menghitung saat dibaca, dan uuidv7 menghadirkan pengenal berurut waktu yang ramah index.
- Peningkatan 17 ke 18 lewat pg_upgrade satu lini, dengan cadangan penuh, uji cek dulu, dan rencana kembali yang siap.
Referensi#
- PostgreSQL 18 Release Notes — PostgreSQL Documentation — Daftar lengkap perubahan versi 18.
- PostgreSQL 18 Documentation — Dokumentasi lini 18 sebagai rujukan parameter barunya.
- pg_upgrade — PostgreSQL Documentation — Prosedur peningkatan antar lini mayor.