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

Apa yang baru di PostgreSQL 13?

PostgreSQL, juga dikenal sebagai database open source tercanggih di dunia, memiliki versi rilis baru sejak 24 September 2020 lalu, dan sekarang sudah matang, kita dapat memeriksa apa yang baru di sana untuk mulai memikirkan rencana migrasi. PostgreSQL 13 tersedia dengan banyak fitur dan peningkatan baru. Di blog ini, kami akan menyebutkan beberapa fitur baru ini dan melihat cara menerapkan atau meningkatkan versi PostgreSQL Anda saat ini.

PostgreSQL 13 Fitur dan Peningkatan Baru

Mari kita mulai menyebutkan beberapa fitur baru dan peningkatan versi PostgreSQL 13 ini yang dapat Anda lihat di Dokumentasi Resmi.

Mempartisi

  • Izinkan pemangkasan partisi dan penggabungan partisi terjadi di lebih banyak kasus

  • Mendukung tingkat baris SEBELUM memicu pada tabel yang dipartisi

  • Izinkan tabel yang dipartisi untuk direplikasi secara logis melalui publikasi

  • Izinkan replikasi logis ke dalam tabel yang dipartisi pada pelanggan

  • Izinkan variabel seluruh baris digunakan dalam ekspresi partisi

Indeks

  • Menyimpan duplikat dengan lebih efisien dalam indeks B-tree

  • Izinkan indeks GiST dan SP-GiST pada kolom kotak untuk mendukung ORDER BY kotak <-> kueri titik

  • Izinkan indeks GIN untuk menangani ! (BUKAN) klausa dalam pencarian tsquery

  • Izinkan kelas operator indeks untuk mengambil parameter

Pengoptimal

  • Meningkatkan estimasi selektivitas pengoptimal untuk operator penahanan/pencocokan

  • Izinkan pengaturan target statistik untuk statistik yang diperluas

  • Izinkan penggunaan beberapa objek statistik yang diperluas dalam satu kueri

  • Izinkan penggunaan objek statistik yang diperluas untuk klausa OR dan daftar konstan IN/ANY

  • Izinkan fungsi dalam klausa FROM ditarik ke atas (sebaris) jika dievaluasi ke konstanta

Kinerja

  • Menerapkan pengurutan inkremental dan meningkatkan kinerja pengurutan nilai inet

  • Izinkan agregasi hash menggunakan penyimpanan disk untuk kumpulan hasil agregasi besar

  • Izinkan penyisipan, tidak hanya pembaruan dan penghapusan, untuk memicu aktivitas penyedot debu di autovacuum

  • Tambahkan parameter maintenance_io_concurrency untuk mengontrol konkurensi I/O untuk operasi pemeliharaan

  • Izinkan penulisan WAL dilewati selama transaksi yang membuat atau menulis ulang relasi, jika wal_level minimal

  • Meningkatkan performa saat memutar ulang perintah DROP DATABASE saat banyak tablespace digunakan 

  • Mempercepat konversi bilangan bulat ke teks

  • Kurangi penggunaan memori untuk string kueri dan skrip ekstensi yang berisi banyak pernyataan SQL

Pemantauan

  • Izinkan EXPLAIN, auto_explain, autovacuum, dan pg_stat_statements untuk melacak statistik penggunaan WAL

  • Izinkan contoh pernyataan SQL, bukan semua pernyataan, untuk dicatat

  • Tambahkan jenis backend ke csvlog dan secara opsional log_line_prefix log output

  • Meningkatkan kontrol pencatatan parameter pernyataan yang disiapkan

  • Tambahkan leader_pid ke pg_stat_activity untuk melaporkan proses pemimpin pekerja paralel

  • Tambahkan tampilan sistem pg_stat_progress_basebackup untuk melaporkan kemajuan streaming backup basis 

  • Tambahkan tampilan sistem pg_stat_progress_analyze untuk melaporkan kemajuan ANALYZE

  • Tambahkan tampilan sistem pg_shmem_allocations untuk menampilkan penggunaan memori bersama

Replikasi Dan Pemulihan

  • Izinkan pengaturan konfigurasi replikasi streaming diubah dengan memuat ulang

  • Izinkan penerima WAL menggunakan slot replikasi sementara saat slot permanen tidak ditentukan

  • Izinkan penyimpanan WAL untuk slot replikasi dibatasi oleh max_slot_wal_keep_size

  • Izinkan promosi siaga untuk membatalkan jeda yang diminta

  • Menghasilkan kesalahan jika pemulihan tidak mencapai target pemulihan yang ditentukan

  • Memungkinkan kontrol atas berapa banyak memori yang digunakan oleh decoding logis sebelum ditumpahkan ke disk

  • Izinkan pemulihan untuk melanjutkan meskipun halaman yang tidak valid dirujuk oleh WAL

Perintah Utilitas

  • Izinkan VACUUM untuk memproses indeks tabel secara paralel

  • Laporkan penggunaan buffer waktu perencanaan dalam output BUFFER EXPLAIN

  • Buat CREATE TABLE LIKE menyebarkan properti NO INHERIT batasan CHECK ke tabel yang dibuat

  • Tambahkan ALTER TABLE ... DROP EXPRESSION untuk mengizinkan penghapusan properti GENERATED dari kolom

  • Tambahkan sintaks ALTER VIEW untuk mengganti nama kolom tampilan

  • Tambahkan opsi ALTER TYPE untuk mengubah properti TOAST dan fungsi dukungan tipe dasar

  • Tambahkan opsi CREATE DATABASE LOCALE

  • Izinkan DROP DATABASE untuk memutuskan sesi menggunakan database target, memungkinkan drop berhasil

Dan masih banyak lagi perubahan lainnya. Kami baru saja menyebutkan beberapa dari mereka untuk menghindari posting blog yang lebih besar. Sekarang, mari kita lihat cara men-deploy versi baru ini.

Cara Menerapkan PostgreSQL 13

Untuk ini, kami akan berasumsi bahwa Anda telah menginstal ClusterControl, jika tidak, Anda dapat mengikuti dokumentasi yang sesuai untuk menginstalnya.

Untuk melakukan penerapan dari ClusterControl, cukup pilih opsi Deploy dan ikuti petunjuk yang muncul.

Saat memilih PostgreSQL, Anda harus menentukan Pengguna, Kunci atau Kata Sandi, dan Port untuk terhubung dengan SSH ke server Anda. Anda juga dapat menambahkan nama untuk cluster baru Anda dan jika Anda ingin ClusterControl menginstal perangkat lunak dan konfigurasi yang sesuai untuk Anda.

Setelah menyiapkan informasi akses SSH, Anda perlu menentukan kredensial basis data , versi, dan datadir (opsional). Anda juga dapat menentukan repositori mana yang akan digunakan.

Pada langkah berikutnya, Anda perlu menambahkan server Anda ke cluster yang akan Anda buat menggunakan Alamat IP atau Hostname.

Pada langkah terakhir, Anda dapat memilih apakah replikasi Anda akan Sinkron atau Tidak sinkron, lalu tekan saja Deploy.

Setelah tugas selesai, Anda dapat melihat klaster PostgreSQL baru di layar ClusterControl utama.

Sekarang Anda telah membuat cluster, Anda dapat melakukan beberapa tugas di dalamnya, seperti menambahkan penyeimbang beban (HAProxy), pengumpul koneksi (PgBouncer), atau slave replikasi baru dari UI ClusterControl yang sama.

Meningkatkan ke PostgreSQL 13

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 di PostgreSQL baru Versi:kapan. 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 node utama, menjalankan pg_dump, memindahkan dump yang dihasilkan ke node database baru, dan memulihkannya. Selama waktu ini, Anda tidak dapat menulis ke database PostgreSQL utama Anda 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 dapat menggunakan metode replikasi ini yang memungkinkan Anda melakukan peningkatan versi utama dengan nol (atau hampir nol) downtime. 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.

Untuk informasi lebih detail tentang fitur PostgreSQL 13 baru, Anda dapat merujuk ke Dokumentasi 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. Menyortir pohon dengan jalur terwujud?

  2. Bagaimana cara memasukkan JSONB ke Postgresql dengan Python?

  3. Bagaimana cara mengubah database ke postgresql dengan Symfony 2.0?

  4. Postgresql :Koneksi ditolak. Periksa apakah nama host dan port sudah benar dan postmaster menerima koneksi TCP/IP

  5. SQLalchemy tidak melakukan perubahan saat mengatur peran