PostgreSQL 18 Rilis: Baca Data 3x Lebih Cepat, UUIDv7, dan Perpisahan dengan md5
Backlink
Rilis besar database open source paling populer ini membawa asynchronous I/O, upgrade mayor yang tidak lagi bikin lemot, dan autentikasi OAuth 2.0. Ini rangkuman yang penting buat developer.

PostgreSQL Global Development Group resmi merilis PostgreSQL 18, dan ini bukan rilis perbaikan kecil. Subsistem I/O baru di dalamnya sudah terbukti menaikkan kecepatan baca data hingga 3x pada beberapa skenario benchmark. Untuk database yang jadi tulang punggung aplikasi kamu, angka segitu berarti langsung terasa di tagihan server dan di waktu respons API.
Asynchronous I/O: masalah readahead yang akhirnya dibereskan
Sebelum versi 18, PostgreSQL mengandalkan mekanisme readahead dari sistem operasi untuk mempercepat pengambilan data. Masalahnya, sistem operasi tidak paham pola akses database, jadi sering salah tebak data mana yang akan dibutuhkan berikutnya. PostgreSQL 18 memperkenalkan subsistem asynchronous I/O (AIO): beberapa permintaan I/O bisa jalan bersamaan, tidak lagi antre satu per satu. Operasi yang sudah didukung: sequential scan, bitmap heap scan, dan vacuum. Pengaturannya lewat parameter io_method, pilih worker, io_uring, atau sync kalau mau perilaku lama.
Upgrade mayor tidak lagi bikin aplikasi lemot mendadak
Siapa pernah naikkan versi mayor PostgreSQL lalu aplikasi tiba-tiba melambat berjam-jam sampai ANALYZE selesai? Kalau pernah, ini kabar baik: mulai versi 18, statistik planner ikut dibawa saat upgrade mayor. pg_upgrade juga dapat peningkatan, misalnya pemrosesan cek paralel lewat flag --jobs dan flag baru --swap. Untuk database dengan ribuan tabel dan sequence, bedanya kerasa.
Yang langsung bisa dipakai developer
- uuidv7() finalisasi jadi bawaan: UUID berurutan waktu, jauh lebih ramah untuk indeks B-tree dan caching dibanding uuidv4 acak
- Virtual generated columns: nilai dihitung saat query, tidak disimpan, jadi tidak makan tempat
- Skip scan di indeks B-tree multi-kolom: query yang tidak menyertakan kolom prefix tetap bisa pakai indeks
- Kondisi OR di WHERE sekarang bisa dioptimalkan memakai indeks
- RETURNING sekarang bisa mengakses OLD dan NEW sekaligus untuk INSERT/UPDATE/DELETE/MERGE
Keamanan: md5 siap-siap pensiun
Autentikasi password md5 resmi dis depreciate dan akan dihapus di rilis berikutnya. Kalau masih pakai md5, sekarang waktunya migrasi ke SCRAM. PostgreSQL 18 juga menambahkan dukungan autentikasi OAuth 2.0 lewat extension, yang memudahkan integrasi SSO untuk tim yang ingin login database lewat identitas perusahaan. Satu lagi yang menarik untuk sesama maniak detail: wire protocol versi 3.2 hadir, pembaruan protocol pertama sejak versi 3.0 di tahun 2003.
Perlu langsung upgrade?
Konteks: kenapa rilis ini terasa berbeda
PostgreSQL punya reputasi sebagai database yang konservatif. Perubahan besar biasanya datang pelan, dan komunitasnya terkenal hati-hati soal kompatibilitas. Dalam konteks itu, kehadiran subsistem I/O baru di versi 18 termasuk langkah yang cukup berani. Bukan sekadar menambah fungsi, tetapi mengganti cara database berinteraksi dengan storage.
Alasannya masuk akal ketika melihat tren hardware. Storage modern seperti NVMe menawarkan latensi sangat rendah dan bisa menangani banyak permintaan paralel. Namun PostgreSQL versi lama masih meminta data satu per satu, sehingga perangkat cepat tidak terpakai penuh. AIO menutup jarak itu. Ketika database bisa mengirim beberapa permintaan baca sekaligus, perangkat yang cepat jadi benar-benar terasa cepat di level aplikasi.
Apa arti peningkatan 3x dalam praktik
Angka 3x pada pengumuman resmi mengacu pada skenario tertentu dalam benchmark, biasanya pembacaan berurutan dalam jumlah besar pada storage cepat. Artinya, tidak semua beban kerja akan merasakan angka yang sama. Aplikasi dengan data yang seluruhnya muat di RAM mungkin tidak melihat perbedaan besar. Sebaliknya, sistem analitik, pelaporan, atau layanan dengan dataset besar yang tidak muat di memori berpotensi merasakan manfaat lebih nyata.
Cara paling jujur mengetahuinya adalah mengukur di beban kerja sendiri. Pendekatan yang lazim dipakai: jalankan pgbench atau skenario query representatif di versi lama, simpan hasilnya, lalu ulangi di versi 18 dengan konfigurasi setara. Tanpa pengukuran seperti ini, klaim peningkatan hanya jadi bahan presentasi, bukan dasar keputusan.
Fitur kecil yang sering terlewat
Selain AIO dan uuidv7, ada beberapa perubahan yang mungkin tidak masuk berita utama tetapi berdampak pada pekerjaan sehari-hari.
- EXPLAIN ANALYZE sekarang otomatis menampilkan jumlah buffer yang diakses. Ini membuat analisis query lebih cepat karena tidak perlu menebak dari mana biaya terbesar berasal.
- pg_stat_all_tables menambah informasi waktu yang dihabiskan untuk vacuum, membantu menjawab pertanyaan apakah autovacuum bekerja sesuai harapan.
- Virtual generated columns jadi opsi bawaan, sehingga kolom turunan tidak lagi memakan ruang penyimpanan.
- Dukungan ARM NEON dan SVE untuk fungsi popcount, relevan bagi yang menjalankan PostgreSQL di server berbasis ARM.
- Wire protocol 3.2, pembaruan pertama sejak 2003. Perubahan ini lebih terasa bagi penulis driver dan pembuat connection pooler.
Catatan migrasi yang mudah terlewat
Dua hal ini sering jadi sumber masalah setelah upgrade. Pertama, database baru hasil initdb mengaktifkan page checksum secara default. Kalau melakukan pg_upgrade dari klaster lama tanpa checksum, ada opsi --no-data-checksums yang perlu dipahami sebelum memulai. Kedua, full text search kini memakai collation provider default klaster, bukan selalu libc. Konsekuensinya, indeks full text search dan pg_trgm mungkin perlu di-reindex.
Untuk tim yang memakai replikasi logis, ada juga perubahan yang perlu diperhatikan: CREATE SUBSCRIPTION sekarang default memakai parallel streaming, dan replikasi slot yang menganggur bisa dihapus otomatis lewat pengaturan idle_replication_slot_timeout. Keduanya membantu operasional, tetapi tetap perlu dipahami sebelum diterapkan di lingkungan produksi.
Tidak harus hari ini, tapi masukkan ke radar. Yang paling masuk akal untuk segera naik: database baca-berat dengan storage cepat (NVMe), aplikasi yang pakai UUID sebagai primary key, dan semua yang masih pakai md5. Catatan penting sebelum upgrade: database baru hasil initdb kini mengaktifkan page checksum secara default, dan beberapa indeks full text search mungkin perlu di-reindex ulang. Baca release notes dulu, jangan langsung gas di produksi.
Punya kebutuhan proyek serupa?
Ceritakan rencana usaha Anda, saya bantu siapkan website atau sistem web yang rapi dan siap dipakai.
Diskusi via WhatsApp→