Kacam.net

Ver o mundo

Bancos de dados: um pedaço por vez

Não fatiado como «otimização de índices / transações / tuning» —— para um tema tão largo o gabarito só diria «cuidado com a seletividade, cuidado com os bloqueios». Aqui o corte é estreito: a ordem das colunas de um índice composto, o que um UPDATE realmente trava, o que o OFFSET faz naquele passo.

Por enquanto estas instruções existem só em 简体中文.

Como usar

Esta série é de aprendizado: ela conduz, não encurrala. Quando você trava, ela primeiro pergunta em que camada você travou (nunca ouvi falar / sei mas não sei por quê / sei por quê mas não consigo usar) e só então decide o que dar. Só explica depois de conduzir duas vezes, e em seguida pede que você repita com suas palavras.

Por padrão ela raciocina em MySQL / InnoDB —— metade das armadilhas aqui são detalhes de implementação, e índice agrupado, volta à tabela e gap locks funcionam diferente em outros bancos. PostgreSQL ou outro serve: diga isso na primeira frase e ela segue o seu banco, apontando onde as conclusões mudam.

Como começar

  1. Escolha um, abra e copie o prompt.
  2. Cole numa conversa nova e vazia e diga primeiro qual banco e versão você usa (sem isso ela assume MySQL 8).
  3. Depois não diga mais nada e espere a primeira pergunta.

Quatro comandos para usar a qualquer momento

  • 跳过 Já para o próximo ato
  • 换个说法 Explicar este ponto por outro ângulo
  • 直说吧 Dar a resposta completa e depois me fazer repetir
  • 复盘 Ir direto para a ficha final

Três armadilhas

  • Não leia o gabarito do fim antes —— a seção «erros de raciocínio comuns» é a resposta de cada pergunta.
  • Prepare-se para ser cobrado por números. «Um pouco mais rápido», «economiza IO» é cortado na hora: quantas linhas? quantas vezes? quantas vezes mais rápido? Conclusão sem número é decoreba.
  • Assim que começar a elogiar, lembre-o da regra «não me elogie». Conduzir não é acariciar.

Comece pelo índice composto: é o alicerce da série; «os bloqueios ficam nos registros de índice» e «por que ele lê tantas linhas» se apoiam os dois na frase-chave dele. Se a concorrência está mordendo em produção, comece por «ler e depois gravar»; se as consultas estão lentas, pelo plano de execução.

Índices

它为什么没走索引
索引明明建了,它就是不走 —— 是写废了,还是它算过了?
★★★★☆ · cerca de 35 min

Consultas e volume

读了多少行才吐出这几行
看了执行计划,走索引了 —— 那它扫了多少行、返回几行?
★★★☆☆ · cerca de 35 min
翻到第 5000 页
LIMIT 20 OFFSET 100000 —— 它是怎么找到第 100001 行的?
★★★☆☆ · cerca de 30 min
Estes prompts são de código aberto O texto é mantido no repositório público kacam-net/hero-prompts. Se algum não aperta o suficiente, ou falta uma linha no gabarito dele, vá lá e mude: entrar no ar aqui é outra decisão, tomada pelo catálogo deste lado.