Secara umumnya, enjin storan pangkalan data menggunakan B-tree atau B+ tree untuk menyimpan indeks. Mula-mula lihat pada pokok B, seperti yang ditunjukkan dalam rajah.
B-tree ialah pokok seimbang berbilang hala ini digunakan untuk menyimpan sejumlah besar data pokok binari.
Bagi pangkalan data, semua data akan disimpan ke cakera, dan kecekapan I/O cakera adalah agak rendah, terutamanya dalam kes I/O cakera rawak.
Jadi ketinggian menentukan bilangan I/O cakera Semakin sedikit bilangan I/O cakera, semakin besar peningkatan prestasi Inilah sebabnya B-tree digunakan sebagai struktur simpanan indeks, seperti yang ditunjukkan dalam rajah.
Enjin storan InnoDB MySQL menggunakan struktur B-tree yang dipertingkatkan, iaitu B+ tree, sebagai indeks dan struktur storan data.
Berbanding dengan struktur pokok B, pokok B+ telah dioptimumkan dalam dua aspek, seperti yang ditunjukkan dalam rajah.
1. Semua data dalam pepohon B+ disimpan dalam nod daun dan nod bukan daun hanya menyimpan indeks.
2. Data dalam nod daun berkaitan menggunakan senarai berganda.
Saya berpendapat bahawa struktur indeks MySQL menggunakan pepohon B+ untuk 4 sebab berikut:
1 Dari perspektif kecekapan cakera I/O: nod bukan daun pokok B+ tidak menyimpan data, jadi setiap lapisan pokok boleh menyimpan lebih banyak indeks Dalam erti kata lain, pokok B+ adalah lebih cekap daripada pokok B+ apabila ketinggian lapisan adalah sama. Pokok menyimpan lebih banyak data, yang secara tidak langsung mengurangkan bilangan I/O cakera.
2 Dari perspektif kecekapan pertanyaan julat: Dalam MySQL, pertanyaan julat ialah operasi yang agak biasa, dan semua data yang disimpan dalam nod daun pepohon B+ berkaitan menggunakan senarai terpaut dua kali, jadi pokok B+ Apabila. pertanyaan, anda hanya perlu menyemak dua nod untuk traversal, manakala B-tree perlu mendapatkan semua nod Oleh itu, pokok B+ adalah lebih cekap dalam pertanyaan julat.
3. Dari perspektif pengimbasan jadual penuh: Oleh kerana nod daun pokok B+ menyimpan semua data, keupayaan pengimbasan global pokok B+ adalah lebih kuat kerana ia hanya perlu mengimbas nod daun. Pokok B perlu melintasi seluruh pokok.
4 Dari perspektif ID meningkat sendiri: struktur data berdasarkan pepohon B+, jika data integer meningkat sendiri digunakan sebagai kunci utama, ia boleh mengelakkan masalah dengan lebih baik apabila menambah data sejumlah besar operasi yang disebabkan oleh pembelahan nod daun.
Atas ialah kandungan terperinci Bagaimana untuk memahami masalah penggunaan pokok B+ dalam struktur indeks MySQL. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!