PostgreSQL 11 dirilis pada 10 Oktober 2018, dan sesuai jadwal, menandai ulang tahun ke-23 database open source yang semakin populer.
Sementara daftar lengkap perubahan tersedia di Catatan Rilis biasa, ada baiknya memeriksa halaman Matriks Fitur yang dirubah yang seperti dokumentasi resmi telah menerima perubahan sejak versi pertamanya yang membuatnya lebih mudah untuk melihat perubahan sebelum menyelam ke detailnya. .
Misalnya pada halaman Catatan Rilis, "Pengikatan saluran untuk otentikasi SCAM" terkubur di bawah Kode Sumber sementara matriks memilikinya di bawah bagian Keamanan. Bagi yang penasaran, inilah tangkapan layar antarmuka:
Matriks Fitur PostgreSQLSelain itu, halaman Catatan Rilis Bucardo Postgres yang ditautkan di atas, berguna dengan caranya sendiri, membuatnya mudah untuk mencari kata kunci di semua versi.
Apa yang baru? Dengan ratusan perubahan, saya akan membahas perbedaan yang tercantum dalam Matriks Fitur.
Meliputi Indeks untuk B-tree (TERMASUK)
CREATE INDEX menerima klausa INCLUDE yang memungkinkan indeks menyertakan kolom bukan kunci . Kasus penggunaannya untuk kueri identik yang sering, dijelaskan dengan baik dalam komit Tom Lane mulai 22 November, yang memperbarui dokumentasi pengembangan (artinya dokumentasi PostgreSQL 11 saat ini belum memilikinya), jadi untuk teks lengkap lihat bagian 11.9. Pemindaian Indeks Saja dan Menutupi Indeks dalam versi pengembangan.
Paralel CREATE INDEX untuk Indeks B-tree
Seperti yang disebutkan dalam namanya, fitur ini hanya diimplementasikan untuk indeks B-tree, dan dari log komit Robert Haas, kami mengetahui bahwa implementasinya dapat disempurnakan di masa mendatang. Sebagaimana dicatat dari dokumentasi CREATE INDEX, meskipun metode pembuatan indeks paralel dan bersamaan memanfaatkan beberapa CPU, dalam kasus CONCURRENT hanya pemindaian tabel pertama yang akan dilakukan secara paralel.
Terkait dengan fitur baru ini adalah parameter konfigurasi maintenance_work_mem dan maintenance_parallel_maintenance_workers .
Terakhir, jumlah pekerja paralel dapat diatur per tabel menggunakan perintah ALTER TABLE dan menentukan nilai untuk parallel_workers .
Unduh Whitepaper Hari Ini Pengelolaan &Otomatisasi PostgreSQL dengan ClusterControlPelajari tentang apa yang perlu Anda ketahui untuk menerapkan, memantau, mengelola, dan menskalakan PostgreSQLUnduh WhitepaperKompilasi Just-In-Time (JIT) untuk Evaluasi Ekspresi dan Deformasi Tuple
Dengan bab JIT sendiri dalam dokumentasi, fitur baru ini bergantung pada PostgreSQL yang dikompilasi dengan dukungan LLVM (gunakan pg_config untuk memverifikasi).
Topik JIT di PostgreSQL cukup kompleks (lihat referensi JIT README dalam dokumentasi) untuk memerlukan blog khusus, sementara itu, blog CitusData di JIT adalah bacaan yang sangat bagus bagi mereka yang tertarik untuk menyelami subjek lebih dalam.
Gabungan Hash Paralel
Peningkatan kinerja untuk kueri paralel ini adalah hasil dari penambahan tabel hash bersama, yang seperti yang dijelaskan Thomas Munro dalam Parallel Hash for PostgreSQL blog-nya, menghindari mempartisi tabel hash asalkan cocok dengan work_mem , yang sejauh ini untuk PostgreSQL tampaknya menjadi solusi yang lebih baik daripada algoritma partisi-pertama. Blog yang sama menjelaskan hambatan arsitektur PostgreSQL yang harus diatasi oleh penulis dalam usahanya untuk menambahkan paralelisasi ke hash join yang menunjukkan kompleksitas pekerjaan yang diperlukan untuk mengimplementasikan fitur ini.
Partisi Default
Ini adalah partisi tangkap semua untuk menyimpan baris yang tidak cocok dengan partisi lain yang ditentukan. Dalam kasus di mana partisi baru ditambahkan, batasan CHECK direkomendasikan untuk menghindari pemindaian partisi default yang dapat menjadi lambat ketika partisi default berisi banyak baris.
Perilaku partisi default dijelaskan dalam dokumentasi ALTER TABLE dan CREATE TABLE.
Mempartisi dengan Kunci Hash
Juga disebut partisi hash, dan seperti yang ditunjukkan dalam pesan komit, fitur ini memungkinkan partisi tabel sedemikian rupa sehingga partisi akan menampung jumlah baris yang sama. Ini dicapai dengan menyediakan modulus, yang dalam skenario yang lebih sederhana direkomendasikan untuk sama dengan jumlah partisi, dan sisanya harus berbeda untuk setiap partisi.
Untuk detail lebih lanjut dan contohnya, lihat halaman dokumentasi CREATE TABLE.
Dukungan untuk PRIMARY KEY, FOREIGN KEY, Indeks, dan Pemicu pada Tabel yang Dipartisi
Partisi tabel sudah merupakan langkah besar dalam meningkatkan kinerja tabel besar, dan penambahan fitur ini mengatasi keterbatasan tabel yang dipartisi sejak PostgreSQL 10 ketika “partisi deklaratif” gaya modern diperkenalkan.
Pekerjaan oleh Alvaro Herrera sedang berlangsung untuk mengizinkan kunci asing untuk mereferensikan kunci utama, dan dijadwalkan untuk versi utama PostgreSQL 12 berikutnya.
PERBARUI pada Kunci Partisi
Seperti yang dijelaskan dalam log komit patch, pembaruan ini mencegah PostgreSQL membuat kesalahan saat pembaruan pada kunci partisi membuat baris menjadi tidak valid, dan baris tersebut akan dipindahkan ke partisi yang sesuai.
Pengikatan Saluran untuk Otentikasi SCRAM
Ini adalah tindakan keamanan yang bertujuan untuk mencegah serangan man-in-the-middle dalam Otentikasi SASL dan dirinci secara menyeluruh di blog penulis. Fitur ini membutuhkan minimal OpenSSL 1.0.2.
BUAT PROSEDUR dan PANGGILAN Sintaks untuk Prosedur Tersimpan SQL
PostgreSQL telah memiliki CREATE FUNCTION sejak tahun 1996, dengan versi 1.0.1 , namun, fungsi tidak dapat menangani transaksi. Seperti disebutkan dalam dokumentasi, perintah CREATE PROCEDURE tidak sepenuhnya kompatibel dengan standar SQL.
Catatan:Nantikan blog mendatang yang mendalami fitur ini
Kesimpulan
Pembaruan utama PostgreSQL 11 berfokus pada peningkatan kinerja melalui eksekusi paralel, partisi, dan kompilasi Just-In-Time. Prosedur tersimpan memungkinkan kontrol transaksi penuh dan dapat ditulis dalam berbagai bahasa PL.