-- =============================================================================
-- SQL Server 2017 Express - Optimizaciones para Bajo Consumo de RAM
-- =============================================================================
-- Aplicar automáticamente al iniciar el contenedor
-- RAM objetivo: 384MB - 512MB
-- =============================================================================

-- Habilitar opciones avanzadas
EXEC sp_configure 'show advanced options', 1;
RECONFIGURE;

-- MAX SERVER MEMORY: Limitar buffer pool (ajustar según contenedor)
-- Para 384MB container: usar 280-320MB
-- Para 512MB container: usar 380-420MB
EXEC sp_configure 'max server memory', 320;
RECONFIGURE;

-- MIN SERVER MEMORY: Permitir liberar memoria bajo presión
EXEC sp_configure 'min server memory', 128;
RECONFIGURE;

-- OPTIMIZE FOR AD HOC WORKLOADS
-- Reduce memoria del plan cache para queries únicos
-- Cachea stub pequeño en lugar de plan completo
EXEC sp_configure 'optimize for ad hoc workloads', 1;
RECONFIGURE;

-- MAX DEGREE OF PARALLELISM (MAXDOP)
-- Limitar a 2 para reducir consumo en operaciones paralelas
EXEC sp_configure 'max degree of parallelism', 2;
RECONFIGURE;

-- COST THRESHOLD FOR PARALLELISM
-- Subir umbral: solo queries costosas usan paralelismo
EXEC sp_configure 'cost threshold for parallelism', 50;
RECONFIGURE;

-- RECOVERY INTERVAL
-- Checkpoints más frecuentes = recuperación más rápida tras crash
EXEC sp_configure 'recovery interval (min)', 1;
RECONFIGURE;

-- =============================================================================
-- TRACE FLAGS PARA ESTABILIDAD
-- =============================================================================

-- TF 3226: Suprime mensajes de backup exitosos en el log (reduce I/O)
DBCC TRACEON(3226, -1);

-- TF 1118: Reduce contención en tempdb (extents uniformes)
DBCC TRACEON(1118, -1);

-- TF 1117: Crecimiento uniforme de archivos de datos
DBCC TRACEON(1117, -1);

PRINT '[LOWRAM] Todas las optimizaciones aplicadas correctamente';
GO
