Keluaran DBMS PostgreSQL 14

Selepas setahun pembangunan, cawangan stabil baharu DBMS PostgreSQL 14 telah diterbitkan. Kemas kini untuk cawangan baharu akan dikeluarkan dalam tempoh lima tahun sehingga November 2026.

Inovasi utama:

  • Menambah sokongan untuk mengakses data JSON menggunakan ungkapan seperti tatasusunan: SELECT ('{ "postgres": { "release": 14 }}'::jsonb)['postgres']['release']; PILIH * DARI ujian WHERE butiran['atribut']['saiz'] = '"sederhana"';

    Sintaks yang serupa dilaksanakan untuk data kunci/nilai yang disediakan oleh jenis hstore. Sintaks ini pada mulanya dilaksanakan menggunakan rangka kerja universal, yang pada masa hadapan boleh digunakan untuk jenis lain. Contoh untuk jenis hstore: INSERT INTO mytable VALUES ('a=>b, c=>d'); PILIH h['a'] DARI jadual saya; KEMASKINI SET jadual saya h['c'] = 'baharu';

  • Keluarga jenis untuk menentukan julat telah dikembangkan dengan jenis "berbilang julat" baharu, yang membolehkan anda menentukan senarai tertib julat nilai yang tidak bertindih. Sebagai tambahan kepada setiap jenis julat sedia ada, jenis berbilang julatnya sendiri dicadangkan, contohnya, jenis "int4range" sepadan dengan "int4multirange", dan jenis "daterange" sepadan dengan "datemultirange". Penggunaan jenis baharu memudahkan reka bentuk pertanyaan yang memanipulasi jujukan julat kompleks. PILIH '{[3,7), [8,9)}'::int4multirange; PILIH nummultirange(numrange(1.0, 14.0), numrange(20.0, 25.0));
  • Pengoptimuman telah dibuat untuk meningkatkan prestasi sistem beban tinggi yang memproses sejumlah besar sambungan. Dalam beberapa ujian, peningkatan dua kali ganda dalam prestasi diperhatikan.
  • Kecekapan indeks B-tree telah dipertingkatkan dan masalah dengan pertumbuhan indeks apabila jadual kerap dikemas kini telah diselesaikan.
  • Sokongan tambahan untuk mod sisi pelanggan (dilaksanakan pada peringkat libpq) penghantaran saluran paip permintaan, yang membolehkan anda mempercepatkan senario pangkalan data dengan ketara yang dikaitkan dengan melaksanakan sejumlah besar operasi tulis kecil (INSERT/UPDATE/DELETE) dengan menghantar permintaan seterusnya tanpa menunggu keputusan yang sebelumnya. Mod ini juga membantu mempercepatkan kerja pada sambungan dengan kelewatan penghantaran paket yang lama.
  • Keupayaan dipertingkatkan untuk konfigurasi teragih yang melibatkan berbilang pelayan PostgreSQL. Dalam pelaksanaan replikasi logik, kini menjadi mungkin untuk menghantar transaksi yang sedang berjalan dalam mod penstriman, yang boleh meningkatkan prestasi replikasi transaksi besar dengan ketara. Selain itu, penyahkodan logik data yang diterima semasa replikasi logik telah dioptimumkan.
  • Mekanisme untuk menyambungkan jadual luar Pembungkus Data Asing (postgres_fdw) telah menambah sokongan untuk pemprosesan pertanyaan selari, yang pada masa ini hanya terpakai apabila menyambung ke pelayan PostgreSQL yang lain. postgres_fdw juga menambah sokongan untuk menambah data pada jadual luaran dalam mod kelompok dan keupayaan untuk mengimport jadual yang dipisahkan dengan menyatakan arahan "IMPORT SKEMA LUAR".
  • Pengoptimuman telah dibuat kepada pelaksanaan operasi VACUUM (pengumpulan sampah dan pembungkusan storan cakera). Mod pembersihan kecemasan telah ditambahkan yang melangkau operasi pembersihan yang tidak penting jika syarat pembalut ID transaksi dibuat. Overhed dikurangkan apabila memproses indeks dalam format B-Tree. Pelaksanaan operasi "ANALYZE", yang mengumpul statistik tentang operasi pangkalan data, telah dipercepatkan dengan ketara.
  • Menambah keupayaan untuk mengkonfigurasi kaedah mampatan yang digunakan dalam sistem TOAST, yang bertanggungjawab untuk menyimpan data besar, seperti blok teks atau maklumat geometri. Sebagai tambahan kepada kaedah mampatan pglz, TOAST kini boleh menggunakan algoritma LZ4.
  • Alat untuk memantau operasi DBMS telah diperluaskan. Menambahkan paparan untuk menjejaki kemajuan perintah COPY (pg_stat_progress_copy), statistik tentang slot replikasi (pg_stat_replication_slots) dan aktiviti yang berkaitan dengan log transaksi WAL (pg_stat_wal). Fungsi compute_query_id telah ditambahkan, yang membolehkan pelbagai subsistem, seperti pg_stat_activity dan EXPLAIN VERBOSE, untuk menjejaki permintaan dengan memberikan pengecam unik untuk setiap permintaan.
  • Pengoptimuman telah ditambahkan pada perancang pertanyaan untuk meningkatkan pemprosesan pertanyaan selari dan meningkatkan prestasi pelaksanaan serentak operasi imbasan rekod berurutan, pelaksanaan pertanyaan selari dalam PL/pgSQL menggunakan perintah "RETURN QUERY" dan pelaksanaan pertanyaan selari dalam " SEGARKAN PANDANGAN TERBAHAN”. Untuk meningkatkan prestasi gabungan bersarang kitaran (bergabung), sokongan untuk caching tambahan telah dilaksanakan.
  • Statistik lanjutan kini boleh digunakan untuk mengoptimumkan ungkapan, dan pengisihan tambahan kini boleh digunakan untuk mengoptimumkan fungsi tetingkap.
  • Prosedur tersimpan yang membolehkan anda mengurus urus niaga dalam blok kod kini menyokong penentuan data pemulangan menggunakan parameter "KELUAR".
  • Menambah fungsi date_bin pada nilai cap masa bulat mengikut selang waktu tertentu. SELECT date_bin('15 minit', TIMESTAMP '2020-02-11 15:44:17', TIMESTAMP '2001-01-01'); 2020-02-11 15:30:00
  • Menambah ungkapan SEARCH dan CYCLE yang ditakrifkan dalam standard SQL untuk memudahkan pesanan dan mengenal pasti kitaran dalam Ungkapan Jadual Biasa (CTE) rekursif. DENGAN RECURSIVE search_tree(id, link, data) AS ( SELECT t.id, t.link, t.data FROM tree t UNION ALL SELECT t.id, t.link, t.data FROM tree t, search_tree st WHERE t. id = st.link ) KEDALAMAN CARIAN DULU OLEH id SET ordercol PILIH * DARI search_tree ORDER BY ordercol;
  • Dalam utiliti psql, autocompletion perintah dengan tab telah dipertingkatkan, keupayaan untuk memaparkan hujah fungsi telah ditambahkan pada perintah "\df", dan statistik yang dipaparkan telah dikembangkan kepada perintah "\dX".
  • Adalah mungkin untuk memberikan keistimewaan baca sahaja atau tulis sahaja kepada pengguna. Keistimewaan boleh ditetapkan pada jadual, paparan dan skema individu menggunakan peranan pg_read_all_data dan pg_write_all_data. BERIKAN pg_read_all_data KEPADA pengguna1;
  • Pemasangan baharu lalai kepada pengesahan kata laluan menggunakan SCRAM-SHA-256 dan bukannya md5 (parameter "password_encryption" semasa menjana postgresql.conf kini ditetapkan kepada 'scram-sha-256').

Sumber: opennet.ru

Tambah komen