Keluaran PostgreSQL 12

Pasukan PostgreSQL telah mengumumkan keluaran PostgreSQL 12, versi terkini sistem pengurusan pangkalan data hubungan sumber terbuka.
PostgreSQL 12 telah meningkatkan prestasi pertanyaan dengan ketara - terutamanya apabila bekerja dengan jumlah data yang besar, dan juga telah mengoptimumkan penggunaan ruang cakera secara umum.

Ciri baharu termasuk:

  • pelaksanaan bahasa pertanyaan Laluan JSON (bahagian terpenting dalam standard SQL/JSON);
  • pengoptimuman pelaksanaan ungkapan jadual biasa (WITH);
  • sokongan untuk lajur yang dijana

Komuniti juga terus mengusahakan pengembangan dan kebolehpercayaan PostgreSQL, membangunkan sokongan untuk pengantarabangsaan, keupayaan pengesahan dan menyediakan cara yang lebih mudah untuk mentadbir sistem.

Keluaran ini termasuk pelaksanaan antara muka untuk enjin storan boleh pasang, yang kini membolehkan pembangun mencipta kaedah penyimpanan data mereka sendiri.

Peningkatan prestasi

PostgreSQL 12 merangkumi peningkatan prestasi dan penyelenggaraan yang ketara untuk sistem pengindeksan dan pembahagian.

Indeks B-tree, jenis pengindeksan standard dalam PostgreSQL, telah dioptimumkan dalam versi 12 untuk beban kerja yang melibatkan pengubahsuaian indeks yang kerap. Menggunakan penanda aras TPC-C untuk PostgreSQL 12 menunjukkan purata pengurangan 40% dalam penggunaan ruang dan peningkatan keseluruhan dalam prestasi pertanyaan.

Pertanyaan terhadap jadual terbahagi telah menerima peningkatan yang ketara, terutamanya untuk jadual yang terdiri daripada beribu-ribu partition yang memerlukan kerja dengan bahagian tatasusunan data yang terhad sahaja. Prestasi menambah data pada jadual terbahagi menggunakan INSERT dan COPY telah dipertingkatkan, serta keupayaan untuk melampirkan partition baharu tanpa menyekat pertanyaan.

PostgreSQL 12 telah membuat penambahbaikan tambahan pada pengindeksan yang memberi kesan kepada prestasi keseluruhan, termasuk:

  • overhed dikurangkan apabila menjana WAL untuk jenis indeks GiST, GIN dan SP-GIST;
  • keupayaan untuk mencipta apa yang dipanggil indeks penutup (MASUK klausa) pada indeks GiST;
  • keupayaan untuk melakukan pertanyaan "jiran terdekat" (carian k-NN) menggunakan pengendali jarak (<->) dan menggunakan indeks SP-GiST;
  • sokongan untuk mengumpul statistik nilai paling biasa (MCV) menggunakan CREATE STATISTICS, yang membantu mendapatkan rancangan pertanyaan yang lebih baik apabila menggunakan lajur yang nilainya diagihkan secara tidak sekata.

Penyusunan JIT menggunakan LLVM, yang diperkenalkan dalam PostgreSQL 11, kini didayakan secara lalai. Penyusunan JIT meningkatkan prestasi apabila bekerja dengan ungkapan dalam klausa WHERE, senarai sasaran, agregat dan beberapa operasi dalaman. Ia tersedia jika anda telah menyusun PostgreSQL dengan LLVM atau menggunakan pakej PostgreSQL yang dibina dengan LLVM didayakan.

Penambahbaikan kepada keupayaan bahasa SQL dan keserasian standard

PostgreSQL 12 memperkenalkan keupayaan untuk menanyakan dokumen JSON menggunakan ungkapan laluan JSON yang ditakrifkan dalam standard SQL/JSON. Pertanyaan sedemikian boleh memanfaatkan mekanisme pengindeksan sedia ada untuk dokumen yang disimpan dalam format JSONB untuk mendapatkan data dengan cekap.

Ungkapan jadual biasa, juga dikenali sebagai pertanyaan WITH, kini boleh dilaksanakan secara automatik menggunakan penggantian dalam PostgreSQL 12, yang seterusnya boleh membantu meningkatkan prestasi banyak pertanyaan sedia ada. Dalam versi baharu, bahagian penggantian pertanyaan WITH hanya boleh dilaksanakan jika ia tidak rekursif, tiada kesan sampingan dan dirujuk sekali sahaja dalam bahagian pertanyaan berikutnya.

PostgreSQL 12 memperkenalkan sokongan untuk "lajur yang dihasilkan". Diterangkan dalam standard SQL, jenis lajur ini mengira nilai berdasarkan kandungan lajur lain dalam jadual yang sama. Dalam versi ini, PostgreSQL menyokong "lajur terjana yang disimpan", di mana nilai yang dikira disimpan pada cakera.

Pengantarabangsaan

PostgreSQL 12 memperluaskan sokongan untuk pengumpulan ICU dengan membenarkan pengguna mentakrifkan "pengumpulan bukan penentu" yang boleh, sebagai contoh, membenarkan perbandingan tidak sensitif huruf besar atau tidak sensitif aksen.

Pengesahan

PostgreSQL mengembangkan sokongannya untuk kaedah pengesahan yang kukuh dengan beberapa peningkatan yang menyediakan keselamatan dan kefungsian tambahan. Keluaran ini memperkenalkan penyulitan sisi klien dan sisi pelayan untuk pengesahan melalui antara muka GSSAPI, serta keupayaan untuk PostgreSQL menemui pelayan LDAP apabila PostgreSQL disusun dengan OpenLDAP.

Selain itu, PostgreSQL 12 kini menyokong pilihan pengesahan berbilang faktor. Pelayan PostgreSQL kini boleh meminta klien untuk menyediakan sijil SSL yang sah dengan nama pengguna yang sepadan menggunakan clientcert=verify-full, dan menggabungkannya dengan keperluan kaedah pengesahan yang berasingan (cth. scram-sha-256).

Pentadbiran

PostgreSQL 12 memperkenalkan keupayaan untuk melakukan binaan semula indeks tanpa sekatan menggunakan arahan REINDEX CONCURRENTLY. Ini membolehkan pengguna mengelakkan masa henti DBMS semasa pembinaan semula indeks yang panjang.

Selain itu, dalam PostgreSQL 12, anda boleh mendayakan atau melumpuhkan jumlah semak halaman dalam kelompok penutupan menggunakan perintah pg_checksums. Sebelum ini, jumlah semak halaman, ciri yang membantu mengesahkan integriti data yang disimpan pada cakera, hanya boleh didayakan apabila kluster PostgreSQL dimulakan menggunakan initdb.

Sumber: linux.org.ru

Tambah komen