PostgreSQL 11: Evolusi pembahagian daripada Postgres 9.6 kepada Postgres 11

Selamat hari Jumaat semua! Semakin sedikit masa yang tinggal sebelum kursus dilancarkan "DBMS Perkaitan", jadi hari ini kami berkongsi terjemahan bahan berguna lain mengenai topik tersebut.

Pada peringkat pembangunan PostgreSQL 11 Terdapat beberapa kerja mengagumkan yang dilakukan untuk menambah baik pembahagian jadual. Meja pembahagian - ini adalah fungsi yang wujud dalam PostgreSQL untuk masa yang agak lama, tetapi ia, boleh dikatakan, pada dasarnya tidak wujud sehingga versi 10, di mana ia menjadi fungsi yang sangat berguna. Kami sebelum ini menyatakan bahawa pewarisan jadual ialah pelaksanaan pembahagian kami, dan ini adalah benar. Hanya kaedah ini yang memaksa anda melakukan kebanyakan kerja secara manual. Sebagai contoh, jika anda mahu tupel dimasukkan ke dalam bahagian semasa INSERT, anda perlu mengkonfigurasi pencetus untuk melakukan ini untuk anda. Pembahagian melalui pewarisan adalah sangat perlahan dan sukar untuk membangunkan fungsi tambahan di atasnya.

Dalam PostgreSQL 10, kami melihat kelahiran "pemisahan deklaratif," ciri yang direka untuk menyelesaikan banyak masalah yang tidak dapat diselesaikan menggunakan kaedah warisan lama. Ini membawa kepada alat yang lebih berkuasa yang membolehkan kami memisahkan data secara mendatar!

Perbandingan ciri

PostgreSQL 11 memperkenalkan set ciri baharu yang mengagumkan yang membantu meningkatkan prestasi dan menjadikan jadual pembahagian lebih telus kepada aplikasi.

PostgreSQL 11: Evolusi pembahagian daripada Postgres 9.6 kepada Postgres 11
PostgreSQL 11: Evolusi pembahagian daripada Postgres 9.6 kepada Postgres 11
PostgreSQL 11: Evolusi pembahagian daripada Postgres 9.6 kepada Postgres 11
1. Menggunakan Pengecualian Mengehadkan
2. Hanya menambah nod
3. Hanya untuk jadual yang dipisahkan yang merujuk kepada jadual yang tidak dipisahkan
4. Indeks mesti mengandungi semua lajur utama partition
5. Sekatan seksyen di kedua-dua belah pihak mesti sepadan

Produktiviti

Kami juga ada berita baik di sini! Kaedah baru ditambah memadam bahagian. Algoritma baharu ini boleh menentukan bahagian yang sesuai dengan melihat keadaan pertanyaan WHERE. Algoritma sebelumnya, seterusnya, menyemak setiap bahagian untuk menentukan sama ada ia boleh memenuhi syarat WHERE. Ini menyebabkan penambahan masa perancangan tambahan apabila bilangan bahagian bertambah.

Dalam 9.6, dengan pembahagian melalui warisan, penghalaan tupel ke dalam partition biasanya dilakukan dengan menulis fungsi pencetus yang mengandungi satu siri pernyataan IF untuk memasukkan tupel ke dalam partition yang betul. Fungsi ini boleh menjadi sangat lambat untuk dilaksanakan. Dengan pembahagian deklaratif ditambah dalam versi 10, ini berfungsi dengan lebih pantas.

Menggunakan jadual pembahagian dengan 100 sekatan, kita boleh menilai prestasi memuatkan 10 juta baris ke dalam jadual dengan 1 lajur BIGINT dan 5 lajur INT.

PostgreSQL 11: Evolusi pembahagian daripada Postgres 9.6 kepada Postgres 11

Prestasi menanyakan jadual ini untuk mencari satu rekod yang diindeks dan melaksanakan DML untuk memanipulasi satu rekod (menggunakan hanya 1 pemproses):

PostgreSQL 11: Evolusi pembahagian daripada Postgres 9.6 kepada Postgres 11

Di sini kita dapat melihat bahawa prestasi setiap operasi telah meningkat dengan ketara sejak PG 9.6. Permintaan SELECT kelihatan lebih baik, terutamanya yang mampu mengecualikan berbilang partition semasa perancangan pertanyaan. Ini bermakna penjadual boleh melangkau banyak kerja yang sepatutnya dilakukan sebelum ini. Sebagai contoh, laluan tidak lagi dibina untuk bahagian yang tidak perlu.

Kesimpulan

Pembahagian jadual mula menjadi ciri yang sangat berkuasa dalam PostgreSQL. Ia membolehkan anda memaparkan data dalam talian dengan pantas dan membawanya ke luar talian tanpa menunggu operasi DML yang perlahan dan besar-besaran selesai.. Ini juga bermakna data berkaitan boleh disimpan bersama, bermakna data yang anda perlukan boleh diakses dengan lebih cekap. Penambahbaikan yang dibuat dalam versi ini tidak akan dapat dicapai tanpa pembangun, penyemak dan pelaksana yang bekerja tanpa jemu pada semua ciri ini.
Terima kasih kepada mereka semua! PostgreSQL 11 kelihatan hebat!

Berikut adalah artikel yang ringkas tetapi cukup menarik. Kongsi komen anda dan jangan lupa untuk mendaftar Hari terbuka, di mana program kursus akan digariskan secara terperinci.

Sumber: www.habr.com

Tambah komen