這是讀書筆記,Mysql,innodb系列一共3篇。mysql
CREATE TABLE `aid_***_detail` (
//省略全部字段
PRIMARY KEY (`id`),
KEY `range_idx` (`range_id`,`is_delete`,`range_detail_num`,`goods_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4複製代碼
其中的Key和PRIMARY就是 B+樹索引,即經常使用的索引,大機率是B+樹索引sql
注:關於鎖的部分見下一篇blog:Mysql-innodb-鎖複製代碼
CREATE TABLE `aid_test` (
`id` varchar(32) NOT NULL COMMENT '主鍵',
`a` varchar(32) NOT NULL,
`b` varchar(32) NOT NULL,
`c` int(11) NOT NULL,
`is_delete` int(11) NOT NULL COMMENT '0未刪除1已刪除',
`create_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '建立時間',
`update_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '更新時間',
PRIMARY KEY (`id`),
KEY `range_idx` (`a`,`b`,`c`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ;複製代碼
葉子節點是否已經滿了 | 索引節點是否已經滿了 | 操做 |
否 | 否 | 記錄直接插入到葉子節點 |
是 | 否 |
拆分葉子節點
葉子節點的中間值上升到索引節點
小於中間值的,放在新的左葉
大於等於中間值的,放在右葉
|
是 | 是 |
拆分葉子節點
葉子節點的中間值上升到索引節點
小於中間值的,放在新的左葉
大於等於中間值的,放在右葉
拆分索引節點
索引節點的中間值上升到上層索引節點
小於中間值的,放到左邊索引節點
大於中間值的,放到右邊新索引節點
|
葉子節點小於填充因子 | 索引節點小於填充因子 | 操做 |
否 | 否 |
直接刪除,
若是該節點,還在索引節點中,用該節點的右節點替代
|
是 | 否 | 合併葉子節點,同時更新索引節點 |
是 | 是 |
合併葉子節點,
合併索引節點和它的兄弟節點
|