1. Comprende consideraciones y comportamiento del optimizador de consultas
Puntos Clave
- Plan de Consulta: Traducción legible por humanos de instrucciones de ejecución generadas cuando las consultas SQL se compilan
- Costo Relativo: Valor entero abstracto comparando eficiencia de diferentes planes de ejecución para la misma consulta
- Planes Congelados: Planes de consulta que permanecen fijos a pesar de cambios de código o esquema (estados Frozen/Explicit o Frozen/Upgrade)
- Entradas del Optimizador: Tamaños de tabla, índices disponibles, estadísticas, e información de estructura de datos guían decisiones de optimización
- Read Master Map: Indica plan ineficiente sin uso de índice; debería definir índices para mejor rendimiento
Notas Detalladas
Resumen
El optimizador de consultas de InterSystems IRIS genera planes de ejecución cuando las consultas SQL se preparan, no cuando se ejecutan.
- Análisis durante compilación: Estructuras de tabla, índices disponibles, tamaños de tabla, y estadísticas
- Salida: Representación legible por humanos mostrando cómo se accederá a los datos
Costo Relativo
El optimizador asigna a cada plan un valor de costo relativo:
- Calculado de: Complejidad, disponibilidad de índice, y tamaños de tabla
- Propósito: Habilita comparación entre planes de ejecución alternos para la misma consulta
- Importante: El costo solo es significativo para comparar planes para la misma consulta
Estados de Plan de Consulta
Los planes de consulta pueden congelarse para mantener ejecución consistente a pesar de cambios de esquema:
- Frozen/Explicit: Plan congelado por usuario
- Frozen/Upgrade: Congelado por actualización de versión
- Unfrozen: Normal, puede ser optimizado
- Unfrozen/Parallel: Usa %PARALLEL y no puede ser congelado
Indicadores de Acceso a Map
El optimizador intenta usar index maps en lugar de master maps:
- "Read master map": El primer paso de ejecución indica consulta ineficiente necesitando índices
- "Read index map": Indica consulta eficiente usando índices disponibles
- Recomendación: Definir índices apropiados cuando aparece "Read master map"
Consideraciones del Optimizador
Factores que el optimizador considera al generar planes:
- Selección de orden de join
- Selección de índice
- Si usar almacenamiento columnar
Herramientas de Análisis
- Alternate Show Plans: Ver múltiples planes de consulta alternos
- Características de comparación: Comparar costos relativos y estadísticas de runtime
Referencias de Documentación
2. Diferencia entre errores de sintaxis y errores de runtime
Puntos Clave
- Errores de Sintaxis: Detectados en tiempo de compilación/preparación (rango SQLCODE -1 a -99); incluyen sentencias SQL inválidas, palabras clave faltantes, expresiones malformadas
- Errores de Runtime: Ocurren durante ejecución (rango SQLCODE -101 a -399); incluyen violaciones de restricción, conflictos de bloqueo, fallos de validación de datos
- Valores SQLCODE: Valores negativos indican errores; 0 indica éxito; 100 indica no se encontraron datos
- Recuperación de Error: Usar $SYSTEM.SQL.Functions.SQLCODE(-nnn) para recuperar texto de mensaje de error
- SQLCODE -400: Genérico "Fatal error occurred" cuando código de error específico no está disponible
Notas Detalladas
Resumen
Los errores SQL de InterSystems IRIS caen en dos categorías primarias distinguidas por cuándo ocurren en el ciclo de vida de consulta.
Errores de Sintaxis (Tiempo de Compilación/Preparación)
Los errores de sintaxis se detectan en tiempo de compilación o tiempo de preparación cuando las sentencias SQL se analizan y validan.
- Rango SQLCODE: Típicamente -1 a -99
- Ejemplos comunes:
- SQLCODE -1: Sentencia SQL inválida
- SQLCODE -26: Cláusula FROM faltante
- SQLCODE -30: Tabla o vista no encontrada
- SQLCODE -51: Sentencia SQL esperada
- Efecto: Previenen ejecución de consulta; deben corregirse antes de que la sentencia pueda ejecutarse
Errores de Runtime (Tiempo de Ejecución)
Los errores de runtime ocurren durante ejecución de consulta después de compilación exitosa.
- Rango SQLCODE: Típicamente -101 a -399
- Ejemplos comunes:
- SQLCODE -104: Validación de campo falló en INSERT
- SQLCODE -119: Restricción UNIQUE falló en INSERT
- SQLCODE -114: Fila bloqueada por otro usuario
- SQLCODE -102: Operación intentada en cursor no abierto
- Causas: Problemas con valores de datos, acceso concurrente, aplicación de restricciones, o estado de ejecución
Valores SQLCODE Especiales
Dos valores SQLCODE especiales no representan errores:
- SQLCODE 0: Finalización exitosa
- SQLCODE 100: Operación exitosa pero no se encontraron datos para procesar
- SQLCODE -400: Genérico "Fatal error occurred" cuando código de error específico no está disponible
Recuperación de Mensajes de Error
Para recuperar mensajes de error legibles por humanos:
- Método ObjectScript: `$SYSTEM.SQL.Functions.SQLCODE(-nnn)`
- Procedimiento almacenado: `%SYSTEM_SQL.Functions_SQLCODE(-nnn)`
- Variable %msg: Puede contener detalles de error adicionales para ciertos errores
Referencias de Documentación
3. Recupera metadatos de Statement Index para análisis de consultas
Puntos Clave
- Statement Index: Catálogo de todas las sentencias SQL preparadas con metadatos incluyendo hash, estado congelado, timestamps, y texto de sentencia
- INFORMATION_SCHEMA.STATEMENTS: Vista del sistema conteniendo entradas de SQL Statement Index accesibles al usuario actual
- Metadatos Clave: Hash (identificador único), estado Frozen, Timestamp, conteo de ejecución, tiempo promedio, conteo de filas
- Vistas Relacionadas: STATEMENT_LOCATIONS (ubicaciones de rutina), STATEMENT_RELATIONS (tablas/vistas usadas), CURRENT_STATEMENTS (ejecutándose activamente)
- Capacidades de Consulta: Filtrar por estado congelado, uso de tabla/vista, patrones de texto de sentencia, métricas de rendimiento
Notas Detalladas
Resumen
El Statement Index proporciona metadatos completos para analizar y gestionar rendimiento de consultas SQL en InterSystems IRIS.
Vista INFORMATION_SCHEMA.STATEMENTS
Contiene entradas para todas las sentencias SQL preparadas accesibles al usuario actual en el namespace actual.
- Identificador único: Valor hash calculado del texto SQL normalizado
Columnas de metadatos clave:
- Hash: Identificador único de sentencia
- Frozen: Bandera de estado (0-3)
- Timestamp: Cuándo se preparó el plan
- Statement: Texto SQL
- Estadísticas de uso: Conteo de ejecución, tiempo total, tiempo promedio, conteo de filas, desviación estándar de runtime
Valores de Estado Frozen
El estado frozen indica si un plan de consulta está congelado:
- 0 o 3: Sentencias unfrozen
- 1: Frozen/Explicit (acción de usuario)
- 2: Frozen/Upgrade (actualización de versión)
- NULL: No existe plan de consulta
Vistas INFORMATION_SCHEMA Relacionadas
- STATEMENT_LOCATIONS: Lista ubicaciones de rutina (nombres de clase o nombres de consulta en caché)
- STATEMENT_RELATIONS: Lista tablas y vistas usadas por cada sentencia
- CURRENT_STATEMENTS: Muestra sentencias ejecutándose activamente en todo el sistema (requiere acceso a recurso %Admin_Operate)
Capacidades de Consulta
Los administradores pueden consultar estas vistas para:
- Identificar problemas de rendimiento
- Encontrar todas las sentencias usando tablas específicas
- Localizar planes congelados
- Analizar patrones de consulta
- Identificar consultas lentas por tiempo promedio
Tiempo de Recolección de Estadísticas
- Estadísticas de tiempo de preparación: Rastreadas automáticamente
- Estadísticas de runtime: Recolectadas continuamente, escritas a intervalos de hasta 30 minutos
- Agregación: Tarea del sistema agrega estadísticas específicas de proceso en estadísticas globales cada hora
- Nota: Las estadísticas recientes pueden no aparecer inmediatamente en consultas
Referencias de Documentación
Resumen de Preparación para el Examen
Conceptos Críticos a Dominar:
- Comportamiento del Optimizador de Consultas: Comprender cómo se calcula el costo relativo, qué indica "Read master map", y la diferencia entre planes congelados y no congelados
- Categorías de Código de Error: Memorizar que errores de sintaxis están en rango -1 a -99 (tiempo de compilación), errores de runtime en rango -101 a -399 (tiempo de ejecución)
- Valores SQLCODE: Saber que 0 = éxito, 100 = no se encontraron datos, negativo = error, y -400 = error fatal genérico
- Consultas de Statement Index: Ser capaz de escribir consultas contra INFORMATION_SCHEMA.STATEMENTS para encontrar planes congelados, sentencias usando tablas específicas, o estadísticas de rendimiento
- Estados de Plan Congelado: Comprender Frozen/Explicit (acción de usuario), Frozen/Upgrade (actualización de versión), Unfrozen, y Unfrozen/Parallel
Escenarios Comunes de Examen:
- Interpretar planes de consulta para identificar consultas ineficientes (uso de master map vs index map)
- Determinar si un error es de sintaxis o runtime basado en valor SQLCODE
- Escribir consultas SQL para recuperar metadatos específicos de sentencia desde vistas INFORMATION_SCHEMA
- Comprender cuándo se generan planes de consulta (tiempo de preparación vs tiempo de ejecución)
- Analizar comportamiento de plan congelado y cuándo los planes pueden/no pueden ser congelados
Recomendaciones de Práctica Práctica:
- Usar pestaña SQL Statements del Management Portal para ver planes de consulta y metadatos
- Practicar consultando INFORMATION_SCHEMA.STATEMENTS con varias cláusulas WHERE
- Generar errores intencionales de sintaxis y runtime para observar valores SQLCODE
- Usar comando EXPLAIN o Show Plan para ver planes de ejecución de consulta
- Experimentar con congelación/descongelación de planes de consulta para observar cambios de comportamiento
- Comparar planes de consulta alternos usando herramienta Alternate Show Plans
- Consultar STATEMENT_LOCATIONS y STATEMENT_RELATIONS para comprender dependencias de sentencia