📌 åƒç–®ç™¾å”çš„MySQL,世界上最æµè¡Œçš„æ•°æ®åº“ã€è®©ç¼–ç¨‹å†æ¬¡ä¼Ÿå¤§#番外篇1】 - YouTube
Original URL: https://youtu.be/KpJCHsRcZ1g
📌 åƒç–®ç™¾å”çš„MySQL,世界上最æµè¡Œçš„æ•°æ®åº“ã€è®©ç¼–ç¨‹å†æ¬¡ä¼Ÿå¤§#番外篇1】 - YouTube
想åƒä¸€ä¸‹ä½ çŽ©ä¸€å€‹è¶…å—æ¡è¿Žçš„éŠæˆ²ï¼Œä½†å®ƒæœ‰äº›å¥‡æ€ªçš„è¦å‰‡æˆ–å°æ•…éšœã€‚æ¯”å¦‚ï¼Œä½ æƒ³æŠŠèƒŒåŒ…è£¡çš„æ±è¥¿ç…§å¤§å°æŽ’好(S, M, Lï¼‰ï¼Œä½†éŠæˆ²å»æŠŠå®ƒå€‘ç…§åå—å—æ¯é †åºæŽ’(L, M, Sï¼‰ï¼Œæ˜¯ä¸æ˜¯å¾ˆæ€ªï¼Ÿæˆ–è€…éŠæˆ²è£¡æœ‰å€‹æ©Ÿé—œï¼Œæ‡‰è©²åœ¨æŸäº›äº‹æƒ…ç™¼ç”Ÿæ™‚å•Ÿå‹•ï¼Œä½†æœ‰æ™‚å€™å®ƒå°±æ˜¯æ²’åæ‡‰ï¼Œåªåœ¨ç›´æŽ¥æŒ‰éˆ•æ™‚æœ‰ç”¨ã€‚é€™ç¯‡æ–‡ç« èªªï¼Œé›–ç„¶å¾ˆå¤šåœ°æ–¹ç”¨MySQL這個資料庫,但它就åƒé€™å€‹éŠæˆ²ï¼Œæœ‰ä¸€äº›ç”¨äº†å¾ˆä¹…ã€å¾ˆç…©äººçš„å•é¡Œï¼Œåƒæ˜¯å°å°ºå¯¸å¤§å°çš„判斷方å¼ä¸åŒï¼Œæˆ–是有些應該自動啟動的功能(å«åšTrigger)在特定情æ³ä¸‹æœƒå¤±æ•ˆã€‚這些å•題讓用它的人有時候會é‡åˆ°å¾ˆé›£è§£é‡‹çš„ç‹€æ³ã€‚
--------
é€™ç¯‡æ–‡ç« åš´åŽ²æ‰¹è©•äº†ä¸–ç•Œä¸Šæœ€æµè¡Œçš„資料庫之一MySQL,指稱它å˜åœ¨è¨±å¤šåš´é‡ä¸”長期未修復的基本功能錯誤(bug),甚至將其æè¿°ç‚ºã€Œæ®˜æ¬¡å“ã€ã€‚æ–‡ç« èªç‚ºï¼Œèˆ‡PostgreSQLç‰å…¶ä»–資料庫相比,MySQLåœ¨æ ¸å¿ƒè¨è¨ˆä¸Šå˜åœ¨ç¼ºé™·ã€‚æ–‡ä¸åˆ—舉了幾個具體例å來說明這些å•題。首先是索引的使用é‚輯,在2010å¹´çš„5.5版本之å‰ï¼Œç•¶æœ‰å¤šå€‹ç¬¦åˆæ¢ä»¶çš„索引時,MySQLæœƒé¸æ“‡æœ€æ—©å»ºç«‹çš„è€Œéžæœ€é©åˆæŸ¥è©¢çš„索引。其次是處ç†ENUM(枚舉)資料類型時的行為ä¸ä¸€è‡´ï¼šä½¿ç”¨ORDER BYèªžæ³•æŽ’åºæ™‚ï¼Œä¾æ“šENUMé¸é …å®šç¾©çš„é †åºï¼›è€Œä½¿ç”¨MIN/MAX語法查找最å°å€¼æˆ–最大值時,å»å°‡ENUM值視為å—ä¸²æŒ‰å—æ¯é †åºè™•ç†ï¼Œå°Žè‡´çµæžœå¯èƒ½èˆ‡é 期的大å°é †åºä¸ç¬¦ã€‚最嚴é‡çš„å•題被指為Trigger(觸發器)功能,由於å˜åœ¨ä¸€å€‹ç·¨è™Ÿ11472ã€å·²æäº¤é•·é”20å¹´å»ä»æœªä¿®å¾©çš„bug,MySQLçš„Trigger䏿œƒè¢«å‹•æ…‹çš„è³‡æ–™è®Šæ›´ï¼ˆå¦‚å› å¤–ä¾†éµé—œè¯çš„è³‡æ–™è¢«åˆªé™¤å°Žè‡´æŸæ¬„ä½è®Šç‚ºNULLï¼‰æ‰€è§¸ç™¼ï¼Œåªæœƒåœ¨ç›´æŽ¥ä¿®æ”¹ç™¼ç”Ÿæ™‚觸發。這使得MySQLä¸çš„Trigger功能變得ä¸å¯é ç”šè‡³ç„¡æ³•ä½¿ç”¨ã€‚æ–‡ç« ç¸½çµèªç‚ºï¼ŒMySQL的廣泛æµè¡Œä¸¦éžå› 為其å“è³ªå„ªç•°ï¼Œè€Œæ˜¯å› ç‚º1990年代剛發布時安è£è¼ƒç‚ºæ–¹ä¾¿ï¼Œé€²è€Œæ¶ä½”äº†å¸‚å ´ä»½é¡ã€‚
--------
MySQLå˜åœ¨è¨±å¤šåŸºæœ¬åŠŸèƒ½ä¸Šçš„åš´é‡éŒ¯èª¤ï¼ˆbugs)。
MySQL在處ç†å¤šé‡ç´¢å¼•時,éŽåŽ»ï¼ˆ5.5版本å‰ï¼‰æœƒé¸æ“‡æœ€æ—©å»ºç«‹çš„ç´¢å¼•è€Œéžæœ€é©åˆçš„。
MySQLå°ENUMè³‡æ–™é¡žåž‹çš„è™•ç†æ–¹å¼ä¸ä¸€è‡´ï¼šORDER BYä¾å®šç¾©é †åºï¼Œè€ŒMIN/MAXä¾å—䏲嗿¯é †åºã€‚
MySQLçš„TriggeråŠŸèƒ½å› bug而ä¸å¯é ,無法被動態(éžç›´æŽ¥ï¼‰çš„資料變更所觸發。
Trigger的關éµbug(編號11472)已å˜åœ¨20年,開發團隊曾承諾修復但至今未果。
æ–‡ç« èªç‚ºMySQLçš„æµè¡Œä¸»å› 是早期易於安è£ï¼Œè€Œéžè¨è¨ˆå„ªè‰¯ã€‚
æ–‡ç« å°‡MySQLæè¿°ç‚ºä¸€å€‹å……æ»¿æ¼æ´žã€ç¸«ç¸«è£œè£œçš„「殘次å“ã€ã€‚
--------
✅ MySQL被指å˜åœ¨è¨±å¤šåš´é‡çš„基本錯誤。
âš ï¸ èˆŠç‰ˆMySQLç´¢å¼•é¸æ“‡é‚è¼¯æ›¾æ˜¯é¸æœ€æ—©å»ºç«‹çš„。
📌 ENUM類型在ORDER BYå’ŒMIN/MAX下行為ä¸åŒã€‚
⌠MySQLçš„TriggeråŠŸèƒ½å› bug而幾乎無法使用。
â° é—œéµçš„Trigger bug (11472) å·²å˜åœ¨20年未修復。
🞠Trigger䏿œƒè¢«å‹•態的資料變更觸發。
🛒 MySQLæµè¡Œæ˜¯å› æ—©æœŸå®‰è£æ–¹ä¾¿æ¶ä½”å¸‚å ´ã€‚
🔧 æ–‡ç« ç¨±MySQLæ˜¯å……æ»¿æ¼æ´žçš„「殘次å“ã€ã€‚
--------
æ ¹æ“šæ–‡ç« å…§å®¹ï¼Œä»¥ä¸‹å“ªå€‹é¸é …æ£ç¢ºæè¿°äº†2010年版本5.5之å‰MySQL處ç†å¤šå€‹ç¬¦åˆæ¢ä»¶ç´¢å¼•的方å¼ï¼Ÿ
A. 鏿“‡é«”ç©æœ€å°çš„索引。
B. 鏿“‡èˆ‡æŸ¥è©¢èªžå¥æœ€æŽ¥è¿‘的索引。
C. 鏿“‡æœ€æ—©è¢«å»ºç«‹çš„索引。
D. 鏿“‡é€Ÿåº¦æœ€å¿«çš„索引。
ç”æ¡ˆï¼šC
è§£é‡‹ï¼šæ–‡ç« æåˆ°åœ¨2010å¹´çš„5.5版本之å‰ï¼ŒMySQLåœ¨æœ‰å¤šå€‹ç¬¦åˆæ¢ä»¶çš„ç´¢å¼•æ™‚ï¼Œæœƒé¸æ“‡æœ€æ—©è¢«å»ºç«‹çš„é‚£å€‹ï¼Œè€Œä¸æ˜¯æœ€é©åˆçš„。
æ ¹æ“šæ–‡ç« ï¼ŒMySQL在處ç†ENUM(枚舉)資料類型時,使用MIN/MAX語法會如何判斷大å°ï¼Ÿ
A. æ ¹æ“šENUMé¸é …å®šç¾©æ™‚çš„é †åºã€‚
B. æ ¹æ“šENUMé¸é …çš„å—䏲嗿¯é †åºã€‚
C. æ ¹æ“šENUMå€¼æ‰€å°æ‡‰çš„æ•¸å—索引。
D. 會產生錯誤無法判斷。
ç”æ¡ˆï¼šB
è§£é‡‹ï¼šæ–‡ç« æŒ‡å‡ºï¼ŒMySQL在使用MIN/MAX語法處ç†ENUM時,會將ENUMé¸é …視為å—ä¸²ï¼Œä¸¦æŒ‰å—æ¯é †åºä¾†åˆ¤æ–·å¤§å°ï¼Œé€™èˆ‡ORDER BYä¾å®šç¾©é †åºä¸åŒã€‚
æ ¹æ“šæ–‡ç« ï¼Œç‚ºä½•MySQLçš„Trigger(觸發器)功能被èªç‚ºä¸å¯é 或無法使用?
A. å› ç‚ºTrigger的執行效率éžå¸¸ä½Žã€‚
B. å› ç‚ºTrigger容易導致資料庫æ»éŽ–ã€‚
C. å› ç‚ºTrigger無法被動態或間接的資料變更(如外來éµå½±éŸ¿ï¼‰è§¸ç™¼ã€‚
D. å› ç‚ºTriggerçš„è¨ç½®èªžæ³•éŽæ–¼è¤‡é›œã€‚
ç”æ¡ˆï¼šC
è§£é‡‹ï¼šæ–‡ç« è©³ç´°æè¿°äº†ç·¨è™Ÿ11472çš„bug,說明MySQLçš„Trigger䏿œƒè¢«å‹•æ…‹ç™¼ç”Ÿï¼ˆå¦‚å› å¤–ä¾†éµåˆªé™¤å°Žè‡´é—œè¯æ¬„ä½è®Šæ›´ï¼‰çš„修改所觸發,åªéŸ¿æ‡‰ç›´æŽ¥ä¿®æ”¹ï¼Œå°Žè‡´å…¶è¡Œç‚ºä¸å¯é 期。
✡ Oliå°æ¿ƒç¸® Summary bot 為您濃縮é‡é»ž ✡
â–¶ https://youtu.be/KpJCHsRcZ1g