Kacam.net

Ver el mundo

Bases de datos: una pieza cada vez

No está cortado como «optimización de índices / transacciones / tuning» —— para un tema tan amplio la plantilla de corrección solo diría «cuidado con la selectividad, cuidado con los bloqueos». Aquí se corta fino: el orden de las columnas de un índice compuesto, qué bloquea de verdad un UPDATE, qué hace OFFSET en ese paso.

Por ahora estas indicaciones solo existen en 简体中文.

Cómo se usa

Esta serie es de aprendizaje: te guía, no te acorrala. Cuando te atascas primero pregunta en qué capa estás atascado (nunca lo oí / lo sé pero no por qué / sé por qué pero no lo aplico) y luego decide qué darte. Solo explica tras guiarte dos veces, y después te pide que lo repitas con tus palabras.

Por defecto razona en MySQL / InnoDB —— la mitad de las trampas aquí son detalles de implementación, y el índice agrupado, la vuelta a la tabla y los bloqueos de hueco funcionan distinto en otros motores. PostgreSQL u otro también vale: dilo en tu primera frase y seguirá tu motor, señalando dónde cambian las conclusiones.

Cómo empezar

  1. Elige uno, ábrelo y copia el prompt.
  2. Pégalo en una conversación nueva y vacía, y di primero qué motor y versión usas (si no lo dices, asume MySQL 8).
  3. Después no digas nada más y espera su primera pregunta.

Cuatro comandos que puedes soltar en cualquier momento

  • 跳过 Pasar ya al siguiente acto
  • 换个说法 Explicar esto desde otro ángulo
  • 直说吧 Dar la respuesta completa y luego hacérmela repetir
  • 复盘 Saltar directo a la ficha de cierre

Tres trampas

  • No leas la plantilla del final antes de empezar —— la sección «errores de razonamiento frecuentes» es la respuesta a cada pregunta.
  • Prepárate para que te pida números. «Un poco más rápido», «ahorra IO» se corta en el acto: ¿cuántas filas? ¿cuántas veces? ¿cuántas veces más rápido? Una conclusión sin número es memorizada.
  • En cuanto empiece a halagarte, recuérdale la regla «no me halagues». Guiar no es consentir.

Empieza por el índice compuesto: es el cimiento de la serie, «los bloqueos van sobre registros de índice» y «por qué lee tantas filas» se apoyan los dos en su frase clave. Si la concurrencia te está mordiendo en producción, empieza por «leer y luego escribir»; si las consultas van lentas, por el plan de ejecución.

Índices

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

Transacciones y bloqueos

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

Consultas y volumen

读了多少行才吐出这几行
看了执行计划,走索引了 —— 那它扫了多少行、返回几行?
★★★☆☆ · unos 35 min
Estos prompts son de código abierto El texto se mantiene en el repositorio público kacam-net/hero-prompts. Si alguno no aprieta lo suficiente, o a su solución le falta una línea, ve y cámbialo: que se publique aquí es otra decisión, y la toma el catálogo de este lado.