Skip to main content
📝 Laravel-Anwendungen

🚀 Langsame Datenbankabfragen in Laravel wie ein Profi erkennen und protokollieren (mit Beispielen)

Haben Sie Probleme mit langsamer Performance in Ihrer Laravel-Anwendung? Sie sind nicht allein. Eine der häufigsten Ursachen für träge Apps sind langs...

3 min

Lesezeit

514

Wörter

Apr 04, 2025

Veröffentlicht

Engr Mejba Ahmed

Geschrieben von

Engr Mejba Ahmed

Artikel teilen

🚀 Langsame Datenbankabfragen in Laravel wie ein Profi erkennen und protokollieren (mit Beispielen)

Haben Sie Probleme mit langsamer Performance in Ihrer Laravel-Anwendung? Sie sind nicht allein.

Eine der häufigsten Ursachen für träge Apps sind langsame Datenbankabfragen — und sie frühzeitig zu erkennen kann Ihnen stundenlangem Debugging, Nutzerbeschwerden und Traffic-Verlusten ersparen. Zum Glück macht es Laravel einfach, langsame Abfragen mit nur wenigen Zeilen Code zu protokollieren.

In diesem Beitrag führe ich Sie durch einen schrittweisen Ansatz zur Erkennung und Protokollierung langsamer Abfragen in Laravel — auch wenn Sie nur mit Testdaten üben.


🧠 Warum langsame Abfragen verfolgen?

Bevor wir in den Code einsteigen, verstehen wir warum das wichtig ist:

  • 🐢 Langsame Abfragen bremsen Ihre gesamte Anwendung aus
  • 🧩 Sie können auf fehlende Indizes, schlechte Abfragestruktur oder unnötige Joins hinweisen
  • 💰 In einer Live-App können sie Sie Nutzer — und Umsatz — kosten

Abfragen zu verfolgen und zu protokollieren ist ein kraftvolles Mittel, die Performance Ihrer App unter Kontrolle zu behalten.


🛠️ Schritt 1: Query-Logging in Laravel aktivieren

Fügen Sie in AppServiceProvider.php folgendes zur boot()-Methode hinzu:

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

🕐 Dies protokolliert jede Abfrage, die länger als 1000ms (1 Sekunde) dauert.

Sie können den Schwellenwert nach Bedarf anpassen — sogar auf 50ms für Entwicklungsumgebungen.


🧪 Schritt 2: Testdaten erstellen

Verwenden Sie einen Seeder, um einen realistischen Datensatz zu simulieren:

php artisan make:seeder PostSeeder

In PostSeeder.php:

use App\Models\Post;

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

Seeder ausführen:

php artisan db:seed --class=PostSeeder

Jetzt hat Ihre Datenbank genug Einträge, um schwere Abfragen zu testen.


⚡ Schritt 3: Eine langsame Abfrage simulieren (zum Testen)

Sie können eine langsame Abfrage über eine einfache Route simulieren:

use Illuminate\Support\Facades\DB;

Route::get('/slow-query', function () {
    usleep(2000000); // 2 Sekunden Verzögerung (in Mikrosekunden)
    return DB::table('posts')->limit(1000)->get();
});

Oder bei MySQL:

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

Dies erzeugt eine ausreichend lange Verzögerung, um das Logging auszulösen.


📂 Schritt 4: Die Logs prüfen

Öffnen Sie diese Datei:

storage/logs/laravel.log

Und Sie sehen etwas wie:

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

Treffer! Sie haben gerade eine langsame Abfrage gefunden.


🔐 Bonus: Vollständiges SQL mit Bindings protokollieren

Möchten Sie exakte SQL-Statements sehen?

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

Fügen Sie dies während der Entwicklung zu Ihrem AppServiceProvider@boot() hinzu.


🧩 Praxisanwendungen

  • API-Endpoints überwachen, die zu langsam antworten
  • Admin-Dashboards mit großen Datensätzen debuggen
  • Fehlende Indizes auf häufig genutzten Tabellen aufspüren

✅ Fazit

Laravel gibt Ihnen die Werkzeuge — Sie müssen nur den Schalter umlegen.

Durch die Protokollierung lang laufender Abfragen:

  • Gewinnen Sie bessere Einblicke in die Performance Ihrer App
  • Verhindern Sie Performance-Engpässe frühzeitig
  • Entwickeln Sie effizientere, skalierbarere Anwendungen

🔔 Nächster Schritt: Probieren Sie dies in Ihrem aktuellen Projekt aus und lassen Sie die Logs während der Entwicklung laufen. Sie werden erstaunt sein, wie schnell Sie Muster erkennen.

Coffee cup

Hat Ihnen dieser Artikel gefallen?

Ihre Unterstützung hilft mir, mehr tiefgehende technische Inhalte, Open-Source-Tools und kostenlose Ressourcen für die Entwickler-Community zu erstellen.

Verwandte Themen

Engr Mejba Ahmed

Über den 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

7  x  7  =  ?

Weiter lernen

Verwandte Artikel

Alle anzeigen

Comments

Leave a Comment

Comments are moderated before appearing.