* [?›¥????](#?›¥????) * [1. InnoDB](#1-innodb) * [2. MyISAM](#2-myisam) * [3. InnoDB ?? MyISAM ????](#3-innodb-??-myisam-????) * [????????](#????????) * [1. ????](#1-????) * [2. ??????](#2-??????) * [3. ?????](#3-?????) * [4. ????????](#4-????????) * [????](#????) * [1. ????????](#1-????????) * [1.1 B-Tree ????](#11-b-tree-????) * [1.2 ???????](#12-???????) * [1.3. ????????????R-Tree??](#13-????????????r-tree??) * [1.4 ???????](#14-???????) * [2. ?????????](#2-?????????) * [3. ???????](#3-???????) * [3.1 ????????](#31-????????) * [3.2 ??????](#32-??????) * [3.3 ????????](#33-????????) * [3.4 ?????§Ö????](#34-?????§Ö????) * [3.5 ???????](#35-???????) * [3.6 ????????](#36-????????) * [4. B-Tree ?? B+Tree ???](#4-b-tree-??-b+tree-???) * [4. 1 B-Tree](#4-1-b-tree) * [4.2 B+Tree](#42-b+tree) * [4.3 ?????????????? B+Tree](#43-??????????????-b+tree) * [4.4 ?????? B-Tree ?? B+Tree](#44-??????-b-tree-??-b+tree) * [??????????](#??????????) * [1. Explain](#1-explain) * [2. ??????????](#2-??????????) * [3. ??????????](#3-??????????) * [4. ????? DELETE ?? INSERT ???](#4-?????-delete-??-insert-???) * [???????](#???????) * [?????????????](#?????????????) * [1. ???????](#1-???????) * [2. ??????](#2-??????) * [?¦Ï?????](#?¦Ï?????) # ?›¥???? ## 1. InnoDB InnoDB ?? MySQL ??????????????—¨???????? InnoDB ??????????????????????????›¥???µµ ???? MVCC ????????????????????????????????????????????????? ?????????????????????????????????????§Ü????????? ????????????????????????????????????????????????????????§Õ??? hash ?????????????????????????????????????????????????????????? ????§»??????????????????????? ## 2. MyISAM MyISAM ??????????????????????????????????�‰????GIS??????? MyISAM ???????????§Þ????????????????????????? ????????????????????????§³? ????????????????§Þ??????????????????????????????????????????????§»???????????????????????????? ???????????????????§³? ???????? DELAY_KEY_WRITE ??????????????????????????????????????????§Õ???????????§Õ??????§Ö??????????????????????????????????????????????????§Õ????????????????????????§Õ????????????????????????????????????????????????????????? ??????????????????????????????????????????????????????? MyISAM ????? ???????????????????§³?????????????????????????????????? MyISAM?? MyISAM ?????????????????›¥?????????§»???????????¨¢? ## 3. InnoDB ?? MyISAM ???? **????** InnoDB ?????????? **????** InnoDB ????????????? **???????** MyISAM ??????????????? InnoDB ?????????????????????? **????** MyISAM ??????????? InnoDB ??????§Þ????? **????????** MyISAM ???????????????????????? # ???????? ## 1. ???? TINYINT, SMALLINT, MEDIUMINT, INT, BIGINT ?????? 8, 16, 24, 64 ¦Ë?›¥????????????§³??????¨¢? INT(11) ?§Ö????????ÕÇ??????????????????????????›¥??????????????????? ## 2. ?????? FLOAT ?? DOUBLE ??????????DECIMAL ??????§³???????CPU ????????????????????? DECIMAl ??????????? DECIMAL ????????????????????????? FLOAT??DOUBLE ?? DECIMAL ??????????§á????? DECIMAL(18, 9) ?????? 18 ¦Ë??? 9 ¦Ë?›¥§³?????????? 9 ¦Ë?›¥????????? ## 3. ????? ????? CHAR ?? VARCHAR ????????????????????????????? VARCHAR ??????????????????????????›¥??????????????????? UPDATE ????????§Ò??????????????????????????????§³????????§Ø?????????MyISAM ???§Ó????????¦Ä›¥???? InnoDB ??????????????§Ù?????? VARCHAR ??????????¦Â????? CHAR ??????? ## 4. ???????? MySQL ?????????????????????????DATATIME ?? TIMESTAMP?? **DATATIME** ???????? 1001 ?? 9999 ????????????????????? 8 ????›¥??? ??????????? ?????????MySQL ???????????????????????? DATATIME ??????³�2008-01016 22:37:08???????? ANSI ???????????????????????? **TIMESTAMP** ?? UNIX ?????????????? 1970 ?? 1 ?? 1 ????????????????????????????????? 4 ????????????? 1970 ?? ?? 2038 ?? ????????§Û?? MySQL ???? FROM_UNIXTIME() ?????? Unxi ??????????????????? UNIX_TIMESTAMP() ?????????????? Unix ?????? ??????????????????????? TIMESTAMP ?§Ö????????????????????? ????????? TIMESTAMP????????? DATETIME ???§¹?????? # ???? ????????›¥?????????????????????????????????????›¥??????§Ó????????????????? ??????????????????????????????????? ??????§³???????????????????????????????§¹???????§Ö?????????????????§¹????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????¡Â????????? ## 1. ???????? ### 1.1 B-Tree ???? B-Tree ?????????? MySQL ?›¥????????????????? ???????????????????Ñk????????????????????????????????? ????????????????????§µ?????????§Û????????B-Tree ?????????????????????¦¶?????????????§Þ????????????????????????? ?????????????????????????????î• ???????????????§Ö??????§Ó?????????????????? ### 1.2 ??????? ???????????????????????? ?? MySQL ????? Memory ?????????????????? InnoDB ?????????????????§³????????????????????????????????????????????? B-Tree ???????????????????????????????? B-Tree ???????§Û?????????§»?????????????????? ?????????????????????????????????›¥?????????????????????§Ö???????????§³???????????????§Ö??§Ö???????????????????????????????????????????????????????????????????????????????¦¶??????????????????????????¨²????? ### 1.3. ????????????R-Tree?? MyISAM ?›¥??????????????????????????????›¥?? ??????????????????????????????????§¹????????????????????????? ### 1.4 ??????? MyISAM ?›¥???????????????????????????§Ö??????????????????????§Ö???? ??? MATCH AGAINST????????????? WHERE?? ## 2. ????????? - ???????????????????????????? - ?????????????????????????????? - ????? I/O ?????? I/O?? ## 3. ??????? ### 3.1 ???????? ????§Ó??????????§Ó????????????????????????????????????????????????? ?????????????????? actor_id ?§Ö??????? ```sql SELECT actor_id FROM sakila.actor WHERE actor_id + 1 = 5; ``` ### 3.2 ?????? ???? BLOB??TEXT ?? VARCHAR ??????§µ?????????????????????????????????? ???????????????????? **?????????** ?????????????????????????????????????????????§¹???????????? 1 ???????????????¦·??????????????? ### 3.3 ???????? ??????????????????????§Ó????????????????????????????????????¨¢??????????????§µ????? actor_id ?? file_id ??????????????? ```sql SELECT file_id, actor_ id FROM sakila.film_actor WhERE actor_id = 1 OR film_id = 1; ``` ### 3.4 ?????§Ö???? ?????????????????§Ù?????—¨????????????????? customer_id ???????? staff_id ???????????? customer_id ?§Ù??????????????µµ ```sql SELECT COUNT(DISTINCT staff_id)/COUNT(*) AS staff_id_selectivity, COUNT(DISTINCT customer_id)/COUNT(*) AS customer_id_selectivity, COUNT(*) FROM payment; ``` ```html staff_id_selectivity: 0.0001 customer_id_selectivity: 0.0373 COUNT(*): 16049 ``` ### 3.5 ??????? ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/b9e9ae8c-e216-4c01-b267-a50dbeb98fa4.jpg) ????????????????????????????????????›¥????? ????????????????§Ü?????????????›¥?????InnoDB ???????????????§Õ???? B-Tree ???????§³? ?????????????§Õ??????????????????????????????????????????? **???** 1. ??????????????????????? I/O ?????? 2. ???????????? B-Tree ?§µ?????????????? **???** 1. ?????????????????? I/O ??????????????????????????????????—¨???????????????? 2. ??????????????????????????????????????????? 3. ????????????????????????????§Ø???????????¦Ë?¨¢? 4. ?????????????????§µ??›¥????????????????????????????§µ????????¡À????????????? 5. ????§Ò????Ñk????????????????????›¥????????????????????????????????????? ### 3.6 ???????? ??????????????????????¦Å???? ## 4. B-Tree ?? B+Tree ??? ### 4. 1 B-Tree ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/5ed71283-a070-4b21-85ae-f2cbfd6ba6e1.jpg) ??????? B-Tree??????????????????????????? [key, data]??key ?????????data ????????? key ???????? B-Tree ??????????????????????? - ?????????????????????????? B-Tree ??????? - ???????§Ö? key ????????????§µ? - ?????????????????? key ????? keyi ?? keyi+1?????? null?????????????????? key ???? keyi ??§³?? keyi+1?? ?? B-Tree ?§Ñ? key ?????????????????????????????§Ø?????????????????????? data????????????????????????????§Ó????????????????? null ???????????????????????? ???????????????????????? B-Tree ????????????????????????????????????????????????????????? B-Tree ????? ### 4.2 B+Tree ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/63cd5b50-d6d8-4df6-8912-ef4a1dd5ba13.jpg) ?? B-Tree ????B+Tree ?????????? - ??????????????? 2d ?????? 2d+1?? - ?????›¥ data????›¥ key????????›¥??? ### 4.3 ?????????????? B+Tree ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/1ee5f0a5-b8df-43b9-95ab-c516c54ec797.jpg) ????????????????????????? B+Tree ????????? B+Tree ???????????????????????????????????????????????????????????????????????? ### 4.4 ?????? B-Tree ?? B+Tree ?????????????????????????????????????????????????????? B-/+Tree ??????????? ???????????›¥????????ï…?????????????????????????›¥?????????????§³????ï…????›¥???????????????????§µ?????§³???? 4k??????????????????¦Ë????????? ?????????????????????????????›¥??????§µ???????????????????????????›¥????????????????? I/O?????????????????????????????¦Æ?????????????????????????????????????????????????????????????????Àö?????????????????????¨¢????????????????????????????????????????????§³?????????????????????????????? I/O ????????????B-Tree ????¦Ì????????? h-1 ?? I/O??????????—¥???????????? O(h)=O(logdN)????????????§µ????? d ??????????????????? 100????? h ???§³??????????? 3??????????????????h ????????????????????????????????????????????????????????§¹??????? B-Tree ???? B+Tree ????????????????????????? d ?§Û?????? B+Tree ????????? data ??????????§Ú??????????§Ú????????? # ?????????? ## 1. Explain ???????? SQL ???????????§Ò???????????§µ? - select_type : ?????????§Þ????????????????? - key : ???????? - rows : ???????? ## 2. ?????????? ???????????????????????????????????????????????????????§³? ??¨°????? SELECT * ???????????????????§³? ## 3. ?????????? ?????? LIMIT ???????????????§»?§³? ????????????????????????????????ÒÂ????????????????????????????????????????????Ñk???????????????Ý”?§Þ?????????? Explain ???????????? rows ???????????????? ```sql SELECT * FROM sakila.film_actor WHERE film_id = 1; ``` ## 4. ????? DELETE ?? INSERT ??? ??????????§Ö???????????????????????????????????????????????????????§³???????????? ```sql DELEFT FROM messages WHERE create < DATE_SUB(NOW(), INTERVAL 3 MONTH); ``` ```sql rows_affected = 0 do { rows_affected = do_query( "DELETE FROM messages WHERE create < DATE_SUB(NOW(), INTERVAL 3 MONTH) LIMIT 10000") } while rows_affected > 0 ``` # ??????? **1. ????????????** ????????????????§³????§»§³????§Ó???????????????????????????????????ï…??§»???????›¥??????????????????›¥???????????????????¡À???????????? **2. ??¡Â??????????** ??????????????????????§Ö???????????????§Ö?????????????????????§Õ???????????????????? **3. ????§Ù?** ??????????î”??????§Ô?????????????????????????íà??????????????? payDB?????????? userDB ???????????›¥?????????§Û??????????§Û??? **4. ???§Ù?** ????§Ö??????????????›¥??????????????§µ????º– id ??????????????§Ý???? **5. ????§Ù??????§Ù?????** ?????????§Ö???????????????????????????????????§Ù???????? ??????????????????????????????????????§Ù?? **6. ???§Ù???????** ????????? merge ?›¥???µµ **7. ???????????????** (1) ???????? ????§Ù???????????????›¥??????????????????????????????????????????????????????????????????????????????????????????????¨®????§¿????????¦Ã??????????????????????????????? (2) ????????????? ?????????????????????????????????????????????????????????????????????????????????????????????????¦Ë?????????????????????????????????????????¦Â????????????????????§Ø?¦Â?????¨À? # ????????????? ?????????????§Ý???????????????????§Ý???????????????????????????????????????§Ý????????????????????????? ## 1. ??????? **1.1 ??????????§Ý????** ??????????????????????????-????????§Ö????????????????? **1.2 ???? IP ????? IP ?§Û?** ? MySQL ???????????? IP ??????? MySQL ????§¹???????? IP ??????????? MySQL ????????? **1.3 ?§Þ?????????** ???????????¡¤???????????????????????? ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/fabd5fa0-b75e-48d0-9e2c-31471945ceb9.jpg) **1.4 ??????§Õ?????????** ??????????????????§á??????????????????? ## 2. ?????? # ?¦Ï????? - ?????? MySQL - [MySQL ????????????????????? ](http://blog.codinglabs.org/articles/theory-of-mysql-index.html) - [MySQL ???????????? ](http://www.runoob.com/w3cnote/mysql-index.html) - [20+ ?? MySQL ??????????????? ](https://www.jfox.info/20-tiao-mysql-xing-nen-you-hua-de-zui-jia-jing-yan.html)