Kacam.net

Database

先查再改,为什么会丢

「包进事务里不就行了」——事务到底挡住了什么?

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.

这是所有并发 bug 里最常见的一种形状:读出来、判断一下、再写回去。而「加个事务」几乎不解决它 —— 两个事务照样能分别读到 stock = 1。

这一份要你自己画出那条让库存变成 -1 的时间线,然后一步步收窄:把判断挪进 WHERE、看受影响行数、什么时候该用版本号、什么时候该交给唯一约束。

有一问值得先想想:「打开编辑器就锁住、保存时才放」为什么在 Web 上几乎一定是错的。

★★★☆☆ · circa 30 min · Cosa si valuta: 读改写的窗口、条件更新、版本号 vs FOR UPDATE、唯一约束

Che cosa allena

Lock Versioni e visibilità

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.