Kacam.net

Database

隔离级别各挡住了什么

RR 下读到余额 100,然后 UPDATE balance = balance - 10 —— 扣完是多少?

Copia l'istruzione e scegli un modello. Farà l'intervistatore e ti interrogherà atto per atto invece di servirti la risposta.

Su un telefono con l'app installata, il sistema apre direttamente l'app. Dentro WeChat i collegamenti non aprono app esterne: aprilo prima in un browser.

Il testo copiato finisce con la griglia di correzione che il modello usa per valutarti. Non leggerla prima: vale l'averci arrivato da solo.

它不会给你那张「四个级别 × 三种异常」的表,而是让你自己造三条时间线,把三种异常各造一次出来。造得出来,那张表就不用背了。

第三幕是主战场,也是这一份存在的理由:一个事务里的 SELECT 和 UPDATE 看到的不是同一份数据。这一条不知道的人,写出来的「先查再改」在任何隔离级别下都是错的。

另外它会认真对待一件常被含糊过去的事:同一个级别的名字,在 MySQL 和 PostgreSQL 上的保证并不一样。

★★★★☆ · circa 40 min · Cosa si valuta: 三种异常的区别、快照什么时候拍、快照读 vs 当前读、幻读靠什么挡

Che cosa allena

Versioni e visibilità Lock

Già fatto questo?

Accedi per segnare che l'hai fatto: la prossima volta vedrai in che giorno è stato.

Appunti di chi l'ha fatto

Non ha ancora scritto nessuno. Dopo averlo fatto, racconta cosa è venuto fuori: quale atto ti ha bloccato, quale conclusione hai cambiato dopo.

Accedi per scrivere un appunto.

Come si usa

Questa serie è di tipo didattico: ti guida, non ti mette all'angolo. Quando ti blocchi chiede prima a quale livello sei bloccato (mai sentito / lo so ma non so perché / so perché ma non lo applico), poi decide che cosa darti. Spiega solo dopo averti guidato due volte, e poi ti chiede di ridirlo con parole tue.

Per impostazione predefinita ragiona in MySQL / InnoDB —— metà delle trappole qui sono dettagli implementativi, e indice clusterizzato, ritorno alla tabella e gap lock funzionano diversamente altrove. PostgreSQL o altro va benissimo: dillo nella prima frase e seguirà il tuo motore, segnalando dove le conclusioni cambiano.

Come iniziare

  1. Scegline uno, aprilo, copia il prompt.
  2. Incollalo in una chat nuova e vuota, e di' prima quale motore e quale versione usi (se non lo dici assume MySQL 8).
  3. Poi non dire altro e aspetta la sua prima domanda.

Quattro comandi da usare in qualsiasi momento

  • 跳过 Subito al prossimo atto
  • 换个说法 Rispiega questo punto da un'altra angolazione
  • 直说吧 Dammi la risposta completa, poi fammela ripetere
  • 复盘 Vai subito alla scheda finale

Tre trappole

  • Non leggere prima la griglia in fondo —— la voce «errori di ragionamento frequenti» è la risposta a ogni domanda.
  • Preparati a dover dare numeri. «Un po' più veloce», «risparmia IO» viene interrotto subito: quante righe? quante volte? quante volte più veloce? Una conclusione senza numeri è imparata a memoria.
  • Appena inizia a elogiarti, rimandalo alla regola «non elogiarmi». Guidare non è coccolare.

Parti dall'indice composto: è la base della serie, «i lock stanno sui record dell'indice» e «perché legge così tante righe» si appoggiano entrambi alla sua frase chiave. Se in produzione ti sta mordendo la concorrenza, parti da «leggi e poi scrivi»; se le query sono lente, dal piano di esecuzione.