PostgreSQL mendukung fitur partisi pada tabel. Partisi disini mengenai pemecahan atau pembagian sebuah tabel master/tabel utama secara logic menjadi potongan-potongan fisik menjadi lebih kecil.
Partisi dapat memberikan beberapa keuntungan:
- Kinerja query dalam mengeksekusi perintah dapat ditingkatkan.
- Update kinerja dapat ditingkatkan juga, karena setiap potongan tabel memiliki indeks yang lebih kecil daripada indeks pada data yang akan mengatur keseluruhan. Ketika indeks tidak cocok lagi, dengan mudah memori membaca dan menulis operasi pada indeks dengan mengambil akses disk lebih progresif.
- Dalam menghapus data dalam kelompok besar, dapat dicapai hanya dengan menghapus salah satu partisi, jika kebutuhan yang direncanakan dalam desain partisi tabel, DROP tabel jauh lebih cepat daripada DELETE massal.
Manfaat biasanya akan tampak lebih jelas hanya jika tabel dinyatakan dalam jumlah sangat besar.
IMPLEMENTASI RANGE PARTITION TABLE
Untuk dapat lebih memahami mengenai partisi tabel pada postgreSQL, mari kita mengelompokkan nama-nama mahasiswa yang mendapat nilai A, B, dan C berdasarkan range nilai.
- Membuat tabel master
create table mahasiswa(
nim varchar(10) not null primary key,
nama_mahasiswa varchar(50),
nilai_mahasiswa integer
) - Membuat partisi tabel
create table mahasiswa_a(
check (nilai_mahasiswa >= 80 and nilai_mahasiswa <= 100)
)inherits(mahasiswa);
create table mahasiswa_b(
check (nilai_mahasiswa >= 70 and nilai_mahasiswa < 80)
)inherits(mahasiswa);
create table mahasiswa_c(
check (nilai_mahasiswa >= 60 and nilai_mahasiswa < 70)
)inherits(mahasiswa); - Agar data yang disisipkan/diinputkan masuk pada partisi yang sesuai, maka perlu adanya aturan secara kompleks yang mengatur hal ini. Gunakan query seperti berikut:
create rule mahasiswa_insert_nilai_a as
on insert to mahasiswa where
(nilai_mahasiswa >= 80 and nilai_mahasiswa <= 100)
do instead
insert into mahasiswa_a values (new.nim,
new.nama_mahasiswa,
new.nilai_mahasiswa);
create rule mahasiswa_insert_nilai_b as
on insert to mahasiswa where
(nilai_mahasiswa >= 70 and nilai_mahasiswa < 80)
do instead
insert into mahasiswa_b values (new.nim,
new.nama_mahasiswa,
new.nilai_mahasiswa);
create rule mahasiswa_insert_nilai_c as
on insert to mahasiswa where
(nilai_mahasiswa >= 60 and nilai_mahasiswa < 70)
do instead
insert into mahasiswa_c values (new.nim,
new.nama_mahasiswa,
new.nilai_mahasiswa); - Insert data:
insert into mahasiswa values (‘07560242′, ‘Mudafiq Riyan’, 90);
insert into mahasiswa values (‘07560254′, ‘Ivan Prasetya’, 70);
insert into mahasiswa values (‘07560412′, ‘Abbi Yudha’, 85);
insert into mahasiswa values (‘07560212′, ‘Sagara Pratama’, 67); - Pengecekan:
- Keseluruhan data yang telah diinputkan masuk pada tabel master: mahasiswa
select * from mahasiswa
- Data mahasiswa yang mendapat nilai A
select * from mahasiswa_a
- Data mahasiswa yang mendapat nilai B
select * from mahasiswa_b
- Data mahasiswa yang mendapat nilai C
select * from mahasiswa_c
- Keseluruhan data yang telah diinputkan masuk pada tabel master: mahasiswa
Kesimpulan: Partisi tabel ini berfungsi untuk memudahkan penganalisaan data berdasarkan golongan-golongan tertentu. Pada kasus di atas, kita bisa lebih mudah menganalisa mahasiswa siapa saja yang mendapat nilai A, B, dan C. Sehingga ketika ada data baru yang diinputkan, secara otomatis, data akan langsung diseleksi dan masuk pada partisi yang ditetapkan.
Tidak ada komentar:
Posting Komentar