Apakah sub-jadual?
Dalam MySQL, jadual ialah bentuk utama storan data. Jika berjuta-juta rekod disimpan dalam jadual, pertanyaan data menjadi sangat perlahan kerana MySQL perlu mengimbas keseluruhan jadual untuk mencari data yang diperlukan. Untuk mempercepatkan pertanyaan, ia membantu untuk membahagikan jadual besar kepada berbilang jadual kecil, setiap jadual kecil menyimpan bahagian data yang sepadan. Teknik ini dipanggil sharding.
Kenapa bahagikan meja?
Dalam tapak web yang besar, adalah perkara biasa untuk mempunyai jadual dengan jutaan atau ratusan juta rekod. Jadual ini bukan sahaja memerlukan banyak ruang storan, tetapi ia juga sangat lambat untuk membuat pertanyaan. Tujuan utama pemecahan jadual adalah untuk meningkatkan kelajuan pertanyaan pangkalan data dan masa tindak balas dengan menyimpan data secara berselerak dalam berbilang jadual kecil, dengan itu menyelesaikan masalah yang berkaitan.
Bagaimana untuk membahagikan meja?
Sebelum membahagikan jadual, anda harus terlebih dahulu menentukan cara membahagi data. Data boleh dibahagikan mengikut masa, wilayah, pengguna dan kaedah lain. Sebagai contoh, data boleh dibahagikan mengikut rantau dan disimpan dalam jadual berbeza, atau data boleh dibahagikan kepada berbilang jadual bulan berbeza berdasarkan masa. Untuk menyusun dan mengurus data dengan lebih baik, adalah amalan terbaik untuk membahagikan data kepada ketulan dengan atribut yang serupa.
Selepas menentukan kaedah bahagi, anda boleh mula membahagikan jadual. Langkah-langkah khusus adalah seperti berikut:
Langkah 1: Cipta pangkalan data dan struktur jadual sub-jadual.
Pertama, struktur jadual baharu perlu dibuat dalam pangkalan data untuk menyimpan data berselerak. Struktur jadual hendaklah sama dengan struktur jadual asal. Contohnya, jika nama jadual asal ialah pengguna, maka nama jadual pisah boleh dinamakan user_1, user_2, dsb.
Langkah 2: Masukkan data ke dalam jadual berselerak.
Selepas mencipta struktur jadual, anda boleh memasukkan data ke dalam jadual pisah. Pelbagai kaedah boleh digunakan untuk memisahkan blok data bergantung pada cara ia dipecahkan. Dengan membahagikan data mengikut masa, anda boleh menyalin data daripada jadual asal ke jadual waktu yang sepadan.
Langkah 3: Soal data.
Untuk membuat pertanyaan data, anda perlu menghantar permintaan pertanyaan ke semua sub-jadual dan meringkaskan hasilnya. Dalam PHP, anda boleh menggunakan operator UNION untuk menggabungkan hasil pertanyaan. Berikut ialah contoh arahan pertanyaan yang boleh digunakan untuk mendapatkan semula data untuk semua pengguna yang didaftarkan pada Ogos 2021:
SELECT * FROM user_202108 UNION SELECT * FROM user_202109 ;
Impak sharding pada kecekapan pertanyaan
Pembahagian jadual boleh meningkatkan kecekapan pertanyaan dengan ketara. Sebagai contoh, terdapat 10 juta rekod dalam jadual asal, tetapi hanya 1 juta rekod dalam setiap sub-jadual. Melakukan ini membolehkan MySQL hanya mengimbas 1 juta rekod dalam setiap jadual pisah apabila menanyakan data, bukannya mengimbas semua rekod dalam jadual asal. Ini meningkatkan kecekapan pertanyaan dan menyebarkan beban pangkalan data dengan baik.
Atas ialah kandungan terperinci Cara menggunakan PHP untuk melaksanakan pembahagian jadual MySQL untuk meningkatkan kecekapan pertanyaan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!