PostgreSQL 17

Apa yang Baru di PostgreSQL 17

PostgreSQL telah menempuh perjalanan panjang sejak dirilis pertama kali pada tahun 1986. Kini, PostgreSQL menjadi salah satu database open-source yang paling banyak digunakan di dunia. Dalam artikel ini, kita akan mengulas fitur-fitur terbaru dan paling menarik dari PostgreSQL 17, dengan fokus pada aspek-aspek yang paling relevan bagi sebagian besar pengguna. Meskipun daftar pembaruan di PostgreSQL 17 sangat banyak, artikel ini akan membahas poin-poin utama yang mencakup:

  • Fitur untuk DBA dan administrasi database

  • Fitur SQL dan pengembangan

  • Peningkatan pada replikasi dan cadangan (backup)

  • Perubahan signifikan (breaking changes) di PostgreSQL 17

Pada akhir artikel ini, Anda akan memahami fitur-fitur baru yang menarik ini dan bagaimana cara memanfaatkannya secara lebih mendalam.

Fitur untuk DBA dan Administrasi Database

Setiap rilis PostgreSQL selalu menghadirkan sejumlah fitur baru untuk mempermudah dan meningkatkan efisiensi kerja para administrator database (DBA). PostgreSQL 17 tidak terkecuali. Mari kita telusuri beberapa fitur administrasi terbaru yang ditawarkan.

Membatasi Durasi Transaksi yang Lama

PostgreSQL telah lama mendukung berbagai fitur untuk membatasi durasi pernyataan (statement), waktu tunggu untuk kunci (lock), dan banyak lagi. Namun, salah satu fitur yang telah lama diminta oleh pengguna dan akhirnya hadir di PostgreSQL 17 adalah kemampuan untuk membatasi durasi sebuah transaksi. Sebelumnya, PostgreSQL memiliki variabel konfigurasi instance-wide bernama old_snapshot_threshold. Variabel ini bertujuan untuk membatasi panjang maksimum transaksi guna mencegah table bloat dan masalah lain yang dapat membahayakan server. Namun, kelemahan old_snapshot_threshold adalah hanya dapat diatur pada tingkat instance, bukan secara lebih spesifik.

Di PostgreSQL 17, fitur ini telah dihapus dan digantikan dengan variabel baru bernama transaction_timeout, yang dapat diatur per sesi. Nilai default dari pengaturan ini adalah "unlimited" (0), seperti ditunjukkan di bawah ini:

test=# SHOW transaction_timeout;
 transaction_timeout
---------------------
 0
(1 row)

Jika Anda ingin membatasi durasi transaksi, Anda cukup mengatur nilai dalam sesi Anda. Misalnya, perintah berikut mengatur transaction_timeout menjadi 5 detik (5000 milidetik):

test=# SET transaction_timeout TO 5000;
SET
test=# BEGIN;
BEGIN
test=*# SELECT now();
              now
------------------------------
 2024-06-21 19:37:35.81715+00
(1 row)
test=*# SELECT now();
              now
------------------------------
 2024-06-21 19:37:35.81715+00
(1 row)
test=*# SELECT now();
FATAL: terminating connection due to transaction timeout
server closed the connection unexpectedly
This probably means the server terminated abnormally
before or while processing the request.
The connection to the server was lost. Attempting reset: Succeeded.
test=#

Setelah 5 detik, transaksi akan dihentikan, dan PostgreSQL akan memutuskan koneksi sepenuhnya. Fitur ini merupakan cara termudah untuk menghilangkan transaksi yang terlalu lama dan mencegah table bloat.

Namun, PostgreSQL 17 tidak berhenti di sini. Masih ada banyak fitur baru lainnya yang akan mempermudah pekerjaan DBA, seperti peningkatan pada alat replikasi dan cadangan, serta optimalisasi untuk pengembang. Selain itu, penting juga untuk memperhatikan perubahan signifikan yang mungkin memengaruhi kompatibilitas dengan aplikasi yang sudah ada.


...

Last updated