Membahagi Jadual Besar
Pelajari cara membahagi jadual besar untuk mengurus data dengan lebih berkesan dan meningkatkan prestasi pertanyaan pada set data besar.
Membahagi Jadual Besar ialah pelajaran Prestasi PostgreSQL & Pengoptimuman Pertanyaan percuma di CoddyKit. Ini ialah pelajaran 3 daripada 4. Sebanyak 3 pelajaran dalam laluan pembelajaran ini boleh dibaca sepenuhnya secara percuma — selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan praktikal dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran Prestasi PostgreSQL & Pengoptimuman Pertanyaan, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus Prestasi PostgreSQL & Pengoptimuman Pertanyaan merangkumi sejumlah 4 pelajaran.
Apakah Pempartisian Jadual?
Jadual pangkalan data yang besar, khususnya yang mempunyai berbilion-bilion baris, boleh memperlahankan pertanyaan dan operasi penyelenggaraan dengan ketara.
Pempartisian jadual membantu dengan membahagikan satu jadual besar kepada bahagian yang lebih kecil dan mudah diurus yang dipanggil partisyen. Setiap partisyen pada asasnya ialah jadual yang berasingan, tetapi semuanya berfungsi bersama sebagai satu jadual logik.
Manfaat Pempartisian
Pempartisian menawarkan beberapa kelebihan utama untuk jadual yang sangat besar:
- Prestasi Lebih Baik: Pertanyaan sering berjalan lebih pantas kerana pangkalan data boleh mengimbas lebih sedikit baris dengan hanya mengakses partisyen yang berkaitan. Proses ini dipanggil pemangkasan partisyen.
- Penyelenggaraan Lebih Mudah: Operasi seperti `VACUUM` atau `ANALYZE` boleh berjalan lebih pantas pada partisyen individu yang lebih kecil.
- Pengurusan Data yang Cekap: Memuatkan atau memadam sebahagian besar data (contohnya, mengarkibkan rekod lama) menjadi lebih pantas dengan hanya melampirkan atau menanggalkan seluruh partisyen.
- Saiz Indeks Berkurang: Setiap partisyen mempunyai indeksnya sendiri yang lebih kecil, yang boleh menjadi lebih cekap berbanding satu indeks gergasi pada satu jadual.
Pempartisian Julat
PostgreSQL menyokong pelbagai jenis pempartisian. Pempartisian julat ialah jenis yang paling lazim dan membahagikan jadual berdasarkan julat nilai dalam lajur yang ditentukan.
Jenis ini sesuai untuk data siri masa (contohnya, mengikut tarikh atau bulan) atau jadual dengan julat ID berjujukan yang jelas. Sebagai contoh, anda boleh mempartisikan data jualan mengikut tahun, dengan jualan setiap tahun dimasukkan ke dalam partisyen masing-masing.
Pempartisian Senarai dan Cincangan
Selain julat, PostgreSQL turut menyediakan:
- Pempartisian Senarai: Membahagikan jadual berdasarkan nilai khusus dan diskret dalam lajur. Sebagai contoh, anda boleh mempartisikan jadual `users` mengikut `country` (contohnya, 'USA', 'Canada', 'UK').
- Pempartisian Cincangan: Membahagikan jadual menggunakan fungsi cincangan pada nilai lajur. Kaedah ini mengagihkan data secara sekata merentasi partisyen, yang berguna apabila tiada kunci julat atau senarai yang jelas, sekali gus membantu mengimbangkan beban I/O.
Pempartisian Deklaratif: Jadual Induk
Pempartisian deklaratif PostgreSQL memudahkan persediaan. Mula-mula, anda mencipta jadual induk (utama) dan mengisytiharkan cara jadual itu akan dipartisikan menggunakan klausa `PARTITION BY`.
Mari kita cipta jadual `sensor_data` yang dipartisikan mengikut lajur cap masa:
CREATE TABLE sensor_data (
sensor_id INT NOT NULL,
reading_time TIMESTAMP NOT NULL,
temperature DECIMAL(5, 2),
humidity DECIMAL(5, 2)
) PARTITION BY RANGE (reading_time);Mencipta Partisyen (Jadual Anak)
Setelah jadual induk ditakrifkan, anda mencipta partisyen individu yang pada asasnya ialah jadual anak. Setiap jadual anak menentukan julat atau senarai nilai yang akan disimpannya.
Di sini, kita mencipta partisyen untuk bulan-bulan tertentu:
CREATE TABLE sensor_data_2023_01 PARTITION OF sensor_data
FOR VALUES FROM ('2023-01-01 00:00:00') TO ('2023-02-01 00:00:00');
CREATE TABLE sensor_data_2023_02 PARTITION OF sensor_data
FOR VALUES FROM ('2023-02-01 00:00:00') TO ('2023-03-01 00:00:00');Memasukkan Data ke dalam Partisyen
Anda memasukkan data ke dalam jadual induk seperti yang dilakukan pada mana-mana jadual lain. PostgreSQL menghalakan setiap baris baharu secara automatik ke partisyen anak yang betul berdasarkan kunci pemartisiannya.
Mari kita tambahkan beberapa bacaan penderia:
INSERT INTO sensor_data (sensor_id, reading_time, temperature, humidity) VALUES
(101, '2023-01-15 10:00:00', 22.5, 60.1),
(102, '2023-02-05 14:30:00', 24.1, 55.3),
(101, '2023-01-20 08:00:00', 21.9, 62.0);Membuat Pertanyaan dengan Pemangkasan Partisyen
Apabila anda membuat pertanyaan pada jadual induk, perancang pertanyaan PostgreSQL cukup pintar untuk menggunakan pemangkasan partisyen. Ia mengenal pasti partisyen yang mungkin mengandungi data berdasarkan klausa `WHERE` anda dan hanya mengimbas partisyen yang berkaitan, sambil melangkau partisyen lain.
Contoh `EXPLAIN` ini menunjukkan bahawa hanya `sensor_data_2023_01` diimbas:
EXPLAIN SELECT * FROM sensor_data
WHERE reading_time >= '2023-01-01' AND reading_time < '2023-02-01';Mengurus Partisyen: Melampirkan & Menanggalkan
Pempartisian membolehkan pengurusan kitar hayat data yang fleksibel. Anda boleh menambah partisyen baharu atau mengalih keluar partisyen lama secara dinamik tanpa menjejaskan bahagian jadual yang lain.
- ATTACH: Anda boleh mencipta jadual baharu kemudian melampirkannya sebagai partisyen kepada jadual utama. Kaedah ini sangat sesuai untuk pemuatan data yang pantas.
- DETACH: Anda boleh mengalih keluar partisyen dan menukarkannya semula menjadi jadual kendiri. Datanya kekal utuh, menjadikannya sesuai untuk mengarkibkan data lama atau menjalankan penyelenggaraan.
Pertimbangan Pempartisian
Walaupun berkuasa, pempartisian bukan sentiasa penyelesaiannya. Pertimbangkan pertukaran berikut:
- Overhed: Mengurus banyak partisyen kecil boleh menambah overhed untuk perancang pertanyaan dan meningkatkan bilangan entri katalog sistem.
- Kerumitan: Kaedah ini menambah kerumitan pada skema pangkalan data dan memerlukan perancangan teliti ketika memilih kunci pempartisian serta mentakrifkan sempadan.
- Sesuai untuk: Paling sesuai bagi jadual yang benar-benar besar (gigabait hingga terabait) dan mempunyai kunci pempartisian yang jelas, biasanya berasaskan masa atau kategori.
Elakkan mempartisikan jadual kecil; overhed pengurusan berkemungkinan melebihi sebarang manfaat prestasi.
Semakan Pantas: Strategi Pempartisian
Anda sedang mereka bentuk jadual `web_analytics_events` dengan berbilion-bilion rekod. Lajur utama termasuk `event_timestamp`, `user_id` dan `event_type`. Anda kerap perlu:
- Membuat pertanyaan tentang peristiwa dalam julat tarikh tertentu.
- Memadam data yang berusia lebih daripada 6 bulan dengan cekap.
- Menganalisis peristiwa bagi kategori `event_type` tertentu.
Apakah strategi pempartisian yang paling bermanfaat?
Imbas Kembali: Pempartisian untuk Skala
Anda telah mempelajari bahawa pempartisian jadual ialah teknik berkuasa untuk mengurus set data yang sangat besar dalam PostgreSQL:
- Teknik ini membahagikan satu jadual besar kepada jadual anak yang lebih kecil dan mudah diurus.
- Manfaatnya termasuk prestasi pertanyaan yang lebih baik melalui pemangkasan partisyen, penyelenggaraan data yang lebih mudah dan pengarkiban data yang cekap.
- PostgreSQL menyokong jenis pempartisian Julat, Senarai dan Cincangan.
- Pempartisian deklaratif memudahkan penciptaan dan pengurusan, dengan penghalaan data automatik untuk operasi memasukkan data.
Dengan menggunakan pempartisian secara strategik, anda boleh meningkatkan prestasi dan kebolehurusan jadual terbesar anda dengan ketara.
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
- 22
- Pelajaran
- 88
Soalan Lazim
Adakah pelajaran “Membahagi Jadual Besar” percuma?
Ya — sebanyak 3 pelajaran dalam laluan pembelajaran Prestasi PostgreSQL & Pengoptimuman Pertanyaan, termasuk “Membahagi Jadual Besar”, boleh dibaca sepenuhnya secara percuma di web ini. Selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan interaktif dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Kursus Prestasi PostgreSQL & Pengoptimuman Pertanyaan merangkumi sejumlah 4 pelajaran.
Apakah yang akan saya pelajari dalam “Membahagi Jadual Besar”?
Pelajari cara membahagi jadual besar untuk mengurus data dengan lebih berkesan dan meningkatkan prestasi pertanyaan pada set data besar. Anda berlatih Prestasi PostgreSQL & Pengoptimuman Pertanyaan 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 Prestasi PostgreSQL & Pengoptimuman Pertanyaan?
Tiada pengalaman terdahulu diperlukan. Pembelajaran Prestasi PostgreSQL & Pengoptimuman Pertanyaan 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 “Membahagi Jadual Besar” 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 Prestasi PostgreSQL & Pengoptimuman Pertanyaan ini?
Ya. Setiap pelajaran Prestasi PostgreSQL & Pengoptimuman Pertanyaan 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
- Pertukaran Normalisasi dan Denormalisasi
- Memilih Jenis Data yang Sesuai
- Membahagi Jadual Besar
- Mereka Bentuk Kunci Utama dan Kunci Pengganti