Rilis DBMS PostgreSQL 14

Setelah satu tahun pengembangan, cabang stabil baru dari DBMS PostgreSQL 14 telah diterbitkan. Pembaruan untuk cabang baru tersebut akan dirilis selama lima tahun hingga November 2026.

Inovasi utama:

  • Menambahkan dukungan untuk mengakses data JSON menggunakan ekspresi seperti array: SELECT ('{ "postgres": { "release": 14 }}'::jsonb)['postgres']['release']; PILIH * DARI tes WHERE detail['atribut']['ukuran'] = '"sedang"';

    Sintaks serupa diterapkan untuk data kunci/nilai yang disediakan oleh tipe hstore. Sintaks ini awalnya diimplementasikan menggunakan kerangka universal, yang nantinya dapat digunakan untuk tipe lain. Contoh untuk tipe hstore: INSERT INTO mytable VALUES ('a=>b, c=>d'); PILIH h['a'] DARI tabel saya; PERBARUI tabel saya SET h['c'] = 'baru';

  • Kelompok tipe untuk menentukan rentang telah diperluas dengan tipe β€œmultirentang” baru, yang memungkinkan Anda menentukan daftar rentang nilai yang tidak tumpang tindih. Selain setiap tipe rentang yang ada, tipe multirentangnya sendiri diusulkan, misalnya, tipe "int4range" sesuai dengan "int4multirange", dan tipe "daterange" sesuai dengan "datemultirange". Penggunaan tipe baru menyederhanakan desain kueri yang memanipulasi rangkaian rentang yang kompleks. PILIH '{[3,7), [8,9)}'::int4multirange; PILIH nummultirange(numrange(1.0, 14.0), numrange(20.0, 25.0));
  • Optimalisasi telah dilakukan untuk meningkatkan kinerja sistem beban tinggi yang memproses koneksi dalam jumlah besar. Dalam beberapa pengujian, terjadi peningkatan kinerja dua kali lipat.
  • Efisiensi indeks B-tree telah ditingkatkan dan masalah pertumbuhan indeks ketika tabel sering diperbarui telah teratasi.
  • Menambahkan dukungan untuk mode transmisi permintaan saluran pipa sisi klien (diimplementasikan pada tingkat libpq), yang memungkinkan Anda untuk secara signifikan mempercepat skenario database yang terkait dengan melakukan sejumlah besar operasi penulisan kecil (INSERT/UPDATE/DELETE) dengan mengirimkan permintaan berikutnya tanpa menunggu hasil dari permintaan sebelumnya. Mode ini juga membantu mempercepat pekerjaan pada koneksi dengan penundaan pengiriman paket yang lama.
  • Peningkatan kemampuan untuk konfigurasi terdistribusi yang melibatkan beberapa server PostgreSQL. Dalam penerapan replikasi logis, pengiriman transaksi dalam mode streaming yang sedang dalam proses eksekusi kini dimungkinkan, yang secara signifikan dapat meningkatkan kinerja replikasi transaksi besar. Selain itu, decoding logis dari data yang diterima selama replikasi logis telah dioptimalkan.
  • Mekanisme untuk menghubungkan tabel eksternal Foreign Data Wrapper (postgres_fdw) telah menambahkan dukungan untuk pemrosesan kueri paralel, yang saat ini hanya berlaku saat menghubungkan ke server PostgreSQL lainnya. postgres_fdw juga menambahkan dukungan untuk menambahkan data ke tabel eksternal dalam mode batch dan kemampuan untuk mengimpor tabel yang dipartisi dengan menentukan arahan β€œIMPORT FOREIGN SCHEMA”.
  • Optimalisasi telah dilakukan pada implementasi operasi VACUUM (pengumpulan sampah dan pengemasan penyimpanan disk). Mode pembersihan darurat telah ditambahkan yang melewatkan operasi pembersihan yang tidak penting jika kondisi sampul ID transaksi dibuat. Mengurangi overhead saat memproses indeks dalam format B-Tree. Eksekusi operasi β€œANALYZE”, yang mengumpulkan statistik tentang pengoperasian database, telah dipercepat secara signifikan.
  • Menambahkan kemampuan untuk mengonfigurasi metode kompresi yang digunakan dalam sistem TOAST, yang bertanggung jawab untuk menyimpan data besar, seperti blok teks atau informasi geometris. Selain metode kompresi pglz, TOAST kini dapat menggunakan algoritma LZ4.
  • Alat untuk memantau pengoperasian DBMS telah diperluas. Menambahkan tampilan untuk melacak kemajuan perintah COPY (pg_stat_progress_copy), statistik tentang slot replikasi (pg_stat_replication_slots) dan aktivitas yang terkait dengan log transaksi WAL (pg_stat_wal). Fungsi compute_query_id telah ditambahkan, yang memungkinkan berbagai subsistem, seperti pg_stat_activity dan EXPLAIN VERBOSE, untuk melacak permintaan dengan menetapkan pengidentifikasi unik untuk setiap permintaan.
  • Pengoptimalan telah ditambahkan ke perencana kueri untuk meningkatkan pemrosesan kueri paralel dan meningkatkan kinerja eksekusi simultan dari operasi pemindaian catatan berurutan, eksekusi paralel kueri di PL/pgSQL menggunakan perintah β€œRETURN QUERY”, dan eksekusi paralel kueri di β€œ SEGARKAN TAMPILAN MATERIALISASI”. Untuk meningkatkan kinerja penggabungan siklik bersarang (gabung), dukungan untuk caching tambahan telah diterapkan.
  • Statistik tingkat lanjut kini dapat digunakan untuk mengoptimalkan ekspresi, dan pengurutan tambahan kini dapat digunakan untuk mengoptimalkan fungsi jendela.
  • Prosedur tersimpan yang memungkinkan Anda mengelola transaksi dalam blok kode kini mendukung pendefinisian data kembalian menggunakan parameter "OUT".
  • Menambahkan fungsi date_bin untuk membulatkan nilai stempel waktu sesuai dengan interval yang ditentukan. PILIH date_bin('15 menit', TIMESTAMP '2020-02-11 15:44:17', TIMESTAMP '2001-01-01'); 2020-02-11 15:30:00
  • Menambahkan ekspresi SEARCH dan CYCLE yang ditentukan dalam standar SQL untuk memudahkan pengorganisasian dan mengidentifikasi siklus dalam Common Table Expressions (CTE) rekursif. DENGAN pohon_pencarian REKURSIF(id, tautan, data) SEBAGAI ( PILIH t.id, t.link, t.data DARI pohon t UNION SEMUA PILIH t.id, t.link, t.data DARI pohon t, pohon_pencarian st DIMANA t. id = st.link ) CARI KEDALAMAN PERTAMA DENGAN id SET ordercol SELECT * FROM search_tree ORDER BY ordercol;
  • Dalam utilitas psql, pelengkapan otomatis perintah dengan tab telah ditingkatkan, kemampuan untuk menampilkan argumen fungsi telah ditambahkan ke perintah β€œ\df”, dan statistik yang ditampilkan telah diperluas ke perintah β€œ\dX”.
  • Dimungkinkan untuk menetapkan hak istimewa baca-saja atau tulis-saja kepada pengguna. Hak istimewa dapat diatur pada masing-masing tabel, tampilan, dan skema menggunakan peran pg_read_all_data dan pg_write_all_data yang telah ditentukan sebelumnya. MEMBERIKAN pg_read_all_data KEPADA pengguna1;
  • Instalasi baru secara default menggunakan otentikasi kata sandi menggunakan SCRAM-SHA-256, bukan md5 (parameter "password_encryption" saat membuat postgresql.conf sekarang disetel ke 'scram-sha-256').

Sumber: opennet.ru

Tambah komentar