DB-Abfrage aus der Joomla-Debug-Konsole

  • Hallo,


    ich habe angefangen mich mit der Debug-Konsole zu befassen und habe dazu meine xampp-Installation genutzt.

    Joomla: 3.9.10

    Komponente: Phoca Gallery 4.3.18

    PHP: 7.2.11

    DB: 5.5.5-10.1.36-MariaDB

    Webserver: Apache/2.4.35 (Win32)


    Neugierig hat mich dieser Beitrag gemacht.


    Bei den aufgeführten DB-Abfragen ist eine dabei, die deutlich aus dem Rahmen fällt und bei der ich aber überfragt bin, was die Ursache dafür ist. In einem Beitrag aus 2017 wurde eine ähnliche Abfrage, aber m.M. nach in einem Kontext schon einmal diskutiert.


    forum.joomla.de/core/attachment/4351/


    Für mich sieht es so aus, dass hier ziemlich Zeit verbraten wird, nur habe ich keine Idee, warum. Kann mir das bitte jemand erläutern?

  • Hallo Christine,


    vielen Dank für den Link.

    Ja, da hat es wohl in einigen früheren Versionen der Maria-DB einen Bug beim "query end" gegeben. Dieser ist mittlerweile behoben. In einer neueren xampp-Installation mit MariaDB 10.3.16 tritt dieses Problem nicht mehr auf.

  • Ich möchte noch eine 2. Frage anhängen.


    Neben dem o.g. "query end"-Problem sind mir noch weitere Meldungen aufgefallen, die ich nicht einordnen kann.

    Ein Beispiel:



    Diese beiden Hinweise sind einzeln oder in Kombination bei den DB-Abfragen zu finden. Ich habe hier im Forum danach gesucht und auch einen älteren Beitrag gefunden. Allerdings habe ich diese Einträge auch in einer frischen und unveränderten Joomla-Installation 3.9.10 entdeckt. Was hat es damit auf sich?

  • In der von Joomla! vorgegebenen Datenbankstruktur ist keine Indexierung auf der Spalte 'published' definiert. Deshalb muss für die Abfrage "WHERE published=1" die ganze Tabelle durchlaufen werden. Wenn ein Key darauf definiert wäre, hätte man direkteren Zugriff. Für Tabellen mit vielen Einträgen ist es sinnvoll, sich eine gute Indexierung zu überlegen.

    Aber ehrlich gesagt kann ich mir nicht vorstellen, dass das an dieser Stelle einen großen Unterschied macht. Die Tabelle beinhaltet einen Eintrag für jede Inhaltssprache. Zurückgegeben wird bei dir auch nur eine Zeile, du hast also nur eine aktive Sprache. Solange du nicht unzählige deaktivierte Inhaltssprachen hast (was mir nicht sinnvoll erschiene), lässt sich die Operation "durchsuche alle Einträge" also runterbrechen auf "durchsuche den einen Eintrag". Das halte ich aus Effizienzsicht für absolut unbedenklich. Die 1ms Abfragezeit, die in der Konsole für diese Abfrage steht, unterstützt das. Darum musst du dir also keine Sorgen machen.

  • Danke für die Erläuterung.

    Ist mir halt aufgefallen, dass es in unterschiedlichen Kombinationen diese Hinweise zu den Tabellen gibt:

    Leider fehlen mir die DB-Kenntnisse um dies zu beurteilen, daher die Nachfrage.