Selepas jumlah data dalam pangkalan data mencapai tahap tertentu, untuk mengelakkan kesesakan dalam prestasi sistem. Data perlu diproses dengan cara pembahagian, sharding, pangkalan data dan jadual.
Sharding ialah cara yang berkesan untuk menskalakan pangkalan data kepada berbilang nod fizikal , tujuan utamanya adalah untuk menembusi I /O had kapasiti pelayan pangkalan data nod tunggal dan menyelesaikan masalah kebolehskalaan pangkalan data. Perkataan serpihan bermaksud "serpihan". Jika pangkalan data dianggap sebagai sekeping kaca yang besar dan kaca itu pecah, maka setiap kepingan kecil dipanggil serpihan pangkalan data (Database Shard). Proses memecah seluruh pangkalan data menjadi kepingan dipanggil sharding, yang boleh diterjemahkan sebagai sharding.
Secara formal, sharding boleh ditakrifkan secara ringkas sebagai skema pembahagian yang mengedarkan pangkalan data yang besar merentasi berbilang nod fizikal. Setiap partition mengandungi bahagian tertentu dalam pangkalan data, dipanggil slice Kaedah pembahagian boleh sewenang-wenangnya dan tidak terhad kepada pembahagian mendatar tradisional dan pembahagian menegak. Serpihan boleh mengandungi kandungan berbilang jadual atau bahkan berbilang contoh pangkalan data. Setiap serpihan diletakkan pada pelayan pangkalan data. Pelayan pangkalan data boleh mengendalikan satu atau lebih serpihan data. Pelayan diperlukan dalam sistem untuk penghalaan dan pemajuan pertanyaan, dan bertanggungjawab untuk memajukan pertanyaan kepada nod pengumpulan shard atau shard yang mengandungi data yang diakses oleh pertanyaan untuk pelaksanaan.
Penyelesaian pengembangan MySQL termasuk Scale Out dan Scale Up.
Scale Out (pengembangan mendatar) bermakna Aplikasi boleh dikembangkan dalam arah mendatar. Secara umumnya, untuk aplikasi pusat data, Scale out bermakna apabila lebih banyak mesin ditambah, aplikasi masih boleh menggunakan sumber mesin ini dengan baik untuk meningkatkan kecekapannya sendiri dan mencapai kebolehskalaan yang baik.
Scale Up (pengembangan menegak) bermakna Aplikasi boleh berkembang dalam arah menegak. Secara umumnya, untuk satu mesin, nilai Scale Up ialah apabila nod pengkomputeran (mesin) menambah lebih banyak Teras CPU, peranti storan, dan menggunakan memori yang lebih besar, aplikasi boleh menggunakan sepenuhnya sumber ini untuk meningkatkan kecekapannya mencapai kebolehskalaan yang baik.
Strategi Sharding MySql termasuk sharding menegak dan sharding mendatar.
Pecahan menegak (menegak): merujuk kepada pemisahan mengikut modul berfungsi untuk menyelesaikan persaingan io antara jadual. Sebagai contoh, ia dibahagikan kepada pangkalan data pesanan, pangkalan data produk, pangkalan data pengguna... Dengan cara ini, struktur jadual berbilang pangkalan data adalah berbeza.
Pecahan mendatar (mendatar): Simpan data jadual yang sama dalam blok dan simpan dalam pangkalan data yang berbeza untuk menyelesaikan tekanan peningkatan volum data dalam satu jadual. Struktur jadual dalam pangkalan data ini adalah sama.
Struktur meja direka bentuk untuk dibahagikan secara menegak. Beberapa senario biasa termasuk
pemisahan menegak medan besar. Bina medan besar secara berasingan dalam jadual lain untuk meningkatkan prestasi capaian jadual asas Pada dasarnya, dalam aplikasi kritikal prestasi, medan besar dalam pangkalan data harus dielakkan
Pembahagian menegak kepada penggunaan. Contohnya, atribut bahan perusahaan boleh dibahagikan secara menegak mengikut atribut asas, atribut jualan, atribut pembelian, atribut pembuatan, atribut perakaunan kewangan, dsb.
Dibahagikan secara menegak mengikut kekerapan akses. Sebagai contoh, dalam sistem e-dagang dan Web 2.0, jika terdapat banyak tetapan atribut pengguna, anda boleh mengasingkan atribut asas, kerap digunakan dan atribut yang jarang digunakan secara menegak
Segmen mendatar dalam reka bentuk struktur meja. Beberapa senario biasa termasuk
Sebagai contoh, pada tapak web e-dagang dalam talian, jumlah data jadual pesanan terlalu besar dan dibahagikan pada peringkat tahunan dan bulanan
Web 2.0 Terdapat terlalu ramai pengguna berdaftar dan pengguna aktif dalam talian di tapak web Menurut julat ID pengguna, dsb., bahagikan secara mendatar pengguna yang berkaitan dan jadual yang berkait rapat dengan pengguna
Selepas memisahkan jadual, data disimpan dalam jadual pisah Jadual utama hanyalah shell, dan mengakses data berlaku dalam setiap jadual split . Tiada konsep pembahagian jadual dalam pembahagian hanya membahagikan fail yang menyimpan data kepada banyak blok kecil Jadual pembahagian masih satu jadual, dan pemprosesan data masih disiapkan sendiri.
Selepas memisahkan jadual, keupayaan konkurensi satu jadual telah dipertingkatkan dan prestasi I/O cakera juga telah dipertingkatkan . Pemisahan menembusi kesesakan cakera I/O, dan saya ingin meningkatkan keupayaan baca dan tulis cakera untuk meningkatkan prestasi mysql.
Pada ketika ini, fokus ujian bagi partition dan sub-jadual adalah berbeza Fokus sub-jadual ialah bagaimana untuk meningkatkan concurrency MySQL apabila mengakses data dan untuk partition, bagaimana untuk memecahkan bacaan dan menulis keupayaan cakera untuk mencapai Tujuan meningkatkan prestasi mysql.
Terdapat banyak cara untuk memisahkan jadual Menggunakan gabungan untuk memisahkan jadual adalah cara yang paling mudah. Kaedah ini semudah membahagikan dan boleh telus kepada kod program. Jika anda menggunakan kaedah pembahagian jadual lain, ia akan menjadi lebih menyusahkan daripada pembahagian. Pelaksanaan pembahagian adalah agak mudah Mencipta jadual pembahagian tidak berbeza daripada membina jadual biasa, dan ia adalah telus kepada bahagian kod.
Apabila kelajuan pertanyaan jadual telah cukup perlahan untuk menjejaskan penggunaannya.
Data dalam jadual dibahagikan
Operasi pada data selalunya hanya melibatkan sebahagian daripada data, bukan semua data
CREATE TABLE sales ( id INT AUTO_INCREMENT, amount DOUBLE NOT NULL, order_day DATETIME NOT NULL, PRIMARY KEY(id, order_day)) ENGINE=InnodbPARTITION BY RANGE(YEAR(order_day)) ( PARTITION p_2010 VALUES LESS THAN (2010), PARTITION p_2011 VALUES LESS THAN (2011), PARTITION p_2012 VALUES LESS THAN (2012),PARTITION p_catchall VALUES LESS THAN MAXVALUE);
Apabila kelajuan pertanyaan jadual telah cukup perlahan untuk menjejaskan penggunaannya .
Apabila memasukkan pertanyaan dengan kerap atau menyertai pertanyaan, kelajuan akan menjadi perlahan.
Pelaksanaan sub-jadual memerlukan gabungan pelaksanaan perniagaan dan migrasi, yang agak kompleks.
Pemberian boleh menyelesaikan masalah pengurangan kecekapan pertanyaan yang disebabkan oleh volum data yang berlebihan dalam satu jadual, tetapi ia tidak dapat menyediakan data yang mencukupi untuk pangkalan data. Keupayaan pemprosesan serentak membawa peningkatan kualitatif. Dalam menghadapi akses baca dan tulis yang sangat serentak, apabila pelayan induk pangkalan data tidak dapat menanggung tekanan operasi menulis, ia tidak bermakna tidak kira bagaimana untuk mengembangkan pelayan hamba. Oleh itu, kita mesti mengubah pemikiran kita dan memisahkan pangkalan data untuk meningkatkan keupayaan menulis pangkalan data Ini adalah apa yang dipanggil sub-pangkalan data.
Sama seperti strategi pembahagian jadual, pembahagian boleh menggunakan modulo kata kunci untuk menghalakan akses data, seperti yang ditunjukkan dalam rajah di bawah
Pembelajaran yang disyorkan: "tutorial video mysql"
Atas ialah kandungan terperinci Terangkan secara terperinci sub-jadual, sub-pangkalan data, serpihan dan sekatan dalam MySql. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!