GreatSQL社區原創內容未經授權不得隨意使用,轉載請聯繫小編並註明來源。 GreatSQL是MySQL的國產分支版本,使用上與MySQL一致。 作者:王權富貴 文章來源:GreatSQL社區原創 1.概述 本文通過 XtraBackup 備份單個資料庫,然後恢復到另一個實例,用於快速遷移大數據量 ...
當我們向某個索引對應的B+樹插入記錄,需要先定位到這條記錄應該被插入到哪個葉子節點對應的數據頁中,確定之後有兩種情況:
①該頁恰好空間足夠,能直接插入數據
②該頁空間不足,不能直接插入數據
我們把該頁稱為頁A
對於第一種情況,數據可以直接插入頁A而不會產生其他影響; 對於第二種情況,頁A空間不足,但數據需要插入頁A,那就需要進行頁分裂;
頁分裂過程
創建一個新頁B,將頁A中的部分數據轉移到頁B中,這樣就頁A能空出多餘的空間存儲新紀錄,再將頁B添加到葉子節點的鏈表中;
但這還沒完,由於葉子節點鏈表發生了變化,記錄葉子節點情況的上一層,也需要發生一些變化,來記錄這個新插入的頁B,也就是在內節點添加一條目錄項記錄,來指向這個新創建的頁B;
顯而易見,插入數據時發生頁分裂會降低性能;