Kacam.net

Vedere il mondo

Database: un pezzo alla volta

Non tagliato in «ottimizzazione degli indici / transazioni / tuning» —— per un tema così ampio la griglia direbbe solo «attenzione alla selettività, attenzione ai lock». Qui si taglia stretto: l'ordine delle colonne di un indice composto, che cosa blocca davvero una UPDATE, che cosa fa OFFSET in quel passaggio.

Per ora queste istruzioni esistono solo in 简体中文.

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.

Indici

联合索引的顺序
(user_id, status) 这个索引,单查 status 为什么用不上?
★★★☆☆ · circa 35 min
它为什么没走索引
索引明明建了,它就是不走 —— 是写废了,还是它算过了?
★★★★☆ · circa 35 min

Transazioni e lock

一条 UPDATE 锁了什么
UPDATE ... WHERE 一个没索引的列 —— 这时候「行锁」还是行锁吗?
★★★★☆ · circa 35 min

Query e volumi

读了多少行才吐出这几行
看了执行计划,走索引了 —— 那它扫了多少行、返回几行?
★★★☆☆ · circa 35 min
Questi prompt sono open source Il testo è mantenuto nel repository pubblico kacam-net/hero-prompts. Se uno non incalza abbastanza, o alla sua soluzione manca una riga, vai a cambiarlo: che finisca online qui è un'altra decisione, la prende il catalogo da questa parte.