Mengapa Melakukan Partisi: Pruning, Pemeliharaan
Pahami manfaat partisi: pruning kueri, VACUUM yang lebih cepat, dan pengarsipan yang lebih mudah
Mengapa Melakukan Partisi: Pruning, Pemeliharaan adalah pelajaran SQL Academy gratis di CoddyKit. Ini adalah pelajaran 1 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar SQL Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus SQL Academy mencakup 4 pelajaran total.
Apa Itu Pemartisian?
Memecah satu tabel logis menjadi banyak tabel fisik (partisi), yang masing-masing menyimpan sebagian baris. Query hanya memindai partisi yang relevan.
Mengapa Perlu?
Tabel besar menimbulkan masalah:
- Indeks membesar, pencarian menjadi lebih lambat
- VACUUM membutuhkan waktu berjam-jam
- Pencadangan menjadi lambat
- Beberapa query melakukan pemindaian yang tidak perlu
Pemartisian mengatasi keempat masalah tersebut.
Pemangkasan Partisi
Perencana dapat SKIP partisi yang tidak mungkin cocok dengan klausa WHERE:
EXPLAIN SELECT * FROM events
WHERE ts >= '2024-03-01' AND ts < '2024-04-01';
-- Only March partition scanned; older partitions skipped.
-- Plan rows: 1M, not 100B.Kapan Harus Menggunakan Partisi
Gunakan partisi ketika:
- Ukuran tabel berada pada kisaran 100+ GB
- Anda memiliki kunci partisi alami, seperti tanggal, penyewa, atau wilayah
- Sebagian besar query menyaring berdasarkan kunci tersebut
- Data lama dapat diarsipkan atau dihapus
Kapan TIDAK Harus Menggunakan Partisi
Jangan menggunakan partisi hanya karena terdengar menarik:
- Tabel berukuran di bawah beberapa GB tidak mendapatkan manfaat
- Jika query tidak menyaring berdasarkan kunci partisi, Anda mendapatkan NO pemangkasan
- Menambah kompleksitas operasional, yaitu pengelolaan partisi
Strategi Pemartisian
PostgreSQL mendukung tiga strategi:
- Rentang — partisi mencakup rentang nilai, seperti tanggal dan id
- Daftar — partisi menyimpan nilai tertentu, seperti negara dan penyewa
- Hash — penghashan modular untuk distribusi yang merata
Penghapusan Murah
Menghapus partisi berlangsung seketika — tanpa penghapusan baris demi baris:
DROP TABLE events_2023;
-- 100GB gone in milliseconds, no VACUUM aftermath.Pemeliharaan yang Lebih Mudah
VACUUM, REINDEX, dan ANALYZE beroperasi per partisi. Jendela pemeliharaan dapat disisipkan di antara partisi, tanpa memerlukan satu kelompok pekerjaan raksasa.
Indeks yang Lebih Kecil per Partisi
Setiap partisi memiliki indeksnya sendiri. B-tree pada partisi berukuran 1GB memiliki lebih sedikit tingkat daripada pada partisi berukuran 1TB — pencarian menjadi lebih cepat.
Pemartisian Adalah Alat, Bukan Solusi Ajaib
Anda tidak memperoleh kinerja secara cuma-cuma — Anda memperoleh pemangkasan untuk query yang menyaring berdasarkan kunci partisi, serta pemeliharaan yang lebih mudah. Jika hal tersebut tidak berlaku, Anda hanya menambah kompleksitas.
Pemartisian Native PostgreSQL (Deklaratif)
Tersedia sejak PG 10. Setiap partisi adalah tabel nyata:
CREATE TABLE events (
id BIGSERIAL,
ts TIMESTAMPTZ NOT NULL,
user_id BIGINT,
data JSONB
) PARTITION BY RANGE (ts);
CREATE TABLE events_2024_01 PARTITION OF events
FOR VALUES FROM ('2024-01-01') TO ('2024-02-01');Sebelum PG10: Pemartisian dengan Pewarisan
Sistem lama menggunakan pewarisan tabel dan pemicu. Hindari pendekatan ini untuk kode baru — pemartisian deklaratif lebih sederhana dan cepat.
Rangkuman
Pemartisian sangat bermanfaat pada tabel besar yang dikelompokkan berdasarkan waktu atau dipisahkan berdasarkan penyewa.
- Pemangkasan melewati partisi yang tidak relevan
- Pemeliharaan per partisi lebih cepat
- DROP TABLE menggantikan DELETE sebesar 100GB
- Bukan solusi ajaib — hanya membantu jika query sesuai dengan kunci partisi
Pemeriksaan Singkat
Anda mempartisi tabel berdasarkan bulan dan menjalankan SELECT * FROM events WHERE country = 'US' tanpa penyaring tanggal. Apakah pemartisian membantu?
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Mengapa Melakukan Partisi: Pruning, Pemeliharaan” gratis?
Ya — teks lengkap “Mengapa Melakukan Partisi: Pruning, Pemeliharaan” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus SQL Academy, upgrade ke CoddyKit PRO. Kursus SQL Academy mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Mengapa Melakukan Partisi: Pruning, Pemeliharaan”?
Pahami manfaat partisi: pruning kueri, VACUUM yang lebih cepat, dan pengarsipan yang lebih mudah Kamu berlatih SQL Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai SQL Academy?
Tidak diperlukan pengalaman sebelumnya. SQL Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 1 dari 4.
Berapa lama pelajaran “Mengapa Melakukan Partisi: Pruning, Pemeliharaan” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran SQL Academy ini?
Ya. Setiap pelajaran SQL Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Mengapa Melakukan Partisi: Pruning, Pemeliharaan
- Partisi Rentang, Daftar, dan Hash
- Melepas dan Memasang Partisi
- Membuat Kueri Lintas Partisi secara Efisien