## MySQL * [1. ä»ä¹æ¯ç´¢å¼?](#1-ä»ä¹æ¯ç´¢å¼) * [2.ç´¢å¼æ¯ä¸ªä»ä¹æ ·çæ°æ®ç»æå¢?](#2ç´¢å¼æ¯ä¸ªä»ä¹æ ·çæ°æ®ç»æå¢) * [3.Hashç´¢å¼åB+æ ç´¢å¼æä»ä¹åºå«æè 说ä¼å£å¢?](#3hashç´¢å¼åbæ ç´¢å¼æä»ä¹åºå«æè 说ä¼å£å¢) * [4.å¨å»ºç«ç´¢å¼çæ¶å,齿åªäºéè¦èèçå ç´ å¢?](#4å¨å»ºç«ç´¢å¼çæ¶å齿åªäºéè¦èèçå ç´ å¢) * [5.äºè§£è¿åªäºåå¨å¼æï¼åæä»ä¹ä¼ç¼ºç¹ï¼](#5äºè§£è¿åªäºåå¨å¼æåæä»ä¹ä¼ç¼ºç¹) * [6.说ä¸ä¸ä»ä¹æ¯äºå¡çACID屿§å§](#6说ä¸ä¸ä»ä¹æ¯äºå¡çacid屿§å§) * [7.äºå¡çé离级å«äºè§£è¿åï¼](#7äºå¡çé离级å«äºè§£è¿å) * [8.说说InnoDBçç´¢å¼åç](#8说说innodbçç´¢å¼åç) * [说说InnoDBçMVCCæºå¶](#说说innodbçmvccæºå¶) * [9.æäºè§£è¿âå表âçæ¦å¿µåï¼ä»ä¹æ åµä¸ä¼åºç°âå表âï¼](#9æäºè§£è¿åè¡¨çæ¦å¿µåä»ä¹æ åµä¸ä¼åºç°å表) * [10.MySQLç´¢å¼çç±»å](#10mysqlç´¢å¼çç±»å) * [11.æåè¿MySQLçç´¢å¼ä¼åå](#11æåè¿mysqlçç´¢å¼ä¼åå) * [12.ä»ä¹æ¯èç°ç´¢å¼ï¼](#12ä»ä¹æ¯èç°ç´¢å¼) * [13.InnoDBæèç°ç´¢å¼åï¼MyIsamå¢ï¼](#13innodbæèç°ç´¢å¼åmyisamå¢) * [14.MyIsamçæ°æ®æ¯æä¹åå¨çï¼](#14myisamçæ°æ®æ¯æä¹åå¨ç) * [15.InnoDBçæ°æ®æ¯æä¹åå¨çï¼](#15innodbçæ°æ®æ¯æä¹åå¨ç) * [16.InnoDB主é®ç´¢å¼è·é主é®ç´¢å¼å¨æ°æ®åå¨ä¸çå·®å¼](#16innodb主é®ç´¢å¼è·é主é®ç´¢å¼å¨æ°æ®åå¨ä¸çå·®å¼) * [17.InnoDBå 餿æ¡è®°å½åï¼å é¨ä¼æä¹å¤çï¼](#17innodbå 餿æ¡è®°å½åå é¨ä¼æä¹å¤ç) * [18.InnoDBå¦ææ²¡æè®¾ç½®ä¸»é®çè¯ï¼å®å é¨ä¼æä¹å¤çï¼](#18innodbå¦ææ²¡æè®¾ç½®ä¸»é®çè¯å®å é¨ä¼æä¹å¤ç) * [19.为ä»ä¹InnoDBä¸å®ä¼çæä¸»é®ï¼](#19为ä»ä¹innodbä¸å®ä¼çæä¸»é®) * [20.MySQLååºå表äºè§£è¿åï¼](#20mysqlååºå表äºè§£è¿å) * [21.MySQLçredoæ¥å¿åundoæ¥å¿å嫿ä»ä¹ç¨ï¼](#21mysqlçredoæ¥å¿åundoæ¥å¿å嫿ä»ä¹ç¨) * [22.MySQLçredoæ¥å¿çå·çæ¶æº](#22mysqlçredoæ¥å¿çå·çæ¶æº) * [23.MySQLæåªäºéï¼ä»¥ååç§éçä½ç¨ï¼](#23mysqlæåªäºé以ååç§éçä½ç¨) * [24.MySQLä¸varcharä¸charçåºå«ä»¥åvarchar(50)ä¸ç50ä»£è¡¨çæ¶µä¹](#24mysqlä¸varcharä¸charçåºå«ä»¥åvarchar50ä¸ç50ä»£è¡¨çæ¶µä¹) * [25.MySQLæåªäºæ¥å¿ï¼å嫿¯ä»ä¹ç¨å¤ï¼](#25mysqlæåªäºæ¥å¿å嫿¯ä»ä¹ç¨å¤) * [26.å¨åªäºæ åµä¸ä¼åçé对该åå建äºç´¢å¼ä½æ¯å¨æ¥è¯¢çæ¶å并没æä½¿ç¨å¢?](#26å¨åªäºæ åµä¸ä¼åçé对该åå建äºç´¢å¼ä½æ¯å¨æ¥è¯¢çæ¶å并没æä½¿ç¨å¢) * [27. 为ä»ä¹è¦å°½é设å®ä¸ä¸ªä¸»é®?](#27-为ä»ä¹è¦å°½é设å®ä¸ä¸ªä¸»é®) * [28.主é®ä½¿ç¨èªå¢IDè¿æ¯UUID?](#28主é®ä½¿ç¨èªå¢idè¿æ¯uuid) * [29.åæ®µä¸ºä»ä¹è¦æ±å®ä¹ä¸ºnot null?](#29åæ®µä¸ºä»ä¹è¦æ±å®ä¹ä¸ºnot-null) * [30.妿è¦åå¨ç¨æ·çå¯ç æ£å,åºè¯¥ä½¿ç¨ä»ä¹å段è¿è¡åå¨?](#30妿è¦åå¨ç¨æ·çå¯ç æ£ååºè¯¥ä½¿ç¨ä»ä¹å段è¿è¡åå¨) * [31.varchar(10)åint(10)代表ä»ä¹å«ä¹?](#31varchar10åint10代表ä»ä¹å«ä¹) * [32.MySQLçbinlogææå ç§å½å ¥æ ¼å¼?å嫿ä»ä¹åºå«?](#32mysqlçbinlogææå ç§å½å ¥æ ¼å¼å嫿ä»ä¹åºå«) * [33.è¶ å¤§å页æä¹å¤ç?](#33è¶ å¤§å页æä¹å¤ç) * [34.å ³å¿è¿ä¸å¡ç³»ç»éé¢çsqlèæ¶å?ç»è®¡è¿æ ¢æ¥è¯¢å?å¯¹æ ¢æ¥è¯¢é½æä¹ä¼åè¿?](#34å ³å¿è¿ä¸å¡ç³»ç»éé¢çsqlèæ¶åç»è®¡è¿æ ¢æ¥è¯¢åå¯¹æ ¢æ¥è¯¢é½æä¹ä¼åè¿) * [35.ä»ä¹æ¯åå¨è¿ç¨ï¼æåªäºä¼ç¼ºç¹ï¼](#35ä»ä¹æ¯åå¨è¿ç¨æåªäºä¼ç¼ºç¹) * [36.说ä¸è¯´ä¸ä¸ªèå¼](#36说ä¸è¯´ä¸ä¸ªèå¼) * [37.ä»ä¹æ åµä¸åºä¸å»ºæå°å»ºç´¢å¼](#37ä»ä¹æ åµä¸åºä¸å»ºæå°å»ºç´¢å¼) * [38.ä»ä¹æ¯è¡¨ååºï¼](#38ä»ä¹æ¯è¡¨ååº) * [39.表ååºä¸å表çåºå«](#39表ååºä¸å表çåºå«) * [40.表ååºæä»ä¹å¥½å¤ï¼](#40表ååºæä»ä¹å¥½å¤) * [41.MVVCäºè§£è¿å](#41mvvcäºè§£è¿å) * [42.å¨MVCCå¹¶åæ§å¶ä¸ï¼è¯»æä½å¯ä»¥åæåªå ç±»ï¼](#42å¨mvccå¹¶åæ§å¶ä¸è¯»æä½å¯ä»¥åæåªå ç±») * [43.è¡çº§éå®çä¼ç¹](#43è¡çº§éå®çä¼ç¹) * [44.è¡çº§éå®ç缺ç¹](#44è¡çº§éå®ç缺ç¹) * [45.MySQLä¼å](#45mysqlä¼å) * [46.keyåindexçåºå«](#46keyåindexçåºå«) * [47.deleteãtruncateãdropåºå«](#47deletetruncatedropåºå«) * [48.MySQL主ä»å¤å¶åçæµç¨](#48mysql主ä»å¤å¶åçæµç¨) * [49.èªå¢ä¸»é®æå¤§IDè®°å½ï¼MyISAMåInnoDBå嫿¯å¦ä½åå¨ç](#49èªå¢ä¸»é®æå¤§idè®°å½myisamåinnodbå嫿¯å¦ä½åå¨ç) * [50.Mysqlå¦ä½ä¼åDISTINCT?](#50mysqlå¦ä½ä¼ådistinct) * [51.è§£éMySQLå¤è¿æ¥ãå è¿æ¥ä¸èªè¿æ¥çåºå«](#51è§£émysqlå¤è¿æ¥å è¿æ¥ä¸èªè¿æ¥çåºå«) * [åè龿¥](#åè龿¥) #### 1. ä»ä¹æ¯ç´¢å¼? ç´¢å¼æ¯ä¸ç§æ°æ®ç»æ,å¯ä»¥å¸®å©æä»¬å¿«éçè¿è¡æ°æ®çæ¥æ¾ã #### 2.ç´¢å¼æ¯ä¸ªä»ä¹æ ·çæ°æ®ç»æå¢? ç´¢å¼çæ°æ®ç»æåå ·ä½åå¨å¼æçå®ç°æå ³, å¨MySQLä¸ä½¿ç¨è¾å¤çç´¢å¼æHashç´¢å¼,B+æ ç´¢å¼ç,èæä»¬ç»å¸¸ä½¿ç¨çInnoDBåå¨å¼æçé»è®¤ç´¢å¼å®ç°ä¸º:B+æ ç´¢å¼ã #### 3.Hashç´¢å¼åB+æ ç´¢å¼æä»ä¹åºå«æè 说ä¼å£å¢? é¦å è¦ç¥éHashç´¢å¼åB+æ ç´¢å¼çåºå±å®ç°åç: hashç´¢å¼åºå±å°±æ¯hash表,è¿è¡æ¥æ¾æ¶,è°ç¨ä¸æ¬¡hash彿°å°±å¯ä»¥è·åå°ç¸åºçé®å¼,ä¹åè¿è¡å表æ¥è¯¢è·å¾å®é æ°æ®.B+æ åºå±å®ç°æ¯å¤è·¯å¹³è¡¡æ¥æ¾æ .å¯¹äºæ¯ä¸æ¬¡çæ¥è¯¢é½æ¯ä»æ ¹èç¹åºå,æ¥æ¾å°å¶åèç¹æ¹å¯ä»¥è·å¾ææ¥é®å¼,ç¶åæ ¹æ®æ¥è¯¢å¤ææ¯å¦éè¦å表æ¥è¯¢æ°æ®. é£ä¹å¯ä»¥çåºä»ä»¬æä»¥ä¸çä¸å: - hashç´¢å¼è¿è¡ç弿¥è¯¢æ´å¿«(ä¸è¬æ åµä¸),使¯å´æ æ³è¿è¡èå´æ¥è¯¢. å 为å¨hashç´¢å¼ä¸ç»è¿hash彿°å»ºç«ç´¢å¼ä¹å,ç´¢å¼ç顺åºä¸åé¡ºåºæ æ³ä¿æä¸è´,ä¸è½æ¯æèå´æ¥è¯¢.èB+æ ççææèç¹çéµå¾ª(å·¦èç¹å°äºç¶èç¹,å³èç¹å¤§äºç¶èç¹,å¤åæ ä¹ç±»ä¼¼),å¤©ç¶æ¯æèå´. - hashç´¢å¼ä¸æ¯æä½¿ç¨ç´¢å¼è¿è¡æåº,åçåä¸. - hashç´¢å¼ä¸æ¯ææ¨¡ç³æ¥è¯¢ä»¥åå¤åç´¢å¼çæå·¦åç¼å¹é .åç乿¯å 为hash彿°çä¸å¯é¢æµ.AAAAåAAAABçç´¢å¼æ²¡æç¸å ³æ§. - hashç´¢å¼ä»»ä½æ¶åé½é¿å ä¸äºå表æ¥è¯¢æ°æ®,èB+æ å¨ç¬¦åæäºæ¡ä»¶(èç°ç´¢å¼,è¦çç´¢å¼ç)çæ¶åå¯ä»¥åªéè¿ç´¢å¼å®ææ¥è¯¢. - hashç´¢å¼è½ç¶å¨ç弿¥è¯¢ä¸è¾å¿«,使¯ä¸ç¨³å®.æ§è½ä¸å¯é¢æµ,å½æä¸ªé®å¼åå¨å¤§ééå¤çæ¶å,åçhash碰æ,æ¤æ¶æçå¯è½æå·®.èB+æ çæ¥è¯¢æçæ¯è¾ç¨³å®,å¯¹äºææçæ¥è¯¢é½æ¯ä»æ ¹èç¹å°å¶åèç¹,䏿 çé«åº¦è¾ä½. å æ¤,å¨å¤§å¤æ°æ åµä¸,ç´æ¥éæ©B+æ ç´¢å¼å¯ä»¥è·å¾ç¨³å®ä¸è¾å¥½çæ¥è¯¢é度.èä¸éè¦ä½¿ç¨hashç´¢å¼. #### 4.å¨å»ºç«ç´¢å¼çæ¶å,齿åªäºéè¦èèçå ç´ å¢? 建ç«ç´¢å¼çæ¶åä¸è¬è¦èèå°å段ç使ç¨é¢ç,ç»å¸¸ä½ä¸ºæ¡ä»¶è¿è¡æ¥è¯¢çåæ®µæ¯è¾éå.妿éè¦å»ºç«èåç´¢å¼çè¯,è¿éè¦èèèåç´¢å¼ä¸ç顺åº.æ¤å¤ä¹è¦èèå ¶ä»æ¹é¢,æ¯å¦é²æ¢è¿å¤çææå¯¹è¡¨é æå¤ªå¤§çåå.è¿äºé½åå®é çè¡¨ç»æä»¥åæ¥è¯¢æ¹å¼æå ³ã #### 5.äºè§£è¿åªäºåå¨å¼æï¼åæä»ä¹ä¼ç¼ºç¹ï¼ 常ç¨çæ¯MyISAMåInnoDBã InnoDBï¼æ¯æäºå¡ãæ¯æå¤é®ãæ¯æè¡çº§éã䏿¯æå ¨æç´¢å¼ã MyISAMï¼ä¸æ¯æäºå¡ã䏿¯æå¤é®ã䏿¯æè¡çº§éãæ¯æå ¨æç´¢å¼ #### 6.说ä¸ä¸ä»ä¹æ¯äºå¡çACID屿§å§ 1. ååæ§ï¼atomicity) ä¸ä¸ªäºå¡è¦ä¹å ¨é¨æäº¤æåï¼è¦ä¹å ¨é¨å¤±è´¥åæ»ï¼ä¸è½åªæ§è¡å ¶ä¸çä¸é¨åæä½ï¼è¿å°±æ¯äºå¡çååæ§ 2. ä¸è´æ§ï¼consistency) äºå¡çæ§è¡ä¸è½ç ´åæ°æ®åºæ°æ®ç宿´æ§åä¸è´æ§ï¼ä¸ä¸ªäºå¡å¨æ§è¡ä¹ååæ§è¡ä¹åï¼æ°æ®åºé½å¿ é¡»å¤äºä¸è´æ§ç¶æã å¦ææ°æ®åºç³»ç»å¨è¿è¡è¿ç¨ä¸åçæ éï¼æäºäºå¡å°æªå®æå°±è¢«è¿«ä¸æï¼è¿äºæªå®æçäºå¡å¯¹æ°æ®åºæä½çä¿®æ¹æä¸é¨åå·²åå ¥ç©çæ°æ®åºï¼è¿æ¯æ°æ®åºå°±å¤äºä¸ç§ä¸æ£ç¡®çç¶æï¼ä¹å°±æ¯ä¸ä¸è´çç¶æ 3. é离æ§ï¼isolationï¼ äºå¡çéç¦»æ§æ¯æå¨å¹¶åç¯å¢ä¸ï¼å¹¶åçäºå¡æ¶ç¸äºé离çï¼ä¸ä¸ªäºå¡çæ§è¡ä¸è½ä¸è¢«å ¶ä»äºå¡å¹²æ°ãä¸åçäºå¡å¹¶åæä½ç¸åçæ°æ®æ¶ï¼æ¯ä¸ªäºå¡é½æåèªå®æçæ°æ®ç©ºé´ï¼å³ä¸ä¸ªäºå¡å é¨çæä½å使ç¨çæ°æ®å¯¹å ¶ä»å¹¶åäºå¡æ¶é离çï¼å¹¶åæ§è¡çå个äºå¡ä¹é´ä¸è½ç¸äºå¹²æ°ã 卿 åSQLè§èä¸ï¼å®ä¹äº4个äºå¡é离级å«ï¼ä¸åçé离级å«å¯¹äºå¡çå¤çä¸åï¼å嫿¯ï¼æªææè¯»åï¼ææè¯»åï¼å¯éå¤è¯»åå串è¡å 4. æä¹ æ§ï¼durabilityï¼ ä¸æ¦äºå¡æäº¤ï¼é£ä¹å®å¯¹æ°æ®åºä¸çå¯¹åºæ°æ®çç¶æç忴就伿°¸ä¹ ä¿åå°æ°æ®åºä¸ã--å³ä½¿åçç³»ç»å´©æºææºå¨å®æºçæ éï¼åªè¦æ°æ®åºè½å¤éæ°å¯å¨ï¼é£ä¹ä¸å®è½å¤å°å ¶æ¢å¤å°äºå¡æåç»æçç¶æ #### 7.äºå¡çé离级å«äºè§£è¿åï¼ 1ãè¯»æªæäº¤ï¼Read Uncommitedï¼ï¼è¯¥é离级å«å 许è读åï¼å ¶éç¦»çº§å«æä½ï¼æ¯å¦äºå¡Aåäºå¡Båæ¶è¿è¡ï¼äºå¡A卿´ä¸ªæ§è¡é¶æ®µï¼ä¼å°ææ°æ®çå¼ä»1å¼å§ä¸ç´å å°10ï¼ç¶åè¿è¡äºå¡æäº¤ï¼æ¤æ¶ï¼äºå¡Bè½å¤çå°è¿ä¸ªæ°æ®é¡¹å¨äºå¡Aæä½è¿ç¨ä¸çææä¸é´å¼ï¼å¦1åæ2ï¼2åæ3çï¼ï¼è对è¿ä¸ç³»åçä¸é´å¼ç读åå°±æ¯æªææè¯»å 2ãææè¯»åä¹ç§°ä¸ºå·²æäº¤è¯»ï¼Read Commitedï¼ï¼ææè¯»ååªå 许è·åå·²ç»æäº¤çæ°æ®ãæ¯å¦äºå¡Aåäºå¡Båæ¶è¿è¡ï¼äºå¡Aè¿è¡+1æä½ï¼æ¤æ¶ï¼äºå¡Bæ æ³çå°è¿ä¸ªæ°æ®é¡¹å¨äºå¡Aæä½è¿ç¨ä¸çææä¸é´å¼ï¼åªè½çå°æç»ç10ãå¦å¤ï¼å¦æè¯´æä¸ä¸ªäºå¡Cï¼åäºå¡Aè¿è¡é常类似çæä½ï¼åªæ¯äºå¡Cæ¯å°æ°æ®é¡¹ä»10å å°20ï¼æ¤æ¶äºå¡Bä¹åæ ·å¯ä»¥è¯»åå°20ï¼å³ææè¯»åå 许ä¸å¯éå¤è¯»åã 3ãå¯éå¤è¯»ï¼Repeatable Read) å°±æ¯ä¿è¯å¨äºå¡å¤çè¿ç¨ä¸ï¼å¤æ¬¡è¯»ååä¸ä¸ªæ°æ®æ¶ï¼å ¶å¼é½åäºå¡å¼å§æ¶å»æ¯ä¸è´çï¼å æ¤è¯¥äºå¡çº§å«ç¦æ¢ä¸å¯éå¤è¯»ååè读åï¼ä½æ¯æå¯è½åºç°å¹»å½±æ°æ®ãæè°å¹»å½±æ°æ®ï¼å°±æ¯æåæ ·çäºå¡æä½ï¼å¨åå两个æ¶é´æ®µå æ§è¡å¯¹åä¸ä¸ªæ°æ®é¡¹ç读åï¼å¯è½åºç°ä¸ä¸è´çç»æãå¨ä¸é¢çä¾åä¸ï¼å¯éå¤è¯»åé离级å«è½å¤ä¿è¯äºå¡Bå¨ç¬¬ä¸æ¬¡äºå¡æä½è¿ç¨ä¸ï¼å§ç»å¯¹æ°æ®é¡¹è¯»åå°1ï¼ä½æ¯å¨ä¸ä¸æ¬¡äºå¡æä½ä¸ï¼å³ä½¿äºå¡Bï¼æ³¨æï¼äºå¡ååè½ç¶ç¸åï¼ä½æ¯æçæ¯å¦ä¸ä¸ªäºå¡æä½ï¼éç¨åæ ·çæ¥è¯¢æ¹å¼ï¼å°±å¯è½è¯»åå°10æ20ï¼ 4ã串è¡å æ¯æä¸¥æ ¼çäºå¡é离级å«ï¼å®è¦æ±ææäºå¡è¢«ä¸²è¡æ§è¡ï¼å³äºå¡åªè½ä¸ä¸ªæ¥ä¸ä¸ªçè¿è¡å¤çï¼ä¸è½å¹¶åæ§è¡ã #### 8.说说InnoDBçç´¢å¼åç 详è§ï¼https://www.cnblogs.com/williamjie/p/11081081.html #### 说说InnoDBçMVCCæºå¶ 详è§ï¼https://baijiahao.baidu.com/s?id=1629409989970483292 #### 9.æäºè§£è¿âå表âçæ¦å¿µåï¼ä»ä¹æ åµä¸ä¼åºç°âå表âï¼ å表就æ¯å éè¿æ°æ®åºç´¢å¼æ«æåºæ°æ®æå¨çè¡ï¼åéè¿è¡ä¸»é®idååºç´¢å¼ä¸æªæä¾çæ°æ®ï¼å³åºäºé主é®ç´¢å¼çæ¥è¯¢éè¦å¤æ«æä¸æ£µç´¢å¼æ ã 彿¥è¯¢çåæ®µå¨äºçº§ç´¢å¼ä¸æ²¡æçæ¶åï¼å°±éè¦âå表âå¨ä¸»é®ç´¢å¼ä¸åæ¥ä¸æ¬¡ã #### 10.MySQLç´¢å¼çç±»å èç°ç´¢å¼ãäºçº§ï¼è¾ å©ï¼ç´¢å¼ Bæ ç´¢å¼ãhashç´¢å¼ #### 11.æåè¿MySQLçç´¢å¼ä¼åå 详è§ï¼https://blog.csdn.net/m0_37984616/article/details/81047676 #### 12.ä»ä¹æ¯èç°ç´¢å¼ï¼ èç°ç´¢å¼ï¼å°æ°æ®åå¨ä¸ç´¢å¼æ¾å°äºä¸åï¼æ¾å°ç´¢å¼ä¹å°±æ¾å°äºæ°æ® éèç°ç´¢å¼ï¼å°æ°æ®ä¸ç´¢å¼åå¼åå¨ï¼ç´¢å¼ç»æçå¶åèç¹æåäºæ°æ®ç对åºè¡ #### 13.InnoDBæèç°ç´¢å¼åï¼MyIsamå¢ï¼ InnoDBæèç°ç´¢å¼ï¼ä¸»é®ç´¢å¼å°±æ¯èç°ç´¢å¼ãMyIsam没æèç°ç´¢å¼ï¼å 为ä»çç´¢å¼åè®°å½è¡æ¯åå¼åå¨çã #### 14.MyIsamçæ°æ®æ¯æä¹åå¨çï¼ MyIsamç´¢å¼çèç¹ä¸åå¨çæ¯æ°æ®çç©çå°åï¼ç£éåæåºï¼ï¼å¨æ¥æ¾æ°æ®æ¶ï¼æ¥æ¾å°ç´¢å¼åï¼æ ¹æ®ç´¢å¼èç¹ä¸çç©çå°åï¼æ¥æ¾å°å ·ä½çæ°æ®å 容ã #### 15.InnoDBçæ°æ®æ¯æä¹åå¨çï¼ InnoDBç主é®ç´¢å¼æä»¶ä¸ç´æ¥åæ¾è¯¥è¡æ°æ®ï¼ç§°ä¸ºèç°ç´¢å¼ï¼éä¸»ç´¢å¼æå对主é®çå¼ç¨ã #### 16.InnoDB主é®ç´¢å¼è·é主é®ç´¢å¼å¨æ°æ®åå¨ä¸çå·®å¼ ä¸»é®ç´¢å¼çå¶åèç¹åçæ¯æ´è¡æ°æ®ãå¨ InnoDB éï¼ä¸»é®ç´¢å¼ä¹è¢«ç§°ä¸ºèç°ç´¢å¼ï¼clustered indexï¼ã é主é®ç´¢å¼çå¶åèç¹å 容æ¯ä¸»é®çå¼ãå¨ InnoDB éï¼é主é®ç´¢å¼ä¹è¢«ç§°ä¸ºäºçº§ç´¢å¼ï¼secondary indexï¼ã #### 17.InnoDBå 餿æ¡è®°å½åï¼å é¨ä¼æä¹å¤çï¼ è®°å½å¤´ä¿¡æ¯éçdelete_maskæ è®°ä½è®¾ç½®ä¸º1ï¼è¡¨ç¤ºè¯¥è®°å½å·²å é¤ï¼ï¼åæ¶å°è®°å½ä»è®°å½è¡é¾è¡¨ä¸æå¼ï¼å¹¶å å ¥å°åå¾é¾è¡¨ä¸ï¼åå¾é¾è¡¨ç空é´åç»å¯ä»¥å¤ç¨ã #### 18.InnoDBå¦ææ²¡æè®¾ç½®ä¸»é®çè¯ï¼å®å é¨ä¼æä¹å¤çï¼ ä¼å 使ç¨ç¨æ·èªå®ä¹ä¸»é®ä½ä¸ºä¸»é®ï¼å¦æç¨æ·æ²¡æå®ä¹ä¸»é®ï¼åéåä¸ä¸ªUniqueé®ä½ä¸ºä¸»é®ï¼å¦æè¡¨ä¸è¿Uniqueé®é½æ²¡æå®ä¹çè¯ï¼åInnoDBä¼ä¸ºè¡¨é»è®¤æ·»å ä¸ä¸ªå为row_idçéèåä½ä¸ºä¸»é®ãæä»¥æä»¬ä»ä¸è¡¨ä¸å¯ä»¥çåºï¼InnoDBåå¨å¼æä¼ä¸ºæ¯æ¡è®°å½é½æ·»å transaction_id å roll_pointer è¿ä¸¤ä¸ªåï¼ä½æ¯ row_id æ¯å¯éçï¼å¨æ²¡æèªå®ä¹ä¸»é®ä»¥åUniqueé®çæ åµä¸æä¼æ·»å 该åï¼ãè¿äºéèåçå¼ä¸ç¨æä»¬æå¿ï¼InnoDBåå¨å¼æä¼èªå·±å¸®æä»¬çæçã #### 19.为ä»ä¹InnoDBä¸å®ä¼çæä¸»é®ï¼ å 为Innodbçæ°æ®ç»ææ¯éè¿èç°ç´¢å¼ç»ç»èµ·æ¥çï¼å¦ææ²¡æä¸»é®çè¯ï¼éè¿å ¶ä»ç´¢å¼åè¡¨çæ¶åæ²¡æ³æ¥å°ç¸åºçæ°æ®è¡ã #### 20.MySQLååºå表äºè§£è¿åï¼ è¯¦è§ï¼https://baijiahao.baidu.com/s?id=1622441635115622194 #### 21.MySQLçredoæ¥å¿åundoæ¥å¿å嫿ä»ä¹ç¨ï¼ 1ï¼redo ä½ç¨ï¼ä¿è¯äºå¡çæä¹ æ§ MySQLä½ä¸ºä¸ä¸ªåå¨ç³»ç»ï¼ä¸ºäºä¿è¯æ°æ®çå¯é æ§ï¼æç»å¾è½çã使¯ï¼åä¸ºäºæ°æ®åå ¥çé度ï¼éè¦å¼å ¥åºäºå åç"ç¼å²æ± "ãå ¶å®ä¸æ¢MySQLï¼è¿ç§å¼å ¥ç¼å²æ¥è§£å³é度é®é¢çææ³æ å¤ä¸å¨ãæ¢ç¶æ°æ®æ¯å ç¼åå¨ç¼å²æ± ä¸ï¼ç¶åå以æç§æ¹å¼å·æ°å°ç£çï¼é£ä¹å°±åå¨å 宿ºå¯¼è´çç¼å²æ± ä¸çæ°æ®ä¸¢å¤±ï¼ä¸ºäºè§£å³è¿ç§æ åµä¸çæ°æ®ä¸¢å¤±é®é¢ï¼å¼å ¥äºredo logãå¨å ¶ä»åå¨ç³»ç»ï¼æ¯å¦Elasticsearchä¸ï¼ä¹æç±»ä¼¼çæºå¶ï¼å«translogã 使¯ä¸è¬è®¨è®ºæ°æ®åå ¥æ¶ï¼å¨MySQLä¸ï¼ä¸è¬å«äºå¡æä½ï¼æ ¹æ®äºå¡çACIDç¹æ§ï¼å¦ä½ä¿è¯ä¸ä¸ªäºå¡æäº¤åDurabilityçä¿è¯ï¼èè¿å°±æ¯ redo log çä½ç¨ãå½åMySQLåç¨æ·æ°æ®æ¶ï¼å åredo logï¼ç¶åredo logæ ¹æ®"æç§æ¹å¼"æä¹ åå°ç£çï¼åæredo log fileï¼ç¨æ·æ°æ®åå¨"buffer"ä¸(æ¯å¦æ°æ®é¡µãç´¢å¼é¡µ)ã妿åç宿ºï¼å读åç£çä¸ç redo log file è¿è¡æ°æ®çæ¢å¤ãä»è¿ä¸ªè§åº¦æ¥è¯´ï¼MySQL äºå¡çæä¹ æ§æ¯éè¿ redo log æ¥å®ç°çã 2ï¼undo ä½ç¨ï¼å®ç°äºå¡åæ» Undo logæ¯InnoDB MVCCäºå¡ç¹æ§çéè¦ç»æé¨åãå½æä»¬å¯¹è®°å½åäºåæ´æä½æ¶å°±ä¼äº§çundoè®°å½ï¼Undoè®°å½é»è®¤è¢«è®°å½å°ç³»ç»è¡¨ç©ºé´(ibdata)ä¸ï¼ä½ä»5.6å¼å§ï¼ä¹å¯ä»¥ä½¿ç¨ç¬ç«çUndo 表空é´ã Undoè®°å½ä¸åå¨çæ¯èçæ¬æ°æ®ï¼å½ä¸ä¸ªæ§çäºå¡éè¦è¯»åæ°æ®æ¶ï¼ä¸ºäºè½è¯»åå°èçæ¬çæ°æ®ï¼éè¦é¡ºçundo龿¾å°æ»¡è¶³å ¶å¯è§æ§çè®°å½ãå½çæ¬é¾å¾é¿æ¶ï¼é常å¯ä»¥è®¤ä¸ºè¿æ¯ä¸ªæ¯è¾èæ¶çæä½ã 大夿°å¯¹æ°æ®çåæ´æä½å æ¬INSERT/DELETE/UPDATEï¼å ¶ä¸INSERTæä½å¨äºå¡æäº¤ååªå¯¹å½åäºå¡å¯è§ï¼å æ¤äº§ççUndoæ¥å¿å¯ä»¥å¨äºå¡æäº¤åç´æ¥å é¤ï¼è°ä¼å¯¹åæå ¥çæ°æ®æå¯è§æ§éæ±å¢ï¼ï¼ï¼ï¼è对äºUPDATE/DELETEåéè¦ç»´æ¤å¤çæ¬ä¿¡æ¯ï¼å¨InnoDBéï¼UPDATEåDELETEæä½äº§ççUndoæ¥å¿è¢«å½æä¸ç±»ï¼å³update_undoã #### 22.MySQLçredoæ¥å¿çå·çæ¶æº log buffer空é´ä¸è¶³æ¶ äºå¡æäº¤æ¶ åå°çº¿ç¨ä¸åçå·å·å· æ£å¸¸å ³éæå¡å¨æ¶ åæè°çcheckpointæ¶ #### 23.MySQLæåªäºéï¼ä»¥ååç§éçä½ç¨ï¼ 详è§ï¼https://blog.csdn.net/qq_40378034/article/details/90904573 #### 24.MySQLä¸varcharä¸charçåºå«ä»¥åvarchar(50)ä¸ç50ä»£è¡¨çæ¶µä¹ (1)ãvarcharä¸charçåºå« (2)ãvarchar(50)ä¸50çæ¶µä¹ (3)ãintï¼20ï¼ä¸20çæ¶µä¹ (4)ãmysql为ä»ä¹è¿ä¹è®¾è®¡ #### 25.MySQLæåªäºæ¥å¿ï¼å嫿¯ä»ä¹ç¨å¤ï¼ mysqlæ¥å¿ä¸è¬å为5ç§ - é误æ¥å¿ï¼-log-err (è®°å½å¯å¨ï¼è¿è¡ï¼åæ¢mysqlæ¶åºç°çä¿¡æ¯) - äºè¿å¶æ¥å¿ï¼-log-bin ï¼è®°å½æææ´æ¹æ°æ®çè¯å¥ï¼è¿ç¨äºå¤å¶ï¼æ¢å¤æ°æ®åºç¨ï¼ - æ¥è¯¢æ¥å¿ï¼-log ï¼è®°å½å»ºç«ç客æ·ç«¯è¿æ¥åæ§è¡çè¯å¥ï¼ - æ ¢æ¥è¯¢æ¥å¿: -log-slow-queries ï¼è®°å½æææ§è¡è¶ è¿long_query_timeç§çæææ¥è¯¢ï¼ - æ´æ°æ¥å¿: -log-update ï¼äºè¿å¶æ¥å¿å·²ç»ä»£æ¿äºèçæ´æ°æ¥å¿ï¼æ´æ°æ¥å¿å¨MySQL5.1ä¸ä¸å使ç¨ï¼ #### 26.å¨åªäºæ åµä¸ä¼åçé对该åå建äºç´¢å¼ä½æ¯å¨æ¥è¯¢çæ¶å并没æä½¿ç¨å¢? - 使ç¨ä¸çäºæ¥è¯¢, - ååä¸äºæ°å¦è¿ç®æè 彿° - å¨å符串likeæ¶å·¦è¾¹æ¯éé 符.类似äº'%aaa'. - å½mysqlåæå ¨è¡¨æ«ææ¯ä½¿ç¨ç´¢å¼å¿«çæ¶åä¸ä½¿ç¨ç´¢å¼. - å½ä½¿ç¨èåç´¢å¼,åé¢ä¸ä¸ªæ¡ä»¶ä¸ºèå´æ¥è¯¢,åé¢çå³ä½¿ç¬¦åæå·¦åç¼åå,乿 æ³ä½¿ç¨ç´¢å¼. 以䏿 åµ,MySQLæ æ³ä½¿ç¨ç´¢å¼. #### 27. 为ä»ä¹è¦å°½é设å®ä¸ä¸ªä¸»é®? 䏻鮿¯æ°æ®åºç¡®ä¿æ°æ®è¡å¨æ´å¼ 表å¯ä¸æ§çä¿é,å³ä½¿ä¸å¡ä¸æ¬å¼ 表没æä¸»é®,ä¹å»ºè®®æ·»å ä¸ä¸ªèªå¢é¿çIDåä½ä¸ºä¸»é®.设å®äºä¸»é®ä¹å,å¨åç»çå æ¹æ¥çæ¶åå¯è½æ´å å¿«é以åç¡®ä¿æä½æ°æ®èå´å®å ¨ã #### 28.主é®ä½¿ç¨èªå¢IDè¿æ¯UUID? æ¨è使ç¨èªå¢ID,ä¸è¦ä½¿ç¨UUID. å 为å¨InnoDBåå¨å¼æä¸,主é®ç´¢å¼æ¯ä½ä¸ºèç°ç´¢å¼åå¨ç,ä¹å°±æ¯è¯´,主é®ç´¢å¼çB+æ å¶åèç¹ä¸åå¨äºä¸»é®ç´¢å¼ä»¥åå ¨é¨çæ°æ®(æç §é¡ºåº),妿䏻é®ç´¢å¼æ¯èªå¢ID,é£ä¹åªéè¦ä¸æååæåå³å¯,妿æ¯UUID,ç±äºå°æ¥çIDä¸åæ¥ç大å°ä¸ç¡®å®,ä¼é æé常å¤çæ°æ®æå ¥,æ°æ®ç§»å¨,ç¶å导è´äº§çå¾å¤çå åç¢ç,è¿èé ææå ¥æ§è½çä¸é. æ»ä¹,卿°æ®é大ä¸äºçæ åµä¸,ç¨èªå¢ä¸»é®æ§è½ä¼å¥½ä¸äº. *å¾çæ¥æºäºã髿§è½MySQLã: å ¶ä¸é»è®¤åç¼ä¸ºä½¿ç¨èªå¢ID,_uuid为使ç¨UUID为主é®çæµè¯,æµè¯äºæå ¥100wè¡å300wè¡çæ§è½  å ³äºä¸»é®æ¯èç°ç´¢å¼,å¦ææ²¡æä¸»é®,InnoDBä¼éæ©ä¸ä¸ªå¯ä¸é®æ¥ä½ä¸ºèç°ç´¢å¼,å¦ææ²¡æå¯ä¸é®,ä¼çæä¸ä¸ªéå¼ç主é®ã #### 29.åæ®µä¸ºä»ä¹è¦æ±å®ä¹ä¸ºnot null? MySQLå®ç½è¿æ ·ä»ç»: > NULL columns require additional space in the rowto record whether their values are NULL. For MyISAM tables, each NULL columntakes one bit extra, rounded up to the nearest byte. nullå¼ä¼å ç¨æ´å¤çåè,ä¸ä¼å¨ç¨åºä¸é æå¾å¤ä¸é¢æä¸ç¬¦çæ åµã #### 30.妿è¦åå¨ç¨æ·çå¯ç æ£å,åºè¯¥ä½¿ç¨ä»ä¹å段è¿è¡åå¨? å¯ç æ£å,ç,ç¨æ·èº«ä»½è¯å·çåºå®é¿åº¦çå符串åºè¯¥ä½¿ç¨charè䏿¯varcharæ¥åå¨,è¿æ ·å¯ä»¥èç空é´ä¸æé«æ£ç´¢æçã #### 31.varchar(10)åint(10)代表ä»ä¹å«ä¹? varcharç10代表äºç³è¯·ç空é´é¿åº¦,乿¯å¯ä»¥åå¨çæ°æ®çæå¤§é¿åº¦,èintç10åªæ¯ä»£è¡¨äºå±ç¤ºçé¿åº¦,ä¸è¶³10ä½ä»¥0å¡«å .ä¹å°±æ¯è¯´,int(1)åint(10)æè½åå¨çæ°å大å°ä»¥åå ç¨ç空é´é½æ¯ç¸åç,åªæ¯å¨å±ç¤ºæ¶æç §é¿åº¦å±ç¤ºã #### 32.MySQLçbinlogææå ç§å½å ¥æ ¼å¼?å嫿ä»ä¹åºå«? æä¸ç§æ ¼å¼,statement,rowåmixed. - statement模å¼ä¸,è®°å½åå 为è¯å¥.峿¯ä¸ä¸ªsqlé æçå½±åä¼è®°å½.ç±äºsqlçæ§è¡æ¯æä¸ä¸æç,å æ¤å¨ä¿åçæ¶åéè¦ä¿åç¸å ³çä¿¡æ¯,åæ¶è¿æä¸äºä½¿ç¨äºå½æ°ä¹ç±»çè¯å¥æ æ³è¢«è®°å½å¤å¶. - row级å«ä¸,è®°å½åå 为æ¯ä¸è¡çæ¹å¨,åºæ¬æ¯å¯ä»¥å ¨é¨è®°ä¸æ¥ä½æ¯ç±äºå¾å¤æä½,ä¼å¯¼è´å¤§éè¡çæ¹å¨(æ¯å¦alter table),å æ¤è¿ç§æ¨¡å¼çæä»¶ä¿åçä¿¡æ¯å¤ªå¤,æ¥å¿é太大. - mixed. ä¸ç§æä¸çæ¹æ¡,æ®éæä½ä½¿ç¨statementè®°å½,彿 æ³ä½¿ç¨statementçæ¶å使ç¨row. æ¤å¤,æ°ççMySQLä¸å¯¹row级å«ä¹åäºä¸äºä¼å,å½è¡¨ç»æåçååçæ¶å,ä¼è®°å½è¯å¥è䏿¯éè¡è®°å½ã #### 33.è¶ å¤§å页æä¹å¤ç? è¶ å¤§çå页ä¸è¬ä»ä¸¤ä¸ªæ¹å䏿¥è§£å³. - æ°æ®åºå±é¢,è¿ä¹æ¯æä»¬ä¸»è¦éä¸å ³æ³¨ç(è½ç¶æ¶ææ²¡é£ä¹å¤§),类似äº`select * from table where age > 20 limit 1000000,10`è¿ç§æ¥è¯¢å ¶å®ä¹æ¯æå¯ä»¥ä¼åçä½å°ç. è¿æ¡è¯å¥éè¦load1000000æ°æ®ç¶ååºæ¬ä¸å ¨é¨ä¸¢å¼,åªå10æ¡å½ç¶æ¯è¾æ ¢. 彿¶æä»¬å¯ä»¥ä¿®æ¹ä¸º`select * from table where id in (select id from table where age > 20 limit 1000000,10)`.è¿æ ·è½ç¶ä¹loadäºä¸ç¾ä¸çæ°æ®,使¯ç±äºç´¢å¼è¦ç,è¦æ¥è¯¢çææå段é½å¨ç´¢å¼ä¸,æä»¥é度ä¼å¾å¿«. 忶妿IDè¿ç»ç好,æä»¬è¿å¯ä»¥`select * from table where id > 1000000 limit 10`,æç乿¯ä¸éç,ä¼åçå¯è½æ§æè®¸å¤ç§,使¯æ ¸å¿ææ³é½ä¸æ ·,å°±æ¯åå°loadçæ°æ®. - ä»éæ±çè§åº¦åå°è¿ç§è¯·æ±â¦.ä¸»è¦æ¯ä¸å类似çéæ±(ç´æ¥è·³è½¬å°å ç¾ä¸é¡µä¹åçå ·ä½æä¸é¡µ.åªå 许é页æ¥çæè æç §ç»å®ç路线走,è¿æ ·å¯é¢æµ,å¯ç¼å)以å鲿¢IDæ³æ¼ä¸è¿ç»è¢«äººæ¶ææ»å». è§£å³è¶ 大å页,å ¶å®ä¸»è¦æ¯é ç¼å,å¯é¢æµæ§çæåæ¥å°å 容,ç¼åè³redisçk-Væ°æ®åºä¸,ç´æ¥è¿åå³å¯. å¨é¿éå·´å·´ãJavaå¼åæåãä¸,å¯¹è¶ å¤§å页çè§£å³åæ³æ¯ç±»ä¼¼äºä¸é¢æå°ç第ä¸ç§ã  #### 34.å ³å¿è¿ä¸å¡ç³»ç»éé¢çsqlèæ¶å?ç»è®¡è¿æ ¢æ¥è¯¢å?å¯¹æ ¢æ¥è¯¢é½æä¹ä¼åè¿? å¨ä¸å¡ç³»ç»ä¸,é¤äºä½¿ç¨ä¸»é®è¿è¡çæ¥è¯¢,å ¶ä»çæé½ä¼å¨æµè¯åºä¸æµè¯å ¶èæ¶,æ ¢æ¥è¯¢çç»è®¡ä¸»è¦ç±è¿ç»´å¨å,ä¼å®æå°ä¸å¡ä¸çæ ¢æ¥è¯¢åé¦ç»æä»¬ã æ ¢æ¥è¯¢çä¼åé¦å è¦ææç½æ ¢çåå æ¯ä»ä¹? æ¯æ¥è¯¢æ¡ä»¶æ²¡æå½ä¸ç´¢å¼?æ¯loadäºä¸éè¦çæ°æ®å?è¿æ¯æ°æ®é太大? æä»¥ä¼å乿¯é对è¿ä¸ä¸ªæ¹åæ¥ç, - é¦å åæè¯å¥,ççæ¯å¦loadäºé¢å¤çæ°æ®,å¯è½æ¯æ¥è¯¢äºå¤ä½çè¡å¹¶ä¸æå¼æäº,å¯è½æ¯å è½½äºè®¸å¤ç»æä¸å¹¶ä¸éè¦çå,对è¯å¥è¿è¡åæä»¥åéåã - åæè¯å¥çæ§è¡è®¡å,ç¶åè·å¾å ¶ä½¿ç¨ç´¢å¼çæ åµ,ä¹åä¿®æ¹è¯å¥æè ä¿®æ¹ç´¢å¼,使å¾è¯å¥å¯ä»¥å°½å¯è½çå½ä¸ç´¢å¼ã - 妿坹è¯å¥çä¼åå·²ç»æ æ³è¿è¡,å¯ä»¥èè表ä¸çæ°æ®éæ¯å¦å¤ªå¤§,妿æ¯çè¯å¯ä»¥è¿è¡æ¨ªåæè 纵åçå表ã #### 35.ä»ä¹æ¯åå¨è¿ç¨ï¼æåªäºä¼ç¼ºç¹ï¼ åå¨è¿ç¨æ¯ä¸äºé¢ç¼è¯çSQLè¯å¥ã 1ãæ´å ç´ç½ççè§£ï¼åå¨è¿ç¨å¯ä»¥è¯´æ¯ä¸ä¸ªè®°å½éï¼å®æ¯ç±ä¸äºT-SQLè¯å¥ç»æç代ç åï¼è¿äºT-SQLè¯å¥ä»£ç åä¸ä¸ªæ¹æ³ä¸æ ·å®ç°ä¸äºåè½ï¼å¯¹å表æå¤è¡¨çå¢å æ¹æ¥ï¼ï¼ç¶ååç»è¿ä¸ªä»£ç ååä¸ä¸ªååï¼å¨ç¨å°è¿ä¸ªåè½çæ¶åè°ç¨ä»å°±è¡äºã 2ãåå¨è¿ç¨æ¯ä¸ä¸ªé¢ç¼è¯ç代ç åï¼æ§è¡æçæ¯è¾é«,ä¸ä¸ªåå¨è¿ç¨æ¿ä»£å¤§éT_SQLè¯å¥ ï¼å¯ä»¥éä½ç½ç»éä¿¡éï¼æé«éä¿¡éç,å¯ä»¥ä¸å®ç¨åº¦ä¸ç¡®ä¿æ°æ®å®å ¨ 使¯,å¨äºèç½é¡¹ç®ä¸,å ¶å®æ¯ä¸å¤ªæ¨èåå¨è¿ç¨ç,æ¯è¾åºåçå°±æ¯é¿éçãJavaå¼åæåãä¸ç¦æ¢ä½¿ç¨åå¨è¿ç¨,æä¸ªäººççè§£æ¯,å¨äºèç½é¡¹ç®ä¸,è¿ä»£å¤ªå¿«,项ç®ççå½å¨æä¹æ¯è¾ç,äººåæµå¨ç¸æ¯äºä¼ ç»ç项ç®ä¹æ´å é¢ç¹,å¨è¿æ ·çæ åµä¸,åå¨è¿ç¨ç管çç¡®å®æ¯æ²¡æé£ä¹æ¹ä¾¿,åæ¶,å¤ç¨æ§ä¹æ²¡æå卿å¡å±é£ä¹å¥½ã #### 36.说ä¸è¯´ä¸ä¸ªèå¼ ç¬¬ä¸èå¼: æ¯ä¸ªåé½ä¸å¯ä»¥åæå. 第äºèå¼: é主é®åå®å ¨ä¾èµäºä¸»é®,èä¸è½æ¯ä¾èµäºä¸»é®çä¸é¨å. 第ä¸èå¼: é主é®ååªä¾èµäºä¸»é®,ä¸ä¾èµäºå ¶ä»é主é®ã å¨è®¾è®¡æ°æ®åºç»æçæ¶å,è¦å°½ééµå®ä¸èå¼,妿ä¸éµå®,å¿ é¡»æè¶³å¤ççç±.æ¯å¦æ§è½. äºå®ä¸æä»¬ç»å¸¸ä¼ä¸ºäºæ§è½è妥忰æ®åºç设计ã #### 37.ä»ä¹æ åµä¸åºä¸å»ºæå°å»ºç´¢å¼ 1ã表记å½å¤ªå° 2ãç»å¸¸æå ¥ãå é¤ãä¿®æ¹ç表 3ãæ°æ®éå¤ä¸åå¸å¹³åçè¡¨åæ®µï¼åå¦ä¸ä¸ªè¡¨æ10ä¸è¡è®°å½ï¼æä¸ä¸ªå段AåªæTåF两ç§å¼ï¼ä¸æ¯ä¸ªå¼çå叿¦ç大约为50%ï¼é£ä¹å¯¹è¿ç§è¡¨Aåæ®µå»ºç´¢å¼ä¸è¬ä¸ä¼æé«æ°æ®åºçæ¥è¯¢é度ã 4ãç»å¸¸å䏻忮µä¸åæ¥è¯¢ä½ä¸»å段索å¼å¼æ¯è¾å¤çè¡¨åæ®µ #### 38.ä»ä¹æ¯è¡¨ååºï¼ 表ååºï¼æ¯ææ ¹æ®ä¸å®è§åï¼å°æ°æ®åºä¸çä¸å¼ 表åè§£æå¤ä¸ªæ´å°çï¼å®¹æç®¡ççé¨åãä»é»è¾ä¸çï¼åªæä¸å¼ 表ï¼ä½æ¯åºå±å´æ¯ç±å¤ä¸ªç©çååºç»æã #### 39.表ååºä¸å表çåºå« åè¡¨ï¼æçæ¯éè¿ä¸å®è§åï¼å°ä¸å¼ 表åè§£æå¤å¼ ä¸åçè¡¨ãæ¯å¦å°ç¨æ·è®¢åè®°å½æ ¹æ®æ¶é´æå¤ä¸ªè¡¨ã å表ä¸ååºçåºå«å¨äºï¼ååºä»é»è¾ä¸æ¥è®²åªæä¸å¼ 表ï¼èåè¡¨åæ¯å°ä¸å¼ 表åè§£æå¤å¼ 表ã #### 40.表ååºæä»ä¹å¥½å¤ï¼ 1ãå卿´å¤æ°æ®ãååºè¡¨çæ°æ®å¯ä»¥åå¸å¨ä¸åçç©ç设å¤ä¸ï¼ä»è髿å°å©ç¨å¤ä¸ªç¡¬ä»¶è®¾å¤ãåå个ç£çæè æä»¶ç³»ç»ç¸æ¯ï¼å¯ä»¥å卿´å¤æ°æ® 2ãä¼åæ¥è¯¢ãå¨whereè¯å¥ä¸å å«ååºæ¡ä»¶æ¶ï¼å¯ä»¥åªæ«æä¸ä¸ªæå¤ä¸ªååºè¡¨æ¥æé«æ¥è¯¢æçï¼æ¶åsumåcountè¯å¥æ¶ï¼ä¹å¯ä»¥å¨å¤ä¸ªååºä¸å¹¶è¡å¤çï¼æåæ±æ»ç»æã 3ãååºè¡¨æ´å®¹æç»´æ¤ãä¾å¦ï¼æ³æ¹éå é¤å¤§éæ°æ®å¯ä»¥æ¸ 餿´ä¸ªååºã 4ãé¿å æäºç¹æ®çç¶é¢ï¼ä¾å¦InnoDBçå个索å¼çäºæ¥è®¿é®ï¼ext3é®ä»·ä½ ç³»ç»çinodeéç«äºçã #### 41.MVVCäºè§£è¿å MySQL InnoDBåå¨å¼æï¼å®ç°çæ¯åºäºå¤çæ¬çå¹¶åæ§å¶åè®®ââMVCC (Multi-Version Concurrency Control) 注ï¼ä¸MVCCç¸å¯¹çï¼æ¯åºäºéçå¹¶åæ§å¶ï¼Lock-Based Concurrency Control MVCCæå¤§ç好å¤ï¼è¯»ä¸å éï¼è¯»åä¸å²çªãå¨è¯»å¤åå°çOLTPåºç¨ä¸ï¼è¯»åä¸å²çªæ¯é常éè¦çï¼æå¤§çå¢å äºç³»ç»çå¹¶åæ§è½ï¼ç°é¶æ®µå 乿æçRDBMSï¼é½æ¯æäºMVCCã 1. LBCCï¼Lock-Based Concurrency Controlï¼åºäºéçå¹¶åæ§å¶ 2. MVCCï¼Multi-Version Concurrency Control åºäºå¤çæ¬çå¹¶åæ§å¶åè®®ã纯粹åºäºéçå¹¶åæºå¶å¹¶åéä½ï¼MVCCæ¯å¨åºäºéçå¹¶åæ§å¶ä¸çæ¹è¿ï¼ä¸»è¦æ¯å¨è¯»æä½ä¸æé«äºå¹¶åéã #### 42.å¨MVCCå¹¶åæ§å¶ä¸ï¼è¯»æä½å¯ä»¥åæåªå ç±»ï¼ 1. å¿«ç §è¯» (snapshot read)ï¼è¯»åçæ¯è®°å½çå¯è§çæ¬ (æå¯è½æ¯åå²çæ¬)ï¼ä¸ç¨å éï¼å ±äº«è¯»éséä¹ä¸å ï¼æä»¥ä¸ä¼é»å¡å ¶ä»äºå¡çåï¼ 2. å½å读 (current read)ï¼è¯»åçæ¯è®°å½çææ°çæ¬ï¼å¹¶ä¸ï¼å½å读è¿åçè®°å½ï¼é½ä¼å ä¸éï¼ä¿è¯å ¶ä»äºå¡ä¸ä¼åå¹¶åä¿®æ¹è¿æ¡è®°å½ #### 43.è¡çº§éå®çä¼ç¹ 1ãå½å¨è®¸å¤çº¿ç¨ä¸è®¿é®ä¸åçè¡æ¶åªåå¨å°ééå®å²çªã 2ãåæ»æ¶åªæå°éçæ´æ¹ 3ãå¯ä»¥é¿æ¶é´éå®åä¸çè¡ã #### 44.è¡çº§éå®çç¼ºç¹ 1. æ¯é¡µçº§æè¡¨çº§éå®å ç¨æ´å¤çå åã 2. å½å¨è¡¨ç大é¨åä¸ä½¿ç¨æ¶ï¼æ¯é¡µçº§æè¡¨çº§éå®éåº¦æ ¢ï¼å ä¸ºä½ å¿ é¡»è·åæ´å¤çéã 3. å¦æä½ å¨å¤§é¨åæ°æ®ä¸ç»å¸¸è¿è¡GROUP BYæä½æè å¿ é¡»ç»å¸¸æ«ææ´ä¸ªè¡¨ï¼æ¯å ¶å®éå®ææ¾æ ¢å¾å¤ã 4. ç¨é«çº§å«éå®ï¼éè¿æ¯æä¸åçç±»åéå®ï¼ä½ ä¹å¯ä»¥å¾å®¹æå°è°èåºç¨ç¨åºï¼å ä¸ºå ¶éææ¬å°äºè¡çº§éå®ã #### 45.MySQLä¼å 1. å¼å¯æ¥è¯¢ç¼åï¼ä¼åæ¥è¯¢ 2. explainä½ çselectæ¥è¯¢ï¼è¿å¯ä»¥å¸®ä½ åæä½ çæ¥è¯¢è¯å¥ææ¯è¡¨ç»æçæ§è½ç¶é¢ãEXPLAIN çæ¥è¯¢ç»æè¿ä¼åè¯ä½ ä½ çç´¢å¼ä¸»é®è¢«å¦ä½å©ç¨çï¼ä½ çæ°æ®è¡¨æ¯å¦ä½è¢«æç´¢åæåºç 3. å½åªè¦ä¸è¡æ°æ®æ¶ä½¿ç¨limit 1ï¼MySQLæ°æ®åºå¼æä¼å¨æ¾å°ä¸æ¡æ°æ®å忢æç´¢ï¼è䏿¯ç»§ç»å¾åæ¥å°ä¸ä¸æ¡ç¬¦åè®°å½çæ°æ® 4. 为æç´¢åæ®µå»ºç´¢å¼ 5. ä½¿ç¨ ENUM è䏿¯ VARCHARãå¦æä½ æä¸ä¸ªåæ®µï¼æ¯å¦âæ§å«âï¼âå½å®¶âï¼âæ°æâï¼âç¶æâæâé¨é¨âï¼ä½ ç¥éè¿äºå段çå弿¯æéèä¸åºå®çï¼é£ä¹ï¼ä½ åºè¯¥ä½¿ç¨ ENUM è䏿¯VARCHAR 6. Prepared StatementsPrepared Statementså¾ååå¨è¿ç¨ï¼æ¯ä¸ç§è¿è¡å¨åå°çSQLè¯å¥éåï¼æä»¬å¯ä»¥ä»ä½¿ç¨ prepared statements è·å¾å¾å¤å¥½å¤ï¼æ è®ºæ¯æ§è½é®é¢è¿æ¯å®å ¨é®é¢ã Prepared Statements å¯ä»¥æ£æ¥ä¸äºä½ ç»å®å¥½çåéï¼è¿æ ·å¯ä»¥ä¿æ¤ä½ çç¨åºä¸ä¼åå°âSQLæ³¨å ¥å¼âæ»å» 7. åç´å表 8. éæ©æ£ç¡®çåå¨å¼æ #### 46.keyåindexçåºå« 1. key æ¯æ°æ®åºçç©çç»æï¼å®å å«ä¸¤å±æä¹åä½ç¨ï¼ä¸æ¯çº¦æï¼åéäºçº¦æåè§èæ°æ®åºçç»æå®æ´æ§ï¼ï¼äºæ¯ç´¢å¼ï¼è¾ 婿¥è¯¢ç¨çï¼ãå æ¬primary key, unique key, foreign key ç 2. indexæ¯æ°æ®åºçç©çç»æï¼å®åªæ¯è¾ 婿¥è¯¢çï¼å®å建æ¶ä¼å¨å¦å¤ç表空é´ï¼mysqlä¸çinnodb表空é´ï¼ä»¥ä¸ä¸ªç±»ä¼¼ç®å½çç»æåå¨ãç´¢å¼è¦åç±»çè¯ï¼å为åç¼ç´¢å¼ãå ¨ææ¬ç´¢å¼çï¼ #### 47.deleteãtruncateãdropåºå« - truncateådeleteåªå 餿°æ®ï¼ä¸å é¤è¡¨ç»æ ,dropå é¤è¡¨ç»æï¼å¹¶ä¸éæ¾æå ç空é´ã - å 餿°æ®çé度ï¼drop> truncate > delete - deleteå±äºDMLè¯è¨ï¼éè¦äºå¡ç®¡çï¼commitä¹åæè½çæãdropåtruncateå±äºDDLè¯è¨ï¼æä½ç«å»çæï¼ä¸å¯åæ»ã使ç¨åºåï¼ å½ä½ ä¸åéè¦è¯¥è¡¨æ¶ï¼ ç¨ drop; å½ä½ ä»è¦ä¿ç该表ï¼ä½è¦å 餿æè®°å½æ¶ï¼ ç¨ truncate; å½ä½ è¦å é¤é¨åè®°å½æ¶ï¼always with a where clause), ç¨ deleteã #### 48.MySQL主ä»å¤å¶åçæµç¨ - 主ï¼binlog线ç¨ââè®°å½ä¸æææ¹åäºæ°æ®åºæ°æ®çè¯å¥ï¼æ¾è¿masterä¸çbinlogä¸ï¼ - ä»ï¼io线ç¨ââå¨ä½¿ç¨start slave ä¹åï¼è´è´£ä»master䏿å binlog å å®¹ï¼æ¾è¿ èªå·±çrelay logä¸ï¼ - ä»ï¼sqlæ§è¡çº¿ç¨ââæ§è¡relay logä¸çè¯å¥ï¼ #### 49.èªå¢ä¸»é®æå¤§IDè®°å½ï¼MyISAMåInnoDBå嫿¯å¦ä½åå¨ç - MyISAM表æèªå¢ä¸»é®çæå¤§IDè®°å½å°æ°æ®æä»¶é - InnoDB表æèªå¢ä¸»é®çæå¤§IDè®°å½å°å åä¸ #### 50.Mysqlå¦ä½ä¼åDISTINCT? DISTINCT卿æåä¸è½¬æ¢ä¸ºGROUP BYï¼å¹¶ä¸ORDER BYåå¥ç»å使ç¨ã #### 51.è§£éMySQLå¤è¿æ¥ãå è¿æ¥ä¸èªè¿æ¥çåºå« å 说ä»ä¹æ¯äº¤åè¿æ¥: 交åè¿æ¥åå«ç¬å¡å°ç§¯ï¼å®æ¯æä¸ä½¿ç¨ä»»ä½æ¡ä»¶ï¼ç´æ¥å°ä¸ä¸ªè¡¨çææè®°å½åå¦ä¸ä¸ªè¡¨ä¸çææè®°å½ä¸ä¸å¹é ã å è¿æ¥ åæ¯åªææ¡ä»¶ç交åè¿æ¥ï¼æ ¹æ®æä¸ªæ¡ä»¶çéåºç¬¦åæ¡ä»¶çè®°å½ï¼ä¸ç¬¦åæ¡ä»¶çè®°å½ä¸ä¼åºç°å¨ç»æéä¸ï¼å³å è¿æ¥åªè¿æ¥å¹é çè¡ã å¤è¿æ¥ å ¶ç»æéä¸ä¸ä» å å«ç¬¦åè¿æ¥æ¡ä»¶çè¡ï¼èä¸è¿ä¼å æ¬å·¦è¡¨ãå³è¡¨æä¸¤ä¸ªè¡¨ä¸ çæææ°æ®è¡ï¼è¿ä¸ç§æ åµä¾æ¬¡ç§°ä¹ä¸ºå·¦å¤è¿æ¥ï¼å³å¤è¿æ¥ï¼åå ¨å¤è¿æ¥ã å·¦å¤è¿æ¥ï¼ä¹ç§°å·¦è¿æ¥ï¼å·¦è¡¨ä¸ºä¸»è¡¨ï¼å·¦è¡¨ä¸çææè®°å½é½ä¼åºç°å¨ç»æéä¸ï¼å¯¹äºé£äºå¨å³è¡¨ä¸å¹¶æ²¡æå¹é çè®°å½ï¼ä»ç¶è¦æ¾ç¤ºï¼å³è¾¹å¯¹åºçé£äºå段å¼ä»¥NULLæ¥å¡«å ãå³å¤è¿æ¥ï¼ä¹ç§°å³è¿æ¥ï¼å³è¡¨ä¸ºä¸»è¡¨ï¼å³è¡¨ä¸çææè®°å½é½ä¼åºç°å¨ç»æéä¸ãå·¦è¿æ¥åå³è¿æ¥å¯ä»¥äºæ¢ï¼MySQLç®åè¿ä¸æ¯æå ¨å¤è¿æ¥ã #### åè龿¥ https://article.itxueyuan.com/eoJEMj https://www.cnblogs.com/williamjie/p/11081592.html http://www.100mian.com/mianshi/mysql/49909.html https://leisure.wang/procedural-framework/database/241.html