Melepas dan Memasang Partisi
Gunakan ATTACH PARTITION dan DETACH PARTITION untuk memasukkan dan mengeluarkan partisi tanpa memblokir pembacaan
Melepas dan Memasang Partisi adalah pelajaran SQL Academy gratis di CoddyKit. Ini adalah pelajaran 3 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.
Mengapa DETACH?
Anda dapat mengeluarkan partisi lama dari tabel aktif tanpa menghapus datanya. Penggunaan umum:
- Arsipkan ke database terpisah
- Pindahkan ke penyimpanan yang lebih murah
- Pola cadangkan lalu hapus
DETACH PARTITION
Menghapus partisi dari induknya, tetapi tetap mempertahankan datanya:
ALTER TABLE events DETACH PARTITION events_2022;
-- events_2022 is now a standalone table.
-- Queries on events no longer see those rows.DETACH CONCURRENTLY (PG 14+)
Menghindari kunci ACCESS EXCLUSIVE:
ALTER TABLE events DETACH PARTITION events_2022 CONCURRENTLY;
-- Two-step: detach pending, then finalize. App writes continue.Mengarsipkan Partisi yang Dilepas
Setelah dilepas:
-- Backup with pg_dump:
pg_dump --table=events_2022 mydb > events_2022.sql
-- Move to a cold-storage Postgres or S3:
psql cold_db < events_2022.sql
-- Then drop from primary:
DROP TABLE events_2022;ATTACH PARTITION
Menambahkan tabel yang sudah ada sebagai partisi baru:
CREATE TABLE events_2025 (LIKE events INCLUDING ALL);
-- Load data with COPY or INSERT ... SELECT
ALTER TABLE events ATTACH PARTITION events_2025
FOR VALUES FROM ('2025-01-01') TO ('2026-01-01');Validasi Selama ATTACH
ATTACH memindai partisi baru untuk memastikan setiap baris sesuai dengan batas FOR VALUES. Hindari pemindaian ini dengan menambahkan batasan CHECK yang sesuai sebelum melakukan attach:
ALTER TABLE events_2025
ADD CONSTRAINT events_2025_ts_check
CHECK (ts >= '2025-01-01' AND ts < '2026-01-01');
ALTER TABLE events ATTACH PARTITION events_2025
FOR VALUES FROM ('2025-01-01') TO ('2026-01-01');
-- No scan needed; PG trusts the CHECK.Jendela Waktu Bergulir
Gulirkan waktu ke depan setiap minggu atau bulan: buat partisi berikutnya terlebih dahulu, lalu hapus partisi tertua:
BEGIN;
CREATE TABLE events_2024_q4 PARTITION OF events FOR VALUES FROM ('2024-10-01') TO ('2025-01-01');
DROP TABLE events_2023_q4;
COMMIT;Mengganti Tingkat Penyimpanan
Lepaskan sebuah partisi, jalankan ALTER TABLE … SET TABLESPACE untuk memindahkannya ke penyimpanan yang lebih lambat, lalu attach kembali:
ALTER TABLE events DETACH PARTITION events_2022;
ALTER TABLE events_2022 SET TABLESPACE archive_disk;
ALTER TABLE events ATTACH PARTITION events_2022 FOR VALUES FROM ('2022-01-01') TO ('2023-01-01');Indeks pada Partisi yang Di-attach
Agar dapat di-attach, indeks partisi harus sesuai dengan indeks induknya. PG dapat membuat indeks yang belum ada secara otomatis selama ATTACH pada PG 14+.
Pertukaran Partisi Atomik
Bungkus DETACH + ATTACH dalam sebuah transaksi untuk menukar isi partisi secara atomik. Pola umum untuk "membangun partisi baru secara luring, lalu menggantinya":
BEGIN;
ALTER TABLE events DETACH PARTITION events_2024_q1;
ALTER TABLE events ATTACH PARTITION events_2024_q1_new
FOR VALUES FROM ...;
COMMIT;Kinerja
DETACH dan ATTACH adalah operasi katalog—berlangsung seketika jika batasan sudah ditetapkan sebelumnya. Trik batasan CHECK sangat penting pada skala besar.
Rangkuman
Detach/attach adalah senjata rahasia pemartisian untuk pemeliharaan daring.
- DETACH PARTITION CONCURRENTLY untuk penghapusan secara daring
- Batasan CHECK sebelum attach melewati pemindaian validasi
- Menukar, mengarsipkan, dan memindahkan tingkat penyimpanan
- Atomik dengan BEGIN/COMMIT
Pemeriksaan Singkat
Bagaimana cara menghindari pemindaian seluruh tabel saat menjalankan ATTACH PARTITION?
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Melepas dan Memasang Partisi” gratis?
Ya — teks lengkap “Melepas dan Memasang Partisi” 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 “Melepas dan Memasang Partisi”?
Gunakan ATTACH PARTITION dan DETACH PARTITION untuk memasukkan dan mengeluarkan partisi tanpa memblokir pembacaan 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 3 dari 4.
Berapa lama pelajaran “Melepas dan Memasang Partisi” 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