* [?ݴ????](#?ݴ????)
* [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 ???????

????????????????????????????????????ݴ?????
????????????????§Ü?????????????›¥?????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

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

?? B-Tree ????B+Tree ??????????
- ??????????????? 2d ?????? 2d+1??
- ?????ݴ data????ݴ key????????ݴ???
### 4.3 ?????????????? B+Tree

????????????????????????? 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 ?§Þ?????????**
???????????¡¤????????????????????????

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