Ini semi-hipotetis, dan karena saya tidak punya pengalaman dalam berurusan dengan tabel database besar, saya tidak tahu apakah ini mengerikan karena suatu alasan. Ke situasi:
Bayangkan aplikasi berbasis web - katakanlah perangkat lunak akuntansi - yang memiliki 20.000 klien dan setiap klien memiliki 1.000 entri dalam tabel. Itu 20 juta baris yang saya tahu pasti bisa memperlambat permintaan kompleks.
Dalam kasus seperti ini, apakah lebih masuk akal untuk membuat tabel baru dalam database untuk setiap klien? Bagaimana database bereaksi memiliki 20k (atau lebih!) Tabel?
Kedengarannya seperti ide yang buruk.
Jangan mencoba mengakali database dengan konstruksi eksotis seperti ini. Mesin basis data dirancang dengan banyak optimisasi untuk menangani set data besar. Misalnya, apa yang Anda gambarkan terdengar sangat dekat dengan upaya penerapan indeks secara manual. Cukup gunakan indeks yang disediakan oleh Mesin DB, mereka diimplementasikan jauh lebih baik daripada Anda mungkin akan dapat melakukannya sendiri, dan itu tidak akan memerlukan banyak pemeliharaan.
Juga, sebagai aturan umum. Saya menyarankan untuk tidak membuat basis data dengan cara yang membutuhkan manipulasi atau pembuatan struktur basis data (tabel, bidang) selama penggunaan normal aplikasi. Ini membuat pengoptimalan untuk kinerja menjadi berat dan sering memaksa Anda untuk memberikan terlalu banyak izin kepada pengguna untuk melakukan tugas rutin yang berpotensi menciptakan celah keamanan.
sumber
Berikut ini adalah artikel yang saya selalu minta orang untuk membaca, ketika mereka mengajukan pertanyaan ini:
http://datacharmer.blogspot.com/2009/03/normalization-and-smoking.html
sumber
IMHO satu meja seharusnya tidak menjadi masalah, jadi jangan buat masalah di mana tidak ada - belum. Ada banyak yang dapat Anda lakukan untuk membantu kinerja. Anda bisa mempartisi satu tabel ke beberapa file berdasarkan clientID atau bidang tanggal untuk membantu dengan IO. Db Anda tidak harus melacak, mengoptimalkan, dan menyimpan 20.000 pernyataan sql yang berbeda untuk setiap kueri yang dibutuhkan situs Anda. Anda dapat mengindeks oleh clientid. Klien 20K dapat membayar banyak perangkat keras.
Untuk tipe tabel ini, tipe NoSQL db dapat digunakan.
Dengan 20K klien, basis data mungkin bukan tautan terlemah Anda, jadi mengapa harus memperkenalkan kompleksitas sebanyak ini?
sumber
Itu pendekatan yang sangat buruk.
Partisi tabel secara vertikal, 2 server database satu untuk id pengguna ganjil, dan yang lain untuk bahkan harus bekerja dengan baik (data tidak terkait antara pengguna).
Urutkan data berdasarkan user_id dan jika itu tidak memungkinkan, dapatkan sejumlah besar RAM atau disk SSD.
sumber