Skip to main content
📝 Laravel-applicaties

🚀 Trage databasequery's detecteren en loggen in Laravel als een pro (met voorbeelden)

Heeft u last van trage prestaties in uw Laravel-applicatie? U bent niet de enige. Een van de meest voorkomende oorzaken van trage apps zijn langzame d...

3 min

Leestijd

498

Woorden

Apr 04, 2025

Gepubliceerd

Engr Mejba Ahmed

Geschreven door

Engr Mejba Ahmed

Artikel delen

🚀 Trage databasequery's detecteren en loggen in Laravel als een pro (met voorbeelden)

Heeft u last van trage prestaties in uw Laravel-applicatie? U bent niet de enige.

Een van de meest voorkomende oorzaken van trage apps zijn langzame databasequery's — en ze vroeg opsporen kan u uren van debuggen, klachten van gebruikers en verloren verkeer besparen. Gelukkig maakt Laravel het eenvoudig om trage query's te loggen met slechts een paar regels code.

In dit artikel neem ik u mee door een stapsgewijze aanpak om trage query's in Laravel te detecteren en te loggen — zelfs als u alleen maar oefent met testdata.


🧠 Waarom trage query's bijhouden?

Voordat we in de code duiken, laten we begrijpen waarom dit belangrijk is:

  • 🐢 Trage query's vertragen uw hele applicatie
  • 🧩 Ze kunnen duiden op ontbrekende indexen, slechte querystructuur of onnodige joins
  • 💰 In een live app kunnen ze u gebruikers — en omzet — kosten

Query's bijhouden en loggen is een krachtige manier om controle te krijgen over prestaties.


🛠️ Stap 1: Query-logging inschakelen in Laravel

Voeg het volgende toe aan de boot()-methode in AppServiceProvider.php:

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());
    });
}

🕐 Dit logt elke query die langer duurt dan 1000ms (1 seconde).

U kunt de drempelwaarde naar wens aanpassen — zelfs tot 50ms voor ontwikkelomgevingen.


🧪 Stap 2: Testdata aanmaken

Gebruik een seeder om een realistische dataset te simuleren:

php artisan make:seeder PostSeeder

In PostSeeder.php:

use App\Models\Post;

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

Voer de seeder uit:

php artisan db:seed --class=PostSeeder

Nu bevat uw database genoeg records om zware query's te testen.


⚡ Stap 3: Een trage query simuleren (voor testdoeleinden)

U kunt een trage query simuleren via een eenvoudige route:

use Illuminate\Support\Facades\DB;

Route::get('/slow-query', function () {
    usleep(2000000); // 2 seconden vertraging (in microseconden)
    return DB::table('posts')->limit(1000)->get();
});

Of als u MySQL gebruikt:

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

Dit zorgt voor een vertraging die lang genoeg is om de logging te activeren.


📂 Stap 4: De logs controleren

Open dit bestand:

storage/logs/laravel.log

En u ziet iets als:

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

Bingo! U heeft zojuist een trage query gevonden.


🔐 Bonus: Volledige SQL met bindings loggen

Wilt u exacte SQL-statements zien?

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

Voeg dit toe aan uw AppServiceProvider@boot() tijdens ontwikkeling.


🧩 Praktische toepassingen

  • API-endpoints monitoren die te traag reageren
  • Admin-dashboards debuggen met grote datasets
  • Ontbrekende indexen op veelgebruikte tabellen opsporen

✅ Conclusie

Laravel geeft u de tools — u hoeft alleen maar de schakelaar om te zetten.

Door langlopende query's te loggen:

  • Krijgt u beter inzicht in de prestaties van uw app
  • Voorkomt u prestatieproblemen in een vroeg stadium
  • Bouwt u efficiëntere, schaalbaardere applicaties

🔔 Volgende stap: Probeer dit in uw huidige project en laat de logs draaien tijdens de ontwikkeling. U zult verbaasd zijn hoe snel u patronen ontdekt.

Coffee cup

Vond u dit artikel leuk?

Uw steun helpt mij meer diepgaande technische content, open-source tools en gratis bronnen voor de ontwikkelaarsgemeenschap te maken.

Gerelateerde onderwerpen

Engr Mejba Ahmed

Over de auteur

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

8  x  2  =  ?

Blijf leren

Gerelateerde artikelen

Alles bekijken

Comments

Leave a Comment

Comments are moderated before appearing.