Biasanya data membagi di pecahan dengan cara yang memungkinkan untuk menghindari GABUNG lintas server sama sekali. Karena operasi ini sulit dan mahal. Jika contoh Anda hipotetis, saya akan merekomendasikan untuk membagi semua data dengan bidang user_id atau user_group_id.
Misalnya shard A akan berisi semua tabel dengan informasi dari pengguna yang user_id % 3 =0, shard B - user_id mana % 3 =1, shard C - user_id mana % 3 =2. Jadi sebagian besar JOIN yang dibutuhkan akan berada di dalam satu shard. Untuk beberapa kueri lintas server yang kompleks, Anda mungkin memiliki penyimpanan NO-SQL umum seperti memcached atau Redis yang akan memiliki salinan data yang diperlukan dari semua pecahan (tentu saja itu bukan salinan lengkap dari semua tabel). Penyimpanan seperti itu dapat dengan mudah direplikasi di sebanyak mungkin server yang Anda butuhkan. Beginilah cara kerja proyek highload.