PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Apa yang Baru di PostgreSQL 12

Pada tanggal 3 Oktober 2019, versi baru dari database open source paling canggih di dunia telah dirilis. PostgreSQL 12 sekarang tersedia dengan peningkatan penting pada kinerja kueri (terutama pada kumpulan data yang lebih besar dan pemanfaatan ruang secara keseluruhan) di antara fitur-fitur penting lainnya.

Di blog ini kita akan melihat fitur-fitur baru ini dan menunjukkan cara mendapatkan dan menginstal PostgreSQL 12 versi baru ini. Kami juga akan mempelajari beberapa pertimbangan untuk dipertimbangkan saat meningkatkan versi.

Fitur dan Peningkatan PostgreSQL 12

Mari kita mulai menyebutkan beberapa fitur dan peningkatan terpenting dari versi PostgreSQL baru ini.

Pengindeksan

  • Ada pengoptimalan untuk pemanfaatan ruang dan kinerja baca/tulis untuk indeks B-Tree.
  • Pengurangan overhead WAL untuk pembuatan indeks GiST, GIN, dan SP-GiST.
  • Anda dapat melakukan kueri K-nearest neighbor dengan operator jarak (<->) menggunakan indeks SP-GiST.
  • Bangun ulang indeks tanpa memblokir penulisan ke indeks melalui perintah REINDEX CONCURRENTLY, yang memungkinkan pengguna menghindari skenario waktu henti untuk pembuatan ulang indeks yang panjang.

Mempartisi

  • Ada peningkatan pada kueri pada tabel yang dipartisi, terutama untuk tabel dengan ribuan partisi yang hanya perlu mengambil data dari subset terbatas.
  • Peningkatan kinerja untuk menambahkan data ke tabel yang dipartisi dengan INSERT dan COPY.
  • Anda akan dapat melampirkan partisi baru ke tabel tanpa memblokir kueri.

SQL

  • Sekarang Anda dapat menjalankan kueri pada dokumen JSON menggunakan ekspresi jalur JSON yang ditentukan dalam standar SQL/JSON dan mereka dapat memanfaatkan mekanisme pengindeksan yang ada untuk dokumen yang disimpan dalam format JSONB untuk mengambil data secara efisien.
  • DENGAN kueri sekarang dapat secara otomatis disejajarkan oleh PostgreSQL 12 (jika tidak rekursif, tidak memiliki efek samping, dan hanya direferensikan sekali di bagian kueri selanjutnya), yang pada gilirannya dapat membantu meningkatkan kinerja dari banyak kueri yang ada.
  • Memperkenalkan "kolom yang dibuat". Jenis kolom ini menghitung nilainya dari konten kolom lain dalam tabel yang sama. Menyimpan nilai yang dihitung ini pada ini juga didukung.

Internasionalisasi

  • PostgreSQL 12 memperluas dukungannya terhadap susunan ICU dengan mengizinkan pengguna untuk menentukan "pengumpulan nondeterministik" yang dapat, misalnya, memungkinkan perbandingan peka huruf besar/kecil atau tidak peka aksen.

Otentikasi

  • Memperkenalkan enkripsi sisi klien dan server untuk autentikasi melalui antarmuka GSSAPI.
  • Layanan PostgreSQL dapat menemukan server LDAP jika dikompilasi dengan OpenLDAP.
  • Otentikasi multi-faktor, menggunakan opsi clientcert=verify-full dan metode otentikasi tambahan yang dikonfigurasi dalam file pg_hba.conf.

Jika Anda ingin memanfaatkan fitur dan peningkatan baru ini, Anda dapat membuka halaman unduhan dan mendapatkan versi PostgreSQL terakhir. Jika Anda memerlukan pengaturan HA, berikut adalah blog untuk menunjukkan cara menginstal dan mengonfigurasi PostgreSQL untuk HA.

Cara Menginstal PostgreSQL 12

Untuk contoh ini, kita akan menggunakan CentOS7 sebagai sistem operasinya. Jadi, kita perlu pergi ke situs pengunduhan OS berbasis RedHat dan menginstal versi yang sesuai.

$ yum install https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm

Ini akan menginstal repositori PostgreSQL dengan paket stabil, pengujian, dan sumber.

$ head /etc/yum.repos.d/pgdg-redhat-all.repo

# PGDG Red Hat Enterprise Linux / CentOS stable repositories:

[pgdg12]

name=PostgreSQL 12 for RHEL/CentOS $releasever - $basearch

baseurl=https://download.postgresql.org/pub/repos/yum/12/redhat/rhel-$releasever-$basearch

enabled=1

gpgcheck=1

gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-PGDG

...

Kemudian, instal paket klien dan server PostgreSQL12. Ini akan menginstal beberapa dependensi python.

$ yum install postgresql12 postgresql12-server

Sekarang, Anda dapat menginisialisasi database PostgreSQL 12 baru Anda.

$ /usr/pgsql-12/bin/postgresql-12-setup initdb

Initializing database ... OK

Dan aktifkan/mulai layanan PostgreSQL.

$ systemctl enable postgresql-12

Created symlink from /etc/systemd/system/multi-user.target.wants/postgresql-12.service to /usr/lib/systemd/system/postgresql-12.service.

$ systemctl start postgresql-12

Dan hanya itu. Anda memiliki dan menjalankan versi PostgreSQL baru.

$ psql

psql (12.0)

Type "help" for help.

postgres=# select version();

                                                 version

---------------------------------------------------------------------------------------------------------

 PostgreSQL 12.0 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-39), 64-bit

(1 row)

Sekarang Anda telah menginstal versi PostgreSQL terakhir, Anda dapat memigrasikan data Anda ke node database baru ini.

Meningkatkan ke PostgreSQL 12

Jika Anda ingin meningkatkan versi PostgreSQL Anda saat ini ke versi baru ini, Anda memiliki tiga opsi utama yang akan melakukan tugas ini.

  • pg_dump :Ini adalah alat pencadangan logis yang memungkinkan Anda membuang data dan memulihkannya dalam versi PostgreSQL yang baru. Di sini Anda akan memiliki periode waktu henti yang akan bervariasi sesuai dengan ukuran data Anda. Anda perlu menghentikan sistem atau menghindari data baru di master node, jalankan pg_dump, pindahkan dump yang dihasilkan ke node database baru dan pulihkan. Selama waktu ini, Anda tidak dapat menulis ke database master PostgreSQL untuk menghindari inkonsistensi data.
  • Pg_upgrade :Ini adalah alat PostgreSQL untuk meningkatkan versi PostgreSQL Anda di tempat. Ini bisa berbahaya di lingkungan produksi dan kami tidak merekomendasikan metode ini dalam kasus itu. Dengan menggunakan metode ini, Anda juga akan mengalami downtime, tetapi mungkin akan jauh lebih sedikit daripada menggunakan metode pg_dump sebelumnya.
  • Replikasi Logis :Sejak PostgreSQL 10 Anda telah dapat menggunakan metode replikasi ini yang memungkinkan Anda untuk melakukan pemutakhiran versi utama dengan waktu henti nol (atau hampir nol). Dengan cara ini, Anda dapat menambahkan node siaga di versi PostgreSQL terakhir, dan ketika replikasi terbaru, Anda dapat melakukan proses failover untuk mempromosikan node PostgreSQL baru.

Pertimbangan Sebelum Meningkatkan ke PostgreSQL 12

Secara umum, untuk semua proses upgrade, dan di semua teknologi, ada beberapa hal yang perlu diperhatikan. Mari kita lihat beberapa yang utama.

  • Tipe data abstime, reltime, dan tinterval telah dihapus.
  • Pengaturan recovery.conf dimasukkan ke dalam file postgresql.conf dan tidak lagi digunakan. Jika Anda telah membuat file ini, server tidak akan mulai. File recovery.signal dan standby.signal sekarang digunakan untuk beralih ke mode non-primer. Setelan trigger_file telah diubah namanya menjadi promote_trigger_file dan setelan standby_mode telah dihapus.
  • Beberapa spesifikasi recovery_target yang bertentangan tidak diperbolehkan.
  • Spesifikasi “-f” untuk mengirim konten dump ke output standar diperlukan di pg_restore.
  • Panjang entri indeks maksimum dikurangi delapan byte dalam indeks B-Tree, untuk meningkatkan penanganan entri duplikat. Operasi REINDEX pada indeks pg_upgrade'd dari versi sebelumnya bisa gagal.
  • DROP IF EXISTS FUNCTION/PROCEDURE/AGGREGATE/ROUTINE menghasilkan kesalahan jika tidak ada daftar argumen yang diberikan dan ada beberapa objek yang cocok.

Untuk informasi lebih detail tentang fitur dan pertimbangan PostgreSQL 12 baru sebelum bermigrasi ke sana, Anda dapat merujuk ke halaman web Catatan Rilis Resmi.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PostgreSQL Terbalik SEPERTI

  2. Temukan objek dependen untuk tabel atau tampilan

  3. Django ConnectionAbortedError:[WinError 10053] Koneksi yang dibuat dibatalkan oleh perangkat lunak di mesin host Anda

  4. Nama kolom PL/pgSQL sama dengan variabel

  5. Mengimpor file .sql di windows ke postgresql