PostgreSQL Lanjutan: Pengindeksan, Pembahagian dan Replikasi · Pelajaran

Pembahagian Cincangan untuk Pengagihan

Laksanakan pembahagian cincangan untuk mengagihkan data secara sekata merentasi pembahagian, berguna untuk mengelakkan titik panas.

Pelajaran 1 daripada 411 langkah

Pembahagian Cincangan untuk Pengagihan ialah pelajaran PostgreSQL Lanjutan: Pengindeksan, Pembahagian dan Replikasi 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 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 Pembahagian Mengikut Cincangan?

Selamat datang ke Pembahagian Mengikut Cincangan! Strategi ini membantu mengagihkan data secara sekata merentas berbilang partition. Daripada membahagikan data mengikut julat atau nilai khusus, strategi ini menggunakan fungsi cincangan.

Pendekatan ini amat berguna apabila anda ingin mengelakkan 'titik panas', iaitu keadaan apabila satu partition menerima jauh lebih banyak data atau pertanyaan berbanding partition lain.

Mengapa Menggunakan Pembahagian Mengikut Cincangan?

Pembahagian mengikut cincangan sesuai untuk:

  • Pengagihan Sekata: Data disebarkan secara seragam merentas partition, sekali gus menghalang mana-mana partition daripada menjadi terlalu besar atau perlahan.
  • Mengelakkan Titik Panas: Berguna apabila kunci partition anda tidak mempunyai susunan semula jadi atau pengagihan yang boleh dijangka (tidak seperti data siri masa untuk Pembahagian Mengikut Julat).
  • Keserentakan yang Lebih Baik: Pertanyaan sering boleh beroperasi pada partition yang berbeza secara selari, lalu meningkatkan prestasi.

Sintaks Pembahagian Mengikut Cincangan

Untuk menggunakan pembahagian mengikut cincangan, anda mentakrifkan jadual induk dengan PARTITION BY HASH (column_name). Kemudian, anda mencipta partition anak menggunakan FOR VALUES WITH (MODULUS n, REMAINDER r).

  • MODULUS (n): Jumlah keseluruhan partition yang anda rancang untuk wujudkan.
  • REMAINDER (r): Nombor unik daripada 0 hingga n-1, yang menunjukkan 'baldi' nilai yang dicincang untuk disimpan oleh partition ini.

Mencipta Jadual yang Dibahagikan Mengikut Cincangan

Mari kita cipta jadual untuk log aktiviti pengguna, yang dibahagikan mengikut user_id. Kita akan bermula dengan jadual induk dan dua partition. Perhatikan bahawa nilai REMAINDER meliputi MODULUS.

CREATE TABLE user_activity (
  activity_id SERIAL,
  user_id INT NOT NULL,
  activity_type VARCHAR(50),
  activity_time TIMESTAMP DEFAULT NOW()
) PARTITION BY HASH (user_id);

CREATE TABLE user_activity_0
PARTITION OF user_activity
FOR VALUES WITH (MODULUS 2, REMAINDER 0);

CREATE TABLE user_activity_1
PARTITION OF user_activity
FOR VALUES WITH (MODULUS 2, REMAINDER 1);

Cara Data Diagihkan

Apabila anda memasukkan data, PostgreSQL mengira nilai cincangan untuk user_id. Kemudian, ia menjalankan operasi modulo (hash_value % MODULUS). Hasilnya menentukan partition bagi baris tersebut.

Contohnya, jika MODULUS ialah 2:

  • Jika hash_value % 2 = 0, data pergi ke user_activity_0.
  • Jika hash_value % 2 = 1, data pergi ke user_activity_1.

Contoh Memasukkan Data

Mari kita masukkan beberapa data ke dalam jadual user_activity kita. PostgreSQL mengarahkan setiap baris secara automatik ke partition cincangan yang betul berdasarkan user_id.

Cuba masukkan nilai user_id yang berbeza dan perhatikan pengagihannya!

INSERT INTO user_activity (user_id, activity_type) VALUES
(101, 'login'),
(202, 'logout'),
(303, 'view_item'),
(404, 'add_to_cart'),
(101, 'browse_category'),
(505, 'purchase');

SELECT tableoid::regclass as partition_name, *
FROM user_activity
ORDER BY user_id;

Membuat Pertanyaan pada Partition Cincangan

Membuat pertanyaan pada jadual yang dibahagikan mengikut cincangan sama seperti membuat pertanyaan pada jadual biasa. Perancang pertanyaan PostgreSQL cukup pintar untuk menggunakan pemangkasan partition.

Jika pertanyaan anda menyertakan kunci partition (contohnya, WHERE user_id = 101), perancang hanya akan mengimbas partition yang berkaitan, sekali gus mempercepat pertanyaan dengan ketara.

SELECT * FROM user_activity WHERE user_id = 101;

-- To see pruning in action:
EXPLAIN SELECT * FROM user_activity WHERE user_id = 101;

Cincangan berbanding Jenis Partition Lain

Tidak seperti pembahagian Mengikut Julat (berdasarkan selang) atau pembahagian Mengikut Senarai (berdasarkan nilai khusus), pembahagian mengikut cincangan tidak mengumpulkan data secara logik.

Kekuatannya terletak pada pengagihan data secara sekata, menjadikannya sesuai untuk kunci tanpa julat semula jadi (seperti UUID atau ID sewenang-wenangnya) dan untuk menghalang bahagian tertentu data anda daripada menjadi kesesakan.

Pertimbangan dan Penyelenggaraan

Apabila menggunakan pembahagian mengikut cincangan:

  • Pilih kunci anda dengan bijak: Kunci partition sepatutnya mempunyai pengagihan nilai cincangan yang baik.
  • Modulus dan Baki: Pastikan semua nilai REMAINDER daripada 0 hingga MODULUS - 1 diliputi oleh partition.
  • Menambah/Mengalih Keluar Partition: Menukar MODULUS kemudian memerlukan semua data dicincang semula, yang boleh menjadi rumit. Rancang bilangan partition anda dengan teliti.

Kuiz Pembahagian Mengikut Cincangan

Senario manakah yang paling sesuai untuk pembahagian mengikut cincangan PostgreSQL?

Imbas Kembali Pembahagian Mengikut Cincangan

Dalam pelajaran ini, anda telah mempelajari tentang pembahagian mengikut cincangan PostgreSQL:

  • Data diagihkan secara sekata berdasarkan fungsi cincangan bagi kunci partition.
  • Ia menggunakan MODULUS dan REMAINDER untuk mentakrifkan partition.
  • Ia sangat baik untuk mengelakkan titik panas dan meningkatkan prestasi bagi kunci tidak berjujukan atau sewenang-wenangnya.
  • Pertanyaan mendapat manfaat daripada pemangkasan partition apabila kunci partition digunakan.

Pembahagian mengikut cincangan ialah alat berkuasa untuk menskalakan pangkalan data apabila pengagihan data yang sekata amat penting.

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 “Pembahagian Cincangan untuk Pengagihan” percuma?

Ya — teks penuh “Pembahagian Cincangan untuk Pengagihan” 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 “Pembahagian Cincangan untuk Pengagihan”?

Laksanakan pembahagian cincangan untuk mengagihkan data secara sekata merentasi pembahagian, berguna untuk mengelakkan titik panas. 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 1 daripada 4.

Berapa lamakah pelajaran “Pembahagian Cincangan untuk Pengagihan” 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. Pembahagian Cincangan untuk Pengagihan
  2. Teknik Pembahagian Subsidiari
  3. Mengurus Jadual Terbahagi
  4. Pembahagian Julat Mengikut Masa
← Kembali ke PostgreSQL Lanjutan: Pengindeksan, Pembahagian dan Replikasi