Skip to main content
📝 Aplicações Laravel

🚀 Como Detectar e Registrar Consultas Lentas no Laravel Como um Profissional

Aprenda a detectar e registrar consultas lentas no Laravel. Configure o logging de consultas, use o Telescope, otimize o desempenho e encontre gargalos.

3 min

Tempo de leitura

543

Palavras

Apr 04, 2025

Publicado

Engr Mejba Ahmed

Escrito por

Engr Mejba Ahmed

Compartilhar Artigo

🚀 Como Detectar e Registrar Consultas Lentas no Laravel Como um Profissional

Com dificuldades de desempenho lento na sua aplicação Laravel? Você não está sozinho.

Uma das causas mais comuns de aplicações lentas são as consultas lentas ao banco de dados — e identificá-las cedo pode economizar horas de depuração, reclamações de usuários e perda de tráfego. Felizmente, o Laravel facilita o registro de consultas lentas com apenas algumas linhas de código.

Neste artigo, vou te guiar através de uma abordagem passo a passo para detectar e registrar consultas lentas no Laravel — mesmo que você esteja apenas praticando com dados fictícios.


🧠 Por Que Você Deveria Rastrear Consultas Lentas?

Antes de mergulhar no código, vamos entender por que isso importa:

  • 🐢 Consultas lentas desaceleram toda sua aplicação
  • 🧩 Podem indicar índices faltantes, estrutura de consulta ruim ou joins desnecessários
  • 💰 Em uma aplicação em produção, podem custar usuários — e receita

Poder rastrear e registrar essas consultas é uma forma poderosa de tomar controle do desempenho.


🛠️ Passo 1: Habilitar o Registro de Consultas no Laravel

Em AppServiceProvider.php, adicione o seguinte ao 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());
    });
}

🕐 Isso registra qualquer consulta que leve mais de 1000ms (1 segundo).

Você pode ajustar o limite conforme necessário — até 50ms para ambientes de desenvolvimento.


🧪 Passo 2: Criar Dados Fictícios para Testes

Use um seeder para simular um conjunto de dados real:

php artisan make:seeder PostSeeder

Em PostSeeder.php:

use App\Models\Post;

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

Execute o seeder:

php artisan db:seed --class=PostSeeder

Agora seu banco de dados tem registros suficientes para testar consultas pesadas.


⚡ Passo 3: Disparar uma Consulta Lenta (Para Testes)

Você pode simular uma consulta lenta usando uma rota simples:

use Illuminate\Support\Facades\DB;

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

Ou se estiver usando MySQL, tente:

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

Isso criará um atraso longo o suficiente para acionar o registro.


📂 Passo 4: Verificar os Logs

Abra este arquivo:

storage/logs/laravel.log

E você verá algo como:

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

Pronto! Você acabou de capturar uma consulta lenta.


🔐 Bônus: Registrar SQL Completo com Bindings

Quer ver as instruções SQL exatas?

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

Adicione isso ao seu AppServiceProvider@boot() durante o desenvolvimento.


🧩 Casos de Uso no Mundo Real

  • Monitorar endpoints de API que respondem muito lentamente
  • Depurar painéis administrativos com grandes conjuntos de dados
  • Detectar índices faltantes em tabelas frequentemente usadas

✅ Resumo

O Laravel te dá as ferramentas — você só precisa ligar o interruptor.

Ao registrar consultas de longa duração:

  • Você ganha melhor visibilidade sobre o desempenho da sua aplicação
  • Previne gargalos de desempenho precocemente
  • Constrói aplicações mais eficientes e escaláveis

🔔 Próximo passo: Experimente isso no seu projeto atual e mantenha os logs funcionando enquanto desenvolve. Você ficará surpreso com a rapidez com que detecta padrões.

Coffee cup

Gostou deste artigo?

Seu apoio me ajuda a criar mais conteúdo técnico aprofundado, ferramentas open-source e recursos gratuitos para a comunidade de desenvolvedores.

Tópicos Relacionados

Engr Mejba Ahmed

Sobre o 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

5  +  10  =  ?

Continue Aprendendo

Artigos 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