深入浅出——InnoDB页结构详解,慎入!

??????????????????InnoDB????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????

?????????

???????????????????????????

?????? InnoDB ??????????????????????????????????????????????????????????????? 16KB ??? InnoDB ????????????????????????????????????????????????????????? ??? ??????????????????????????????????????????????????? Insert Buffer ????????????????????? INODE ????????????????????? undo ?????????????????????????????????

????????????????????????????????????????????????

??????

????????????16kb????????????????????????

image-20230613152347650

image-20230613152525187

????????????????????????

?????????????????????????????????????????????User Records???

??????UserRecords??????Free Space??????????????????

emm… ??????????????????????????????????????????,???,????????????????????????????????????????????????

?????????????????????

image-20230613153319733

??????????????????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

?????????????????????

image-20230613163614279

?????????????????????

image-20230613164120289

?????????????????????????????????,???????????????????????????

image-20230613165925624

?????????????????????????????????????????????????????????????????????

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????????????(?????????????????????,???????????????????????????)image-20230613170731689

  • 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:????????????

    image-20230613185203780

    ???????????????wtf???????????????????????????????????????????????????UserRecords???????????????????????????????????? Infimum + Supremum ?????????

    image-20230613185328414

    ??????????????????????????????????????????????????????????????? heap_no ???????????? 0 ??? 1 ??????????????????????????????????????????

  • record_type
    ???????????????????????????
    ?????????4????????????????????? 0 ????????????????????? 1 ??????B+???????????????????????? 2 ??? ?????????????????? 3 ?????????????????????????????????????????????????????????????????????????????????????????????????????????????????? record_type ????????? 0 ???????????????????????????????????? record_type ???????????? 2 ??? 3 ???

  • next_record
    ????????????????????????????????????????????????????????????????????????????????????
    ?????????==??????????????? ?????????????????????????????????????????????????????????==?????? ?????????????????????==??????????????????==????????????????????????????????? Infimum????????????????????????????????? ???????????????????????? ???????????????????????????????????????????????????????????????????????????????????????????????????????????? Supremum??????????????? ??????????????????
    image-20230613190638725

    ?????????????????????????????????????????????????????????????????????????????????????????????????????? ???????????? ??? next_record ??? ?????? 0 ??????????????????????????????????????? ??????????????? ??????????????????????????????????????????????????????
    ????????????????????????????????????

     mysql> DELETE FROM page_demo WHERE c1 = 2;
     ---------------------------------------------------
     Query OK, 1 row affected (0.02 sec)
    

    image-20230613190802262

?????????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)

image-20230613191715331

???????????????????????? InnoDB ?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????

tips:

???????????????delete_mask???????????????????????????????????????????????????????????????????????????????????????????????????next_record???????????????????????????????????????????????? ???????????????????????????????????????????????????????????????

Page Directory???????????????

?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? ?????????????????????????????????????????????????????????

 SELECT * FROM page_demo WHERE c1 = 3;

???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????O(N)O(N)

??????????????????????????????????????????????????????????????????????????????????????????????????????

??????????????????

???????????????????????????????????????????????????????????????

???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????(???????????????)?????????????????????????????????????????????bt???????????????InnoDB??????????????????????????????

???????????????

  1. ?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????

  2. ?????????????????????????????????????????????????????????????????????????????????????????? n_owned ???????????????????????????????????????????????????????????????????????????????????? ????????????????????????????????????

  3. ???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? Page Directory ???????????? ????????? ???????????????????????????????????????????????????????????????????????????????????????????????????????????? ??? ??????????????? Slot ??????????????????????????????????????? ??? ????????????

    image-20230613213010517

??????????????????????????????????????????????????????????????????

???????????????n_owned???1?????????????????????4????????????????????????

??????????????????????????????????????????5???????????????????????????????????????????????????????????????????????????own??????????????????????????????????????????????????????????????????????????????????????????????????????????????????

?????????????????????????????????

image-20230613214417847

????????????????????????????????????????????????: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????????????????????????????????????

image-20230613221349666

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???????????????????????????~~~???????????????????????????~~~???

?????????????????????????????????????????????????????????????????????????????????

  1. ????????????????????????????????????????????????????????????????????????????????????????????????
  2. ??????????????? next_record ???????????????????????????????????????????????????

???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????ACM?????????????????????

Page Header??????????????????

????????????????????????????????????????????????

???????????????????????????????????????????????????????????????56????????????

image-20230613235954699

??? 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 ????????????????????????????????????????????????????????????????????????????????????????????????????????? ???????????????????????????

???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????

image-20230614000650554

????????????????????????MySQL ??????????????????????????????????????? MySQL – ?????????4919 – ???????????? (juejin.cn)

© 版权声明
THE END
喜欢就支持一下吧
点赞0

Warning: mysqli_query(): (HY000/3): Error writing file '/tmp/MYPxu09L' (Errcode: 28 - No space left on device) in /www/wwwroot/583.cn/wp-includes/class-wpdb.php on line 2345
admin的头像-五八三
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

图形验证码
取消
昵称代码图片