Skip to main content
📝 Laravel-Anwendungen

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

Erkennen und protokollieren Sie langsame Datenbankabfragen in Laravel wie ein Profi. Query-Monitoring, Schwellenwert-Alarme und Performance-Debugging mit echten Beispielen.

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

2  +  8  =  ?

Weiter lernen

Verwandte Artikel

Alle anzeigen

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