一条 UPDATE 锁了什么
UPDATE ... WHERE 一个没索引的列 —— 这时候「行锁」还是行锁吗?
Vorlage kopieren, dann ein Modell wählen. Es spielt den Interviewer und fragt dich Szene für Szene ab, statt dir die Antwort hinzulegen.
Auf einem Telefon mit installierter App öffnet das System die App direkt. In WeChat lassen sich keine externen Apps öffnen — öffne es zuerst im Browser.
Am Ende des kopierten Textes steht der Lösungsschlüssel, mit dem das Modell dich bewertet. Lies ihn nicht vorher — es zählt, dass du selbst darauf gekommen bist.
「InnoDB 是行锁」这句话缺了一个前提,而那个前提正是线上「一条 UPDATE 卡死全表」最常见的原因。这一份就是去把那个前提问出来。
第三幕会让你面对一件反直觉的事:一条不存在的记录,怎么锁? 你得先自己推出「不锁住它就挡不住别人插进来」,才轮到间隙这个词出场。
全程不接受「会锁住相关的行」这种说法 —— 它会打断你:把被锁住的记录一条条列出来,还有哪些区间。
Worum es hier geht
Dieser Text im Repository (am Ende der Datei steht die Auflösung — du wirst sie sehen)
Schon gemacht?
Melde dich an, um festzuhalten, dass du diese Aufgabe geübt hast — beim nächsten Mal siehst du, wann das war.
Notizen von Leuten, die das gemacht haben
So funktioniert es
Diese Reihe ist zum Lernen gedacht: Sie führt dich, sie treibt dich nicht in die Enge. Wenn du hängst, fragt sie zuerst, auf welcher Ebene (nie gehört / weiß es, aber nicht warum / weiß warum, kann es aber nicht anwenden) und entscheidet dann, was sie gibt. Erst nach zwei Anläufen erklärt sie direkt — und lässt es dich danach in eigenen Worten wiederholen.
Standardmäßig wird von MySQL / InnoDB ausgegangen — die Hälfte der Fallen hier sind Implementierungsdetails, und Clustered Index, Rückgriff auf die Tabelle und Gap Locks funktionieren anderswo anders. PostgreSQL oder anderes geht auch: sag es im ersten Satz, dann folgt sie deiner Engine und benennt, wo die Schlüsse abweichen.
So fängst du an
- Eine auswählen, öffnen, den Prompt kopieren.
- In einen frischen, leeren Chat einfügen und zuerst sagen, welche Engine und Version du nutzt (ohne Angabe wird MySQL 8 angenommen).
- Danach nichts weiter sagen und auf die erste Frage warten.
Vier Kommandos, jederzeit einsetzbar
跳过Sofort zum nächsten Akt换个说法Diesen Punkt aus einem anderen Blickwinkel直说吧Die vollständige Antwort geben, danach abfragen复盘Direkt zur Abschlusskarte
Drei Stolperfallen
- Lies den Lösungsschlüssel am Ende nicht vorher — die Rubrik „häufige Denkfehler“ ist die Antwort auf jede einzelne Frage.
- Rechne damit, nach Zahlen gefragt zu werden. „Etwas schneller“, „spart IO“ wird sofort unterbrochen: wie viele Zeilen? wie oft? wie viel schneller? Ein Schluss ohne Zahl ist auswendig gelernt.
- Sobald sie dich lobt, verweise auf die Regel „lob mich nicht“. Führen ist nicht Streicheln.
Fang mit dem zusammengesetzten Index an — er ist das Fundament: „Sperren sitzen auf Indexeinträgen“ und „warum liest es so viele Zeilen“ stützen sich beide auf seinen einen Satz. Wenn dich Nebenläufigkeit in der Produktion beißt, fang mit „lesen, dann ändern“ an; bei langsamen Abfragen mit dem Ausführungsplan.
Anmelden, um eine Notiz zu schreiben.