??????????????????InnoDB????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
?????????
???????????????????????????
?????? InnoDB ??????????????????????????????????????????????????????????????? 16KB ??? InnoDB ????????????????????????????????????????????????????????? ??? ??????????????????????????????????????????????????? Insert Buffer ????????????????????? INODE ????????????????????? undo ?????????????????????????????????
????????????????????????????????????????????????
??????
????????????16kb????????????????????????
????????????????????????
?????????????????????????????????????????????User Records???
??????UserRecords??????Free Space??????????????????
emm… ??????????????????????????????????????????,???,????????????????????????????????????????????????
?????????????????????
??????????????????Inoodb?????????????????????UserRecords??????????????????????????????????????????????????????????????????????????????
??????????????????????????????{#line_header}
???????????????????????????
mysql> CREATE TABLE page_demo(
-> c1 INT,
-> c2 INT,
-> c3 VARCHAR(10000),
-> PRIMARY KEY (c1)
-> ) CHARSET=ascii ROW_FORMAT=Compact;
Query OK, 0 rows affected (0.03 sec)
????????????,???????????????,?????????c1????????????????????????????????????????????????????????????c1?????????row_id
?????????????????????
?????????????????????
?????????????????????????????????,???????????????????????????
?????????????????????????????????????????????????????????????????????
mysql> INSERT INTO page_demo VALUES(1, 100, 'aaaa'), (2, 200, 'bbbb'), (3, 300, 'cccc'),
(4, 400, 'dddd');
Query OK, 4 rows affected (0.00 sec)
Records: 4 Duplicates: 0 Warnings: 0
????????????????????????????????????UserRecords????????????(?????????????????????,???????????????????????????)
-
delete_mask
??????????????????????????????????????????????????????????????????????????????????????????
????????????????????????????????????delete_mask???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
???????????????????????????????????????
??????????????????delete_mask????????????1??????????????????????????????????????????????????????????????????????????????????????????????????????
-
min_reck_mask
B+??????????????????????????????????????????????????????????????????
???????????????????????????????????? min_rec_mask ????????? 0 ??????????????????????????? B+ ???????????? ?????????????????????????????? -
n_owned
???????????? -
heap_no
????????????????????????????????????????????????????????????
????????????2???3???4???5????????????0???1??????
Innodb???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????What????????????
????????????????????????????????????????????????????????????????????????????????????????????? ?????? ??????????????????????????? ?????????4????????????????????????????????? 1 ??? 2 ??? 3 ??? 4 ????????????????????????4?????????????????????????????????????????????
????????????????????????????????????????????????????????????????????????
???????????????????????????????????????
??????:mouse::mouse:????????????
???????????????wtf???????????????????????????????????????????????????UserRecords???????????????????????????????????? Infimum + Supremum ?????????
??????????????????????????????????????????????????????????????? heap_no ???????????? 0 ??? 1 ??????????????????????????????????????????
-
record_type
???????????????????????????
?????????4????????????????????? 0 ????????????????????? 1 ??????B+???????????????????????? 2 ??? ?????????????????? 3 ?????????????????????????????????????????????????????????????????????????????????????????????????????????????????? record_type ????????? 0 ???????????????????????????????????? record_type ???????????? 2 ??? 3 ??? -
next_record
????????????????????????????????????????????????????????????????????????????????????
?????????==??????????????? ?????????????????????????????????????????????????????????==?????? ?????????????????????==??????????????????==????????????????????????????????? Infimum????????????????????????????????? ???????????????????????? ???????????????????????????????????????????????????????????????????????????????????????????????????????????? Supremum??????????????? ??????????????????
?????????????????????????????????????????????????????????????????????????????????????????????????????? ???????????? ??? next_record ??? ?????? 0 ??????????????????????????????????????? ??????????????? ??????????????????????????????????????????????????????
????????????????????????????????????mysql> DELETE FROM page_demo WHERE c1 = 2; --------------------------------------------------- Query OK, 1 row affected (0.02 sec)
?????????2?????????????????????????????????????????????
- ???2????????????????????????????????????????????????????????????????????? delete_mask ???????????? 1 ???
- ???2???????????? next_record ????????????0????????????????????????????????????????????????
- ???1???????????? next_record ????????????3????????????
- ??????????????????????????????????????? ???????????? ??? n_owned ?????? 5 ????????? 4 ???????????????
??????????????????????????????????????????????????????????????????InnoDB???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
??????????????????????????????
?????????????????????????????????????????????????????????????????????????????????????????????
?????? ???????????????????????? ??? NULL????????? ????????????????????????????????????????????????????????????????????????????????????????????????????????????
??????????????????????????????????????????????????????????????????????????????nnd??????????????????
????????????
mysql> INSERT INTO page_demo VALUES(2, 200, 'bbbb');
-------------------------------------------
Query OK, 1 row affected (0.00 sec)
???????????????????????? InnoDB ?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
tips:
???????????????delete_mask???????????????????????????????????????????????????????????????????????????????????????????????????next_record???????????????????????????????????????????????? ???????????????????????????????????????????????????????????????
Page Directory???????????????
?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? ?????????????????????????????????????????????????????????
SELECT * FROM page_demo WHERE c1 = 3;
???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
??????????????????????????????????????????????????????????????????????????????????????????????????????
??????????????????
???????????????????????????????????????????????????????????????
???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????(???????????????)?????????????????????????????????????????????bt???????????????InnoDB??????????????????????????????
???????????????
-
?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
-
?????????????????????????????????????????????????????????????????????????????????????????? n_owned ???????????????????????????????????????????????????????????????????????????????????? ????????????????????????????????????
-
???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? Page Directory ???????????? ????????? ???????????????????????????????????????????????????????????????????????????????????????????????????????????? ??? ??????????????? Slot ??????????????????????????????????????? ??? ????????????
??????????????????????????????????????????????????????????????????
???????????????n_owned???1?????????????????????4????????????????????????
??????????????????????????????????????????5???????????????????????????????????????????????????????????????????????????own??????????????????????????????????????????????????????????????????????????????????????????????????????????????????
?????????????????????????????????
????????????????????????????????????????????????:smiley:
?????????????????????Innodb????????????????????????
==?????????????????????????????????????????? 1 ???????????? ????????????????????????????????????????????????????????? 18 ??????????????????????????????????????????????????????????????? 48 ????????????==
???????????????????????????????????????????????????
- ???????????????????????????????????????????????????????????????????????????????????????????????????????????????
- ??????????????????????????????????????? ????????? ????????????????????????????????????????????????????????????????????????????????????????????????????????? n_owned ??????1??????????????????????????????????????????????????????????????????????????????8??????
- ?????????????????????????????????8???????????????????????????????????????????????????????????????????????????????????????4?????????????????? ???5?????????????????????????????? ????????? ????????????????????????????????????????????????????????????????????????????????????
????????????????????????????????????
mysql> INSERT INTO page_demo VALUES
(5, 500, 'eeee'), (6, 600, 'ffff'), (7, 700, 'gggg'),(8, 800, 'hhhh'),
(9, 900, 'iiii'), (10, 1000, 'jjjj'), (11, 1100, 'kkkk'), (12, 1200, 'llll'),
(13, 1300, 'mmmm'), (14, 1400, 'nnnn'), (15, 1500, 'oooo'), (16, 1600, 'pppp');
Query OK, 12 rows affected (0.00 sec)
-------------------------------------------------------------------
Records: 12 Duplicates: 0 Warnings: 0
??????????????????12?????????????????????????????????????????????????????????????????????18????????????????????????????????????
owned???0????????????????????????????????????slot????????????????????????owned????????????????????????????????????/2??????
?????????16????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? n_owned ??? next_record ??????????????????????????????????????????????????????????????????????????????
??????????????????????????????????????????????????????????????????????????????hhh??????????????????????????????????????????????????????????????????????????????
????????????????????????????????????
???????????????????????????????????????????????????????????????~~~?????????????????????????????????????????????~~~???
??????????????????id=6?????????
- ????????????slot = (0+4)/2=2 id=8 8>6 h=2
- ??????????????????slot = (0+h)/2=2 id=4 4<6 l=1
- h-l=1????????????slot=2???????????????????????????~~~???????????????????????????~~~???
?????????????????????????????????????????????????????????????????????????????????
- ????????????????????????????????????????????????????????????????????????????????????????????????
- ??????????????? next_record ???????????????????????????????????????????????????
???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????ACM?????????????????????
Page Header??????????????????
????????????????????????????????????????????????
???????????????????????????????????????????????????????????????56????????????
??? PAGE_N_DIR_SLOTS ??? PAGE_LAST_INSERT ?????? PAGE_N_RECS ????????????????????????????????????????????????????????????????????????????????????????????????
PAGE_DIRECTION ??? PAGE_N_DIRECTION???
- PAGE_DIRECTION ????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? ??????????????????????????????????????????????????????????????? PAGE_DIRECTION ???
- PAGE_N_DIRECTION ???????????????????????????????????????????????????????????? InnoDB ?????????????????????????????????????????????????????????????????????????????? PAGE_N_DIRECTION ????????????????????????????????????????????????????????????????????????????????????????????????????????? ???????????????????????????
???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
????????????????????????MySQL ??????????????????????????????????????? MySQL – ?????????4919 – ???????????? (juejin.cn)