PostgreSQL Lanjutan: Pengindeksan, Pembahagian dan Replikasi · Pelajaran

Pemangkasan dan Pengecualian Pembahagian

Dalami cara pengoptimum menggunakan kunci pembahagian untuk mengecualikan pembahagian yang tidak berkaitan, sekali gus mengurangkan jumlah data yang diimbas dengan ketara.

Pelajaran 3 daripada 411 langkah

Pemangkasan dan Pengecualian Pembahagian ialah pelajaran PostgreSQL Lanjutan: Pengindeksan, Pembahagian dan Replikasi percuma di CoddyKit. Ini ialah pelajaran 3 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 PostgreSQL Lanjutan: Pengindeksan, Pembahagian dan Replikasi, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus PostgreSQL Lanjutan: Pengindeksan, Pembahagian dan Replikasi merangkumi sejumlah 4 pelajaran.

Apakah Pemangkasan Partition?

Selamat datang ke teknik pengoptimuman penting dalam PostgreSQL: Pemangkasan Partition. Teknik ini membolehkan pangkalan data melangkau secara bijak partition yang tidak mungkin mengandungi data yang dicari oleh sesuatu pertanyaan.

Bayangkan ia seperti menapis rak buku: jika anda mencari buku yang diterbitkan pada tahun 2023, anda tidak akan memeriksa rak berlabel '1990-1999' atau '2000-2010'.

Cara Pengoptimum Berfungsi

Apabila anda melaksanakan pertanyaan pada jadual berpartition, perancang pertanyaan PostgreSQL memeriksa klausa WHERE. Ia membandingkan syarat dalam pertanyaan anda dengan takrif partition jadual anda.

Jika syarat pertanyaan memastikan bahawa partition tertentu tidak mungkin mengandungi mana-mana baris yang sepadan, pengoptimum hanya mengecualikan partition tersebut daripada pelan imbasan. Ini mengurangkan dengan ketara jumlah data yang perlu dibaca daripada cakera.

Pemangkasan dengan Partition Julat

Pemangkasan partition paling jelas pada jadual berpartition julat, khususnya jadual yang dipartition mengikut tarikh atau cap masa. Contohnya, jika anda mempunyai jadual yang dipartition mengikut bulan dan membuat pertanyaan untuk data daripada minggu tertentu, hanya partition bulan yang berkaitan akan diimbas.

Teknik ini sangat berkuasa untuk data siri masa kerana pertanyaan lazimnya menyasarkan tempoh masa tertentu.

Demo: Pemangkasan Julat dalam Tindakan

Mari kita cipta jadual berpartition julat yang ringkas dan lihat cara EXPLAIN menunjukkan pemangkasan. Kita akan membuat partition berdasarkan sale_date.

Perhatikan bahawa output EXPLAIN hanya akan menunjukkan imbasan pada partition yang berkaitan, bukan partition lain.

CREATE TABLE sales (
    sale_id INT,
    sale_date DATE,
    amount NUMERIC
) PARTITION BY RANGE (sale_date);

CREATE TABLE sales_2023_q1 PARTITION OF sales
FOR VALUES FROM ('2023-01-01') TO ('2023-04-01');

CREATE TABLE sales_2023_q2 PARTITION OF sales
FOR VALUES FROM ('2023-04-01') TO ('2023-07-01');

INSERT INTO sales VALUES (1, '2023-01-15', 100);
INSERT INTO sales VALUES (2, '2023-04-20', 200);

EXPLAIN SELECT * FROM sales WHERE sale_date = '2023-01-15';

Pemangkasan dengan Partition Senarai

Pemangkasan partition juga berfungsi dengan berkesan pada jadual berpartition senarai. Jika jadual anda dipartition berdasarkan nilai diskret seperti rantau atau kod status dan pertanyaan anda menapis berdasarkan nilai khusus tersebut, hanya partition yang sepadan akan diimbas.

Ini berguna apabila anda kerap membuat pertanyaan tentang data yang khusus kepada kategori atau kumpulan tertentu.

Demo: Contoh Pemangkasan Senarai

Berikut ialah contoh yang menggunakan jadual berpartition senarai berdasarkan lajur region. Perhatikan output EXPLAIN untuk melihat bahawa hanya partition 'North' yang diimbas.

CREATE TABLE products (
    product_id INT,
    region TEXT,
    price NUMERIC
) PARTITION BY LIST (region);

CREATE TABLE products_north PARTITION OF products
FOR VALUES IN ('North');

CREATE TABLE products_south PARTITION OF products
FOR VALUES IN ('South');

INSERT INTO products VALUES (101, 'North', 50.00);
INSERT INTO products VALUES (102, 'South', 75.00);

EXPLAIN SELECT * FROM products WHERE region = 'North';

Pemangkasan Statik berbanding Dinamik

PostgreSQL menggunakan dua jenis pemangkasan utama:

  • Pemangkasan Statik: Berlaku semasa perancangan pertanyaan. Perancang dapat melihat nilai yang dinyatakan secara jelas dalam klausa WHERE anda lalu mengecualikan partition dengan serta-merta.
  • Pemangkasan Dinamik: Berlaku semasa pelaksanaan pertanyaan. Ini digunakan untuk keadaan yang lebih kompleks, seperti apabila kunci partition ditapis berdasarkan hasil subpertanyaan atau parameter daripada cantuman. Pangkalan data menentukan partition yang perlu diimbas semasa pertanyaan berjalan.

Apabila Pemangkasan Mungkin Tidak Berlaku

Walaupun berkuasa, pemangkasan partition tidak sentiasa boleh dilakukan:

  • Ungkapan Kompleks: Jika klausa WHERE anda menggunakan fungsi atau ungkapan kompleks pada kunci partition, contohnya EXTRACT(MONTH FROM sale_date) = 1.
  • Penapis Bukan Kunci Partition: Pertanyaan yang menapis hanya pada lajur yang bukan sebahagian daripada kunci partition akan mengimbas semua partition.
  • Cantuman: Pemangkasan dengan cantuman boleh menjadi lebih rumit, khususnya jika syarat cantuman tidak melibatkan kunci partition secara langsung atau jika nilainya belum diketahui sehingga masa jalan.

Mengesahkan Pemangkasan dengan EXPLAIN

Untuk mengesahkan bahawa pemangkasan partition berfungsi, sentiasa gunakan EXPLAIN (atau EXPLAIN ANALYZE). Cari baris seperti:

  • -> Partition Selector (Dyanmic Partition Pruning)
  • -> Append (partitions: 1)
  • -> Result (partitions: 1)

Perkara penting ialah melihat bilangan partition yang dipilih terhad, bukannya seluruh jadual berpartition atau semua jadual anaknya diimbas.

Semakan Pantas: Manfaat Pemangkasan

Memahami pemangkasan partition penting untuk mengoptimumkan pertanyaan pada jadual berpartition yang besar. Mari uji pengetahuan anda!

Tingkatkan Keupayaan Pemangkasan!

Anda telah menguasai pemangkasan partition! Kini anda memahami bahawa ia ialah pengoptimuman PostgreSQL yang penting dan:

  • Mengurangkan dengan ketara jumlah data yang diimbas.
  • Berfungsi dengan membandingkan klausa WHERE dengan takrif partition.
  • Sangat berkesan dengan partition julat dan senarai.
  • Boleh bersifat statik (masa perancangan) atau dinamik (masa pelaksanaan).
  • Boleh disahkan menggunakan EXPLAIN.

Dengan memanfaatkan pemangkasan partition, anda memastikan pertanyaan berjalan secekap mungkin pada set data yang besar!

Percuma untuk bermula

Pelajari PostgreSQL Lanjutan: Pengindeksan, Pembahagian dan Replikasi 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
11
Pelajaran
44

Soalan Lazim

Adakah pelajaran “Pemangkasan dan Pengecualian Pembahagian” percuma?

Ya — teks penuh “Pemangkasan dan Pengecualian Pembahagian” 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 PostgreSQL Lanjutan: Pengindeksan, Pembahagian dan Replikasi, tingkat taraf kepada CoddyKit PRO. Kursus PostgreSQL Lanjutan: Pengindeksan, Pembahagian dan Replikasi merangkumi sejumlah 4 pelajaran.

Apakah yang akan saya pelajari dalam “Pemangkasan dan Pengecualian Pembahagian”?

Dalami cara pengoptimum menggunakan kunci pembahagian untuk mengecualikan pembahagian yang tidak berkaitan, sekali gus mengurangkan jumlah data yang diimbas dengan ketara. Anda berlatih PostgreSQL Lanjutan: Pengindeksan, Pembahagian dan Replikasi 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 PostgreSQL Lanjutan: Pengindeksan, Pembahagian dan Replikasi?

Tiada pengalaman terdahulu diperlukan. Pembelajaran PostgreSQL Lanjutan: Pengindeksan, Pembahagian dan Replikasi 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 3 daripada 4.

Berapa lamakah pelajaran “Pemangkasan dan Pengecualian Pembahagian” 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 PostgreSQL Lanjutan: Pengindeksan, Pembahagian dan Replikasi ini?

Ya. Setiap pelajaran PostgreSQL Lanjutan: Pengindeksan, Pembahagian dan Replikasi 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. Pengoptimuman Pertanyaan dengan Pembahagian
  2. Melampirkan dan Menanggalkan Pembahagian
  3. Pemangkasan dan Pengecualian Pembahagian
  4. Cantuman dan Agregat Mengikut Pembahagian
← Kembali ke PostgreSQL Lanjutan: Pengindeksan, Pembahagian dan Replikasi