SQL Academy · Pelajaran

Mengapa Membahagi: Pemangkasan, Penyelenggaraan

Fahami manfaat pembahagian: pemangkasan pertanyaan, VACUUM yang lebih pantas dan pengarkiban yang lebih mudah.

Pelajaran 1 daripada 414 langkah

Mengapa Membahagi: Pemangkasan, Penyelenggaraan ialah pelajaran SQL Academy percuma di CoddyKit. Ini ialah pelajaran 1 daripada 4. Anda boleh membaca keseluruhan pelajaran di bawah secara percuma — kemudian berlatih secara praktikal dalam pelayar menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran SQL Academy, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus SQL Academy merangkumi sejumlah 4 pelajaran.

Apakah Itu Pempartisan?

Memecahkan satu jadual logik kepada banyak jadual fizikal (partisyen), yang setiap satunya menyimpan subset baris. Query hanya mengimbas partisyen yang berkaitan.

Mengapa Perlu?

Jadual besar menimbulkan masalah:

  • Indeks menjadi sangat besar dan carian menjadi lebih perlahan
  • VACUUM mengambil masa berjam-jam
  • Sandaran menjadi perlahan
  • Sesetengah query melakukan imbasan yang tidak diperlukan

Pempartisan menangani keempat-empat masalah ini.

Pemangkasan Partisyen

Perancang boleh SKIP partisyen yang tidak mungkin sepadan 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.

Bila Hendak Membuat Partisyen

Buat partisyen apabila:

  • Jadual berada dalam julat 100+ GB
  • Anda mempunyai kunci partisyen semula jadi (tarikh, penyewa, rantau)
  • Kebanyakan query menapis berdasarkan kunci tersebut
  • Data lama boleh diarkibkan atau dibuang

Bila TIDAK Perlu Membuat Partisyen

Jangan buat partisyen hanya kerana ia kedengaran menarik:

  • Jadual yang lebih kecil daripada beberapa GB tidak mendapat manfaat
  • Jika query tidak menapis berdasarkan kunci partisyen, tiada pemangkasan akan berlaku
  • Menambah kerumitan operasi (mengurus partisyen)

Strategi Pempartisan

PostgreSQL menyokong tiga strategi:

  • Julat — partisyen meliputi julat nilai (tarikh, ID)
  • Senarai — partisyen menyimpan nilai tertentu (negara, penyewa)
  • Cincangan — pencincangan modular untuk pengagihan sekata

Pembuangan Murah

Membuang satu partisyen berlaku serta-merta — tiada pemadaman baris demi baris:

DROP TABLE events_2023;
-- 100GB gone in milliseconds, no VACUUM aftermath.

Penyelenggaraan Lebih Mudah

VACUUM, REINDEX dan ANALYZE beroperasi mengikut partisyen. Tempoh penyelenggaraan boleh diselitkan antara partisyen, dan bukannya memerlukan satu kelompok gergasi.

Indeks Lebih Kecil bagi Setiap Partisyen

Setiap partisyen mempunyai indeksnya sendiri. B-tree pada partisyen 1GB mempunyai lebih sedikit tahap berbanding pada partisyen 1TB — carian menjadi lebih pantas.

Pempartisan ialah Alat, Bukan Penyelesaian Ajaib

Anda tidak mendapat prestasi percuma — anda mendapat pemangkasan untuk query yang menapis berdasarkan kunci partisyen serta penyelenggaraan yang lebih mudah. Jika kedua-duanya tidak terpakai, anda hanya akan menambah kerumitan.

Pempartisan Asli PostgreSQL (Deklaratif)

Tersedia sejak PG 10. Setiap partisyen ialah jadual sebenar:

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: Pempartisan Pewarisan

Sistem legasi menggunakan pewarisan jadual serta pencetus. Elakkan pendekatan ini untuk kod baharu — pempartisan deklaratif lebih mudah dan pantas.

Ringkasan

Pempartisan paling berkesan pada jadual besar yang dibahagikan mengikut tempoh masa atau segmen penyewa.

  • Pemangkasan melangkau partisyen yang tidak berkaitan
  • Penyelenggaraan mengikut partisyen lebih pantas
  • DROP TABLE menggantikan DELETE 100GB
  • Bukan penyelesaian ajaib — hanya membantu jika query sepadan dengan kunci partisyen

Semakan Pantas

Anda membahagikan jadual mengikut bulan dan menjalankan SELECT * FROM events WHERE country = 'US' tanpa penapis tarikh. Adakah pempartisan membantu?

Percuma untuk bermula

Pelajari SQL dengan tutor kecerdasan buatan — percuma

Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.

Kursus
46
Pelajaran
183

Soalan Lazim

Adakah pelajaran “Mengapa Membahagi: Pemangkasan, Penyelenggaraan” percuma?

Ya — teks penuh “Mengapa Membahagi: Pemangkasan, Penyelenggaraan” boleh dibaca secara percuma di web ini. Untuk berlatih secara interaktif menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7, serta membuka kunci baki kursus SQL Academy, tingkat taraf kepada CoddyKit PRO. Kursus SQL Academy merangkumi sejumlah 4 pelajaran.

Apakah yang akan saya pelajari dalam “Mengapa Membahagi: Pemangkasan, Penyelenggaraan”?

Fahami manfaat pembahagian: pemangkasan pertanyaan, VACUUM yang lebih pantas dan pengarkiban yang lebih mudah. Anda berlatih SQL Academy menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.

Adakah saya memerlukan pengalaman untuk memulakan SQL Academy?

Tiada pengalaman terdahulu diperlukan. Pembelajaran SQL Academy di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 1 daripada 4.

Berapa lamakah pelajaran “Mengapa Membahagi: Pemangkasan, Penyelenggaraan” diambil?

Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.

Bolehkah saya menulis dan menjalankan kod dalam pelajaran SQL Academy ini?

Ya. Setiap pelajaran SQL Academy menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.

Semua pelajaran dalam kursus ini

  1. Mengapa Membahagi: Pemangkasan, Penyelenggaraan
  2. Pembahagian Julat, Senarai dan Hash
  3. Menanggalkan dan Melampirkan Bahagian
  4. Menjalankan Pertanyaan Merentas Bahagian dengan Cekap
← Kembali ke SQL Academy