Skip to main content
📝 Aplicaciones Laravel

🚀 Cómo Detectar y Registrar Consultas Lentas en Laravel Como un Profesional

Aprende a detectar y registrar consultas lentas en Laravel. Configura el logging de consultas, usa Telescope, optimiza el rendimiento y encuentra cuellos de botella.

3 min

Tiempo de lectura

540

Palabras

Apr 04, 2025

Publicado

Engr Mejba Ahmed

Escrito por

Engr Mejba Ahmed

Compartir Artículo

🚀 Cómo Detectar y Registrar Consultas Lentas en Laravel Como un Profesional

¿Luchas con el rendimiento lento de tu aplicación Laravel? No estás solo.

Una de las causas más comunes de aplicaciones lentas son las consultas lentas a la base de datos — e identificarlas temprano puede ahorrarte horas de depuración, quejas de usuarios y pérdida de tráfico. Afortunadamente, Laravel facilita el registro de consultas lentas con solo unas pocas líneas de código.

En este artículo, te guiaré a través de un enfoque paso a paso para detectar y registrar consultas lentas en Laravel — incluso si solo estás practicando con datos de prueba.


🧠 ¿Por Qué Deberías Rastrear las Consultas Lentas?

Antes de sumergirnos en el código, entendamos por qué esto importa:

  • 🐢 Las consultas lentas ralentizan toda tu aplicación
  • 🧩 Pueden indicar índices faltantes, mala estructura de consultas o joins innecesarios
  • 💰 En una aplicación en producción, pueden costarte usuarios — e ingresos

Poder rastrear y registrar estas consultas es una forma poderosa de tomar control del rendimiento.


🛠️ Paso 1: Habilitar el Registro de Consultas en Laravel

En AppServiceProvider.php, agrega lo siguiente al método boot():

use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Log;

public function boot()
{
    DB::enableQueryLog();

    DB::whenQueryingForLongerThan(1000, function ($connection) {
        Log::warning('⚠️ Long running queries detected:', $connection->getQueryLog());
    });
}

🕐 Esto registra cualquier consulta que tome más de 1000ms (1 segundo).

Puedes ajustar el umbral según necesites — incluso hasta 50ms para entornos de desarrollo.


🧪 Paso 2: Crear Datos de Prueba para Testing

Usa un seeder para simular un conjunto de datos del mundo real:

php artisan make:seeder PostSeeder

En PostSeeder.php:

use App\Models\Post;

public function run()
{
    Post::factory()->count(10000)->create();
}

Ejecuta el seeder:

php artisan db:seed --class=PostSeeder

Ahora tu base de datos tiene suficientes registros para probar consultas pesadas.


⚡ Paso 3: Provocar una Consulta Lenta (Para Testing)

Puedes simular una consulta lenta usando una ruta simple:

use Illuminate\Support\Facades\DB;

Route::get('/slow-query', function () {
    usleep(2000000); // 2 segundos de retardo (en microsegundos)
    return DB::table('posts')->limit(1000)->get();
});

O si estás usando MySQL, prueba:

return DB::select('SELECT SLEEP(2), title FROM posts LIMIT 1');

Esto creará un retardo suficiente para activar el registro.


📂 Paso 4: Revisar los Logs

Abre este archivo:

storage/logs/laravel.log

Y verás algo como:

[2025-04-04 14:15:22] local.WARNING: ⚠️ Long running queries detected: [...]

¡Listo! Acabas de capturar una consulta lenta.


🔐 Bonus: Registrar SQL Completo con Bindings

¿Quieres ver las sentencias SQL exactas?

DB::listen(function ($query) {
    Log::info("SQL: {$query->sql} | Time: {$query->time}ms", $query->bindings);
});

Agrega esto a tu AppServiceProvider@boot() durante el desarrollo.


🧩 Casos de Uso en el Mundo Real

  • Monitorear endpoints de API que responden demasiado lento
  • Depurar paneles de administración con grandes conjuntos de datos
  • Detectar índices faltantes en tablas de uso frecuente

✅ Resumen

Laravel te da las herramientas — solo necesitas activar el interruptor.

Al registrar consultas de larga duración:

  • Obtienes mejor visibilidad sobre el rendimiento de tu aplicación
  • Previenes cuellos de botella de rendimiento tempranamente
  • Construyes aplicaciones más eficientes y escalables

🔔 Siguiente paso: Prueba esto en tu proyecto actual y mantén los logs funcionando mientras desarrollas. Te sorprenderá lo rápido que detectas patrones.

Coffee cup

¿Te gustó este artículo?

Tu apoyo me ayuda a crear más contenido técnico detallado, herramientas de código abierto y recursos gratuitos para la comunidad de desarrolladores.

Temas Relacionados

Engr Mejba Ahmed

Sobre el Autor

Engr Mejba Ahmed

Engr. Mejba Ahmed builds AI-powered applications and secure cloud systems for businesses worldwide. With 10+ years shipping production software in Laravel, Python, and AWS, he's helped companies automate workflows, reduce infrastructure costs, and scale without security headaches. He writes about practical AI integration, cloud architecture, and developer productivity.

Discussion

Comments

0

No comments yet

Be the first to share your thoughts

Leave a Comment

Your email won't be published

9  +  9  =  ?

Seguir Aprendiendo

Artículos Relacionados

Ver Todos

Comments

Leave a Comment

Comments are moderated before appearing.

Learning Resources

Expand Your Knowledge

Accelerate your growth with structured courses, verified certificates, interactive flashcards, and production-ready AI agent skills.

Sample Certificate of Completion

Sample certificate — complete any course to earn yours

Engr Mejba Ahmed

Engr Mejba Ahmed

Claude Code Expert · Online

👋

Hey there!

Quick Actions

WhatsApp Instant reply

Chat on WhatsApp

+880 1723 741224 · Instant reply

Popular Questions

Engr Mejba Ahmed is connected
Engr Mejba Ahmed is typing...
Engr Mejba Ahmed avatar

✉ Want me to follow up? Drop your email

Engr Mejba Ahmed avatar

📞 Connect Directly

Choose how you'd like to reach me

WhatsApp

+880 1723 741224

Email

[email protected]

✓ Details sent! I'll get back to you shortly.

Powered by OpenAI

335+

Blog Posts

25

AI Courses

63

Projects

Services & Expertise

Pricing & Process

Learning & Resources

Connect & Support