Fitur Baru di Query Planner PostgreSQL 16
- PostgreSQL 16 memperkenalkan banyak peningkatan pada query planner, sehingga banyak kueri SQL dapat dijalankan lebih cepat dibandingkan versi sebelumnya.
- Peningkatan planner ini dapat dilihat di catatan rilis PG16, tetapi karena setiap rilis PostgreSQL memiliki banyak perubahan, sulit untuk memberikan penjelasan rinci untuk masing-masing perubahan.
- Dalam posting blog ini, disajikan analisis mendalam tentang 10 peningkatan yang dilakukan pada query planner PostgreSQL 16, beserta perbandingan output planner PG15 dan PG16 serta contoh mengenai apa yang berubah.
10 peningkatan pada query planner PostgreSQL 16
- Incremental sort: Incremental sort, yang pertama kali diperkenalkan di PostgreSQL 13, memanfaatkan kondisi ketika sebagian himpunan hasil sudah terurut berdasarkan satu atau lebih kolom awal, sehingga pengurutan hanya dilakukan untuk kolom sisanya.
- Agregasi yang memanfaatkan data terurut: Query planner PostgreSQL 16 kini mencoba membentuk rencana yang memasok baris ke node agregasi dalam urutan yang sudah terurut.
- Memoization: Node rencana memoization, yang pertama kali diperkenalkan di PostgreSQL 14, berfungsi sebagai lapisan cache untuk menghindari pencarian nilai yang berulang.
- Anti join: PostgreSQL 16 memungkinkan hashing pada tabel yang lebih kecil saat menjalankan anti join.
- Parallel hash join: PostgreSQL 16 mendukung parallel hash join untuk tipe join FULL dan RIGHT.
- Optimisasi window function: PostgreSQL 16 memungkinkan penggunaan window function yang lebih cepat saat memakai mode ROWS dibanding mode RANGE.
- Optimisasi window function yang selalu meningkat: PostgreSQL 16 memperluas optimisasi untuk window function seperti
ntile(), cume_dist(), dan percent_rank().
- Join removal pada tabel partisi: PostgreSQL 16 mengizinkan optimisasi penghapusan LEFT JOIN pada tabel partisi.
- Penggunaan Limit untuk kueri DISTINCT: Query planner PostgreSQL 16 tidak menyertakan node rencana untuk penghapusan duplikasi hasil ketika dapat mendeteksi bahwa semua baris berisi nilai yang sama.
- Pelonggaran aturan untuk Merge Join: Query planner PostgreSQL 16, saat mempertimbangkan Merge Join, memeriksa apakah setidaknya satu kolom awal telah diurutkan dengan benar, alih-alih mensyaratkan urutan baris harus benar-benar sama.
Opini GN⁺
- Peningkatan query planner di PostgreSQL 16 memainkan peran penting dalam meningkatkan performa database. Khususnya, fitur seperti incremental sort dan memoization memungkinkan eksekusi kueri kompleks menjadi lebih efisien.
- Peningkatan ini akan sangat berguna bagi developer dan administrator database yang menggunakan PostgreSQL, terutama pada sistem yang menangani data dalam skala besar, di mana peningkatan performa akan lebih terasa.
- Upaya inovasi dan perbaikan berkelanjutan dari komunitas PostgreSQL terus mendorong perkembangan teknologi database open source, yang pada akhirnya menyediakan solusi pengelolaan data yang lebih baik bagi pengguna dan perusahaan.
1 komentar
Komentar Hacker News
explain.dalibo.comdanwww.pgexplain.devsebagai alat visualisasi kueri. Kedua alat tersebut memberikan hasil keluaran yang serupa.CREATE INDICES FOR <sql>. Juga diusulkan mode pembuatan indeks otomatis untuk pengembangan dan penggunaan interaktif.IS NOT DISTINCT FROM.