Saya telah menyelami ini juga dan meskipun saya sejauh ini referensi tentang masalah ini, ada beberapa fakta kunci yang saya kumpulkan dan poin yang ingin saya bagikan:
Sebuah partisi adalah sebuah divisi dari database logis atau elemen penyusunnya menjadi bagian-bagian independen yang berbeda. Database partisi biasanya dilakukan untuk pengelolaan, kinerja atau ketersediaan alasan, seperti untuk load balancing.
https://en.wikipedia.org/wiki/Partition_(database)
Sharding adalah jenis partisi, seperti Horizontal Partitioning (HP)
Ada juga Vertical Partitioning (VP) di mana Anda membagi tabel menjadi bagian-bagian kecil yang berbeda. Normalisasi juga melibatkan pemisahan kolom di seluruh tabel, tetapi partisi vertikal melampaui itu dan mem-partisi kolom bahkan ketika sudah dinormalisasi.
https://en.wikipedia.org/wiki/Shard_(database_architecture)
Saya sangat suka jawaban Tony Baco di Quora di mana dia membuat Anda berpikir dalam hal skema (daripada kolom dan baris). Dia menyatakan bahwa ...
" Partisi horizontal ", atau beling, mereplikasi [menyalin] skema, dan kemudian membagi data berdasarkan pada kunci beling.
" Partisi vertikal " melibatkan pembagian skema (dan data berjalan untuk perjalanan).
https://www.quora.com/Whats-the-difference-between-sharding-DB-tables-and-partitioning-them
Panduan Partisi Basis Data Oracle memiliki beberapa angka yang bagus. Saya telah menyalin beberapa kutipan dari artikel tersebut.
https://docs.oracle.com/cd/B28359_01/server.111/b32024/partition.htm
Kapan Partisi Tabel
Berikut adalah beberapa saran untuk kapan harus mempartisi tabel:
- Tabel yang lebih besar dari 2 GB harus selalu dianggap sebagai kandidat untuk partisi.
- Tabel yang berisi data historis, di mana data baru ditambahkan ke partisi terbaru. Contoh khas adalah tabel historis di mana hanya data bulan saat ini yang dapat diperbarui dan 11 bulan lainnya hanya dibaca.
- Ketika isi tabel perlu didistribusikan di berbagai jenis perangkat penyimpanan.
Pemangkasan Partisi
Pemangkasan partisi adalah cara paling sederhana dan juga paling substansial untuk meningkatkan kinerja menggunakan partisi. Pemangkasan partisi seringkali dapat meningkatkan kinerja kueri dengan beberapa urutan besarnya. Misalnya, anggap aplikasi berisi tabel Pesanan yang berisi catatan riwayat pesanan, dan bahwa tabel ini telah dipartisi berdasarkan minggu. Kueri yang meminta pesanan selama satu minggu hanya akan mengakses satu partisi dari tabel Pesanan. Jika tabel Pesanan memiliki 2 tahun data historis, maka kueri ini akan mengakses satu partisi, bukan 104 partisi. Kueri ini berpotensi mengeksekusi 100 kali lebih cepat hanya karena pemangkasan partisi.
Strategi Pemisahan
Anda dapat membaca teks mereka dan memvisualisasikan gambar mereka yang menjelaskan semuanya dengan cukup baik.
Dan terakhir, penting untuk dipahami bahwa basis data sangat intensif sumber daya:
- CPU
- Disk
- I / O
- Penyimpanan
Banyak DBA akan mempartisi pada mesin yang sama, di mana partisi akan berbagi semua sumber daya tetapi memberikan peningkatan dalam disk dan I / O dengan memisahkan data dan / atau indeks.
Sementara strategi lain akan menggunakan arsitektur "tidak berbagi" di mana pecahan akan berada pada unit komputasi yang terpisah dan berbeda (node), memiliki 100% dari CPU, disk, I / O dan memori untuk dirinya sendiri. Memberikan keunggulan dan kompleksitasnya sendiri.
https://en.wikipedia.org/wiki/Shared_nothing_architecture