Trazar una sesión / consulta (habilitar trace / profiling)
Oracle
-- For a specific session (10046 event tracing):
BEGIN
DBMS_MONITOR.SESSION_TRACE_ENABLE(session_id => 123, serial_num => 4567, waits => TRUE, binds => TRUE);
END;
/
-- To disable: DBMS_MONITOR.SESSION_TRACE_DISABLE(123, 4567);DBMS_MONITOR.SESSION_TRACE_ENABLE genera un archivo de trace 10046 para la sesión; deshabilítelo siempre al terminar (el tracing añade sobrecarga y uso de disco).
PostgreSQL
LOAD 'auto_explain';
SET auto_explain.log_min_duration = 0;
SET auto_explain.log_analyze = true;
-- Simple alternative: SET log_min_duration_statement = 0;auto_explain escribe los planes de consulta, y log_min_duration_statement las consultas lentas/todas, en el archivo de log; un valor de 0 registra todas las consultas, así que vigile el volumen de log.
MySQL
-- performance_schema approach (recommended):
UPDATE performance_schema.setup_consumers SET ENABLED='YES' WHERE NAME LIKE 'events_statements%';
-- Legacy/simple method (being deprecated):
SET profiling = 1;
-- run the query, then:
SHOW PROFILES;El trazado de consultas se hace con events_statements de performance_schema; el método SET profiling es antiguo (obsoleto) pero ofrece una medición rápida por sesión.
SQL Server
CREATE EVENT SESSION [trace_slow] ON SERVER
ADD EVENT sqlserver.sql_statement_completed(
WHERE duration > 1000000)
ADD TARGET package0.event_file(SET filename=N'trace_slow.xel');
GO
ALTER EVENT SESSION [trace_slow] ON SERVER STATE = START;Extended Events (XEvents) es el método de trazado moderno; cree la sesión e iníciela con START, y deténgala con STOP/DROP al terminar.
MongoDB
db.setProfilingLevel(2)
// 1 = slow operations only (slowms threshold), 0 = off
// Results: db.system.profile.find().sort({ ts: -1 }).limit(10)setProfilingLevel(2) registra todas las operaciones en la colección system.profile; en producción se prefiere 1 (solo lentas), ya que el nivel 2 añade sobrecarga.
Redis
MONITOR
# Streams all commands arriving at the server in real time. Exit: Ctrl-CMONITOR muestra todos los comandos en vivo, pero provoca una caída importante del rendimiento; úselo brevemente y con cuidado en producción. Alternativa: SLOWLOG GET.
Elasticsearch
GET my-index/_search
{
"profile": true,
"query": { "match": { "title": "elastic" } }
}
// Persistent slow query tracing: the index.search.slowlog.threshold.query.warn setting"profile": true da el desglose de tiempos de consulta/agregación de una sola búsqueda; para un monitoreo continuo, configure umbrales de slowlog.