Parte 09 — Almacenamiento, índices y planes
Por qué una consulta tarda: páginas, estructuras de índice, estadísticas y la lectura honesta de un plan de ejecución.
5 clases · 17 horas ·
23 conceptos · 12 fuentes
Antes de esta parte
Esta parte se apoya en lo trabajado antes. Si vienes de fuera del programa, revisa al menos el vocabulario de:
De qué trata esta parte
Por qué una consulta tarda, respondido desde el disco hacia arriba. La parte empieza donde de verdad empieza el costo —la página, no la fila— y termina en la única herramienta que convierte el rendimiento en un asunto de evidencia: el plan de ejecución.
Primero páginas, factor de bloque, buffer y localidad, que explican por qué a veces recorrer la tabla entera le gana a usar el índice. Después las dos grandes familias de estructuras: B-Tree, con la regla del prefijo más a la izquierda que decide el orden de las columnas de un índice compuesto, y LSM-Tree, con su compactación y su amplificación de escritura. Luego los índices especializados, cada uno con el caso concreto en que gana y con el costo de mantenimiento que hace que un índice inútil sea una penalización permanente. Y al final leer `EXPLAIN` para refutar una hipótesis, comparando filas estimadas contra reales nodo a nodo.
La clase 052 es la que cambia la forma de trabajar: después de ella, «creo que va lento por el índice» deja de ser una frase aceptable sin un plan al lado.
Al terminar esta parte podrás
- Explicar por qué la unidad de costo es la página y qué consecuencias tiene para el diseño de la fila.
- Elegir el orden de las columnas de un índice compuesto y justificarlo con las consultas que debe servir.
- Comparar B-Tree y LSM-Tree en términos de amplificación de lectura y de escritura.
- Elegir el índice especializado adecuado y contar su costo de mantenimiento.
- Leer un plan de ejecución y refutar una hipótesis de rendimiento con filas estimadas frente a reales.
Las clases, una por una
Intermedio · 3 h ·
3 fuentes · requiere 012
Por qué la entrada y salida manda: el motor no lee filas, lee páginas. De ahí salen el factor de bloque, la localidad y la ventaja de la lectura secuencial, que explica por qué a veces recorrer la tabla entera le gana a usar el índice —y por qué el planificador lo elige a propósito.
pagina factor de bloque buffer pool localidad lectura secuencial
Intermedio · 4 h ·
3 fuentes · requiere 048
El B-Tree y las dos preguntas que responde en la práctica: en qué orden poner las columnas de un índice compuesto —la regla del prefijo más a la izquierda— y cuándo el índice no compensa, que es cuando la selectividad es baja. Introduce el índice cubriente, la optimización con mejor relación entre esfuerzo y resultado.
B-Tree prefijo más a la izquierda selectividad índice cubriente
Avanzado · 3 h ·
3 fuentes · requiere 048
La otra familia de estructuras de almacenamiento: memtable, SSTable y compactación. Explica por qué un LSM absorbe mucha más escritura que un B-Tree y qué paga a cambio —amplificación de escritura y compactaciones que consumen recursos justo cuando el sistema está cargado—, con el filtro de Bloom como pieza que salva lecturas.
memtable SSTable compactación amplificación de escritura filtro de Bloom
Avanzado · 3 h ·
3 fuentes · requiere 049
Los índices que no son B-Tree y el caso concreto en que cada uno gana: hash para igualdad pura, GIN para contenido de arreglos y documentos, GiST para geometría y rangos, BRIN cuando el orden físico se correlaciona con la columna, más parciales, de expresión y cubrientes. Cierra con el costo de mantenimiento, que hace que un índice inútil no sea neutro sino una penalización permanente.
índice parcial índice de expresión GIN BRIN costo de mantenimiento
Avanzado · 4 h ·
3 fuentes · requiere 049, 051
Leer un plan de ejecución para refutar una hipótesis, no para confirmarla. La técnica central es comparar filas estimadas contra reales nodo a nodo: un error de estimación explica casi cualquier plan absurdo. Insiste en que el `cost` no son milisegundos y en que solo `EXPLAIN ANALYZE` mide tiempo.
optimizador por costos estadística estimación de cardinalidad costo frente a tiempo
Errores frecuentes en esta parte
Cada uno de estos es una creencia habitual y su corrección.
- «Añadir índices siempre ayuda.» Cada índice se paga en cada escritura y ocupa espacio; el que no usa ninguna consulta es una penalización permanente.
- «Tengo el índice pero el motor no lo usa.» Casi siempre es la regla del prefijo más a la izquierda, una función aplicada a la columna, o una selectividad demasiado baja.
- «El `cost` de `EXPLAIN` son milisegundos.» Es una unidad interna comparativa. El tiempo solo aparece con `EXPLAIN ANALYZE`.
- «El recorrido secuencial siempre es malo.» Es lo correcto cuando la consulta devuelve una fracción grande de la tabla, y el planificador lo elige a propósito.
Vocabulario de la parte
Los 23 términos que esta parte introduce. Todos están también
en el glosario del programa con sus términos
relacionados.
Fuentes usadas en esta parte
12 obras distintas sostienen lo que se afirma en estas
5 clases.
Otras partes