PostgreSQL 11: Evolusi partisi dari Postgres 9.6 ke Postgres 11

Selamat hari Jumat semuanya! Semakin sedikit waktu tersisa sebelum kursus diluncurkan "DBMS Relasional", jadi hari ini kami membagikan terjemahan materi bermanfaat lainnya tentang topik tersebut.

Pada tahap pengembangan PostgreSQL 11 Ada beberapa pekerjaan mengesankan yang dilakukan untuk meningkatkan partisi tabel. Tabel partisi - ini adalah fungsi yang sudah ada di PostgreSQL untuk waktu yang cukup lama, tetapi, bisa dikatakan, pada dasarnya tidak ada hingga versi 10, yang membuatnya menjadi fungsi yang sangat berguna. Kami sebelumnya menyatakan bahwa pewarisan tabel adalah implementasi partisi kami, dan ini benar. Hanya metode ini yang memaksa Anda melakukan sebagian besar pekerjaan secara manual. Misalnya, jika Anda ingin tupel disisipkan ke dalam bagian selama INSERT, Anda harus mengonfigurasi pemicu untuk melakukan hal ini untuk Anda. Mempartisi melalui pewarisan sangat lambat dan sulit untuk mengembangkan fungsionalitas tambahan.

Di PostgreSQL 10, kami melihat lahirnya β€œpartisi deklaratif”, sebuah fitur yang dirancang untuk menyelesaikan banyak masalah yang tidak dapat diselesaikan menggunakan metode pewarisan lama. Hal ini menghasilkan alat yang jauh lebih canggih yang memungkinkan kami membagi data secara horizontal!

Perbandingan fitur

PostgreSQL 11 memperkenalkan serangkaian fitur baru yang mengesankan yang membantu meningkatkan kinerja dan membuat tabel partisi lebih transparan bagi aplikasi.

PostgreSQL 11: Evolusi partisi dari Postgres 9.6 ke Postgres 11
PostgreSQL 11: Evolusi partisi dari Postgres 9.6 ke Postgres 11
PostgreSQL 11: Evolusi partisi dari Postgres 9.6 ke Postgres 11
1. Menggunakan Pengecualian Pembatas
2. Hanya menambahkan node
3. Hanya untuk tabel yang dipartisi yang merujuk pada tabel yang tidak dipartisi
4. Indeks harus berisi semua kolom kunci dari partisi
5. Batasan bagian pada kedua sisi harus sesuai

Performa

Kami juga punya kabar baik di sini! Metode baru ditambahkan menghapus bagian. Algoritma baru ini dapat menentukan bagian yang sesuai dengan melihat kondisi query WHERE. Algoritma sebelumnya, pada gilirannya, memeriksa setiap bagian untuk menentukan apakah dapat memenuhi kondisi tersebut WHERE. Hal ini mengakibatkan bertambahnya waktu perencanaan seiring bertambahnya jumlah bagian.

Di 9.6, dengan partisi melalui pewarisan, perutean tupel ke dalam partisi biasanya dilakukan dengan menulis fungsi pemicu yang berisi serangkaian pernyataan IF untuk memasukkan tupel ke dalam partisi yang benar. Fungsi-fungsi ini bisa sangat lambat untuk dijalankan. Dengan penambahan partisi deklaratif di versi 10, ini bekerja lebih cepat.

Menggunakan tabel yang dipartisi dengan 100 partisi, kita dapat mengevaluasi kinerja memuat 10 juta baris ke dalam tabel dengan 1 kolom BIGINT dan 5 kolom INT.

PostgreSQL 11: Evolusi partisi dari Postgres 9.6 ke Postgres 11

Kinerja menanyakan tabel ini untuk menemukan satu catatan yang diindeks dan mengeksekusi DML untuk memanipulasi satu catatan (hanya menggunakan 1 prosesor):

PostgreSQL 11: Evolusi partisi dari Postgres 9.6 ke Postgres 11

Di sini kita dapat melihat bahwa kinerja setiap operasi telah meningkat secara signifikan sejak PG 9.6. Permintaan SELECT terlihat jauh lebih baik, terutama yang mampu mengecualikan banyak partisi selama perencanaan kueri. Artinya, penjadwal dapat melewatkan banyak pekerjaan yang seharusnya dilakukan sebelumnya. Misalnya, jalur tidak lagi dibuat untuk bagian yang tidak diperlukan.

Kesimpulan

Partisi tabel mulai menjadi fitur yang sangat kuat di PostgreSQL. Ini memungkinkan Anda menampilkan data online dengan cepat dan menjadikannya offline tanpa menunggu operasi DML yang lambat dan besar selesai.. Ini juga berarti bahwa data terkait dapat disimpan bersama, artinya data yang Anda butuhkan dapat diakses dengan lebih efisien. Perbaikan yang dilakukan pada versi ini tidak akan mungkin terjadi tanpa para pengembang, pengulas, dan pengimplementasi yang bekerja tanpa lelah pada semua fitur ini.
Terima kasih kepada mereka semua! PostgreSQL 11 terlihat fantastis!

Inilah artikel yang singkat namun cukup menarik. Bagikan komentar Anda dan jangan lupa mendaftar Hari terbuka, di mana program kursus akan diuraikan secara rinci.

Sumber: www.habr.com

Tambah komentar