T2.1: Manages Query Processing

Knowledge Review - InterSystems IRIS SQL Specialist

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

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

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

Resumen de Preparación para el Examen

Conceptos Críticos a Dominar:

  1. 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
  2. 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)
  3. Valores SQLCODE: Saber que 0 = éxito, 100 = no se encontraron datos, negativo = error, y -400 = error fatal genérico
  4. 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
  5. 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

Report an Issue