Zu viele DB Queries?

Hilfe zu Modulen und Tags
Post Reply
tkeil69575

Zu viele DB Queries?

Post by tkeil69575 »

Hallo miteiander,

mal ne dumme frage ;) ich habe eine seite aufgebaut mit folgender seiten struktur:
siehe Bild hier -> http://www.tk-doku.de/struktur.gif

Folgende Module sind installiert:
- CMS Mailer
- CompanyDirectory
- FrontEndUsers
- CustomContent
- News
- ModulManager
- nuSOAP
- Search
- TinyMCE

Das Menu der Seite ist etwas kompliziert ... benutze den MenüManager dafür mit selbst angelegten Templates
Es gibt 4 Menüs die miteinader agieren ...
Footermenu, Hauptmenu, Menurechts und Untermenu

Hier das Footermenu:

Code: Select all

{if $count > 0}
<ul>
{foreach from=$nodelist item=node}
{if $node->hierarchy > 10}
  <li><a href="{$node->url}"{if $node->accesskey != ''} accesskey="{$node->accesskey}"{/if}{if $node->tabindex != ''} tabindex="{$node->tabindex}"{/if}{if $node->titleattribute != ''} title="{$node->titleattribute}"{/if}><dfn>{$node->hierarchy}: </dfn>{if $node->current == true}<b>{/if}{$node->menutext}{if $node->current == true}</b>{/if}</a></li>
{/if}
{/foreach}
</ul>
Hier das Hauptmenu:

Code: Select all

{if $count > 0}
<ul>
{foreach from=$nodelist item=node}
{if $node->hierarchy < 6}
  {if $node->current == true or $node->parent == true}<li {menuclass}>{else}<li>{/if}<a href="{$node->url}"{if $node->accesskey != ''} accesskey="{$node->accesskey}"{/if}{if $node->tabindex != ''} tabindex="{$node->tabindex}"{/if}{if $node->titleattribute != ''} title="{$node->titleattribute}"{/if}><dfn>{$node->hierarchy}: </dfn>{if $node->current == true or $node->parent == true}<b>{/if}{$node->menutext}{if $node->current == true or $node->parent == true}</b>{/if}</a></li>
{/if}
{/foreach}
</ul>
{/if}
Hier das Menurechts:

Code: Select all

{if $count > 0}
<ul>
{foreach from=$nodelist item=node}
{if $node->current == true or $node->parent == true}<li class="rechtsaktiv">{else}<li>{/if}<a href="{$node->url}"{if $node->accesskey != ''} accesskey="{$node->accesskey}"{/if}{if $node->tabindex != ''} tabindex="{$node->tabindex}"{/if}{if $node->titleattribute != ''} title="{$node->titleattribute}"{/if}><dfn>{$node->hierarchy}: </dfn>{$node->menutext}</a></li>
{/foreach}
</ul>
{/if}
und hier das Untermenu:

Code: Select all

{if $count > 0}
<ul>
{foreach from=$nodelist item=node}
{if $node->hierarchy > 5 and $node->hierarchy < 11}
{if $node->current == true}<li>{elseif $node->parent == false}<li {menuclass}>{else}<li {menuclass}>{/if}<a href="{$node->url}"{if $node->accesskey != ''} accesskey="{$node->accesskey}"{/if}{if $node->tabindex != ''} tabindex="{$node->tabindex}"{/if}{if $node->titleattribute != ''} title="{$node->titleattribute}"{/if}><dfn>{$node->hierarchy}: </dfn>{if $node->current == true}<b>{/if}{$node->menutext}{if $node->menutext == "HÄNDLERBEREICH"} <img src="uploads/images/lock.gif" height="8" width="7" alt="Geschützt">{/if}{if $node->current == true}</b>{/if}</a></li>
{/if}
{/foreach}
</ul>
{/if}
{/if}
----------

Nun ist mein Problem, dass in der Regel die Seiten um die 52-60 mysql queries haben ... die News Seite sogar 80 .. Mir scheint das ein wenig zu viel ... Gut mein Server packt das ohne Problem, weil ein Rootserver ... aber man will ja sparsam sein und ich habe noch ein viel größeres projekt vor mit vielen hunderten von seiten ;) Module zu entfernen bringt wenig .. da wird es dann ein oder 2 queries weniger. Liegt es an meiner Seitenstruktur und wenn ja wie kann ich es besser machen oder habe ich die Grenze schon erreicht? Ich blicke nicht ganz wo das Problem liegt. Vielleicht kann mir wer das ein wenig erklären.

Danke im Voraus
Tina
Last edited by tkeil69575 on Tue Feb 13, 2007 11:32 am, edited 1 time in total.
tkeil69575

Re: Zu viele DB Queries?

Post by tkeil69575 »

update ...

bin jetzt mal cyberman artikel gefolgt
http://forum.cmsmadesimple.org/index.ph ... 474.0.html

und habe folgende module (CMSMailer, nuSOAP, ModuleManager) und alle unötigen Tags und Sprachen deinstalliert bzw. gelöscht, da ich sie nicht wirklich brauche. Habe zlib Komprimierung aktiviert, pretty urls und use hierarchy abgeschaltet. Gut die Seite ist schneller, verbraucht ein bisschen weniger speicher aber an den vielen queries ändert sich naütrlich nichts ... wenn ich den cache leere, habe ich sogar auf einer seite 126 queries, bis die seite wieder im cache ist, dann gehts runter auf 51 queries ...

mmmh ?

tina
tkeil69575

Re: Zu viele DB Queries?

Post by tkeil69575 »

kann niemand etwas dazu sagen? zumindest was mehr queries beinflusst?
tina
cyberman

Re: Zu viele DB Queries?

Post by cyberman »

Mea culpa Tina, hab dich nicht vergessen, nur leider noch keine Zeit gefunden, dir zu antworten, da es nicht mit 2 Worten erklärt ist  :-* ...

Bei CMS made simple befinden sich fast alle Daten in der Datenbank (Templates, Stylesheets, Content, Benutzerdefinierte Tags, Globale Inhaltsblöcke etc.). Das heisst natürlich umgekehrt, dass sämtliche Daten zur Anzeige einer Webseite erst aus der Datenbank geholt werden müssen. Daher die hohe Anzahl der Queries. Da ist natürlich die Frage, an welcher Stelle man da mit Sparen anfangen will.

Ohne Frage, da die Menüs bei CMSms selbstgenerierend sind, wird ein Großteil deiner 128 Queries über den 4 mal aufgerufenen MenüManager verbraten. Die Struktur der Menüs wird dann in die /tmp/cache/contentcache.php geschrieben. Deshalb sinkt dann auch die Anzahl der Queries auf 51. Auch das News-Modul benötigt pro News 1-2 Queries. Und CompanyDirectory, FrontEndUsers und CustomContent kommen auch nicht ohne Queries aus.

Daher bietet sich auch an, mehrere individuell auf eine bestimmte Gruppe von Seiten zugeschnittene Templates einzusetzen anstatt eines für alles.

Aber es gibt durchaus ein paar (wenige) Queries, die sich einsparen lassen. Zum Beispiel trage ich den Seitennamen immer direkt ins Template ein, da eine Änderung an dieser Stelle nur sehr selten notwendig ist, so dass schon mal {sitename} wegfällt. Auch die Informationen für die CMSms-Version {cms_version} und {cms_name} oder der das Copyright weiterzählende UDT sind Daten, die nicht unbedingt aus der Datenbank geholt werden müssen genau so wie der globale Inhaltsblock "Footer". Wenn du die Stylesheets und den Content mit meinem ersten PHP-Gehversuch statisch machst, lassen sich auch noch ein paar Queries einsparen:

http://forum.cmsmadesimple.org/index.ph ... l#msg46828

Natürlich kannst du auch noch die Templates und die Stylesheets lokal auf dem Server ablegen und includen bzw. direkt verlinken. Dürfte nach meinen Tests von der Performance her nicht sehr viel bringen ...
tkeil69575

Re: Zu viele DB Queries?

Post by tkeil69575 »

hi cyberman,
ok prima, ich werde mich mal dranmachen. das ist was ich wissen wollte (wie das mit dem menü manager ist). wie du sagst kann sicher hier und da einiges gespart werden, besonders natürlich wohl an meinem menü dingsbums ;) ich muss dazusagen, auch mit den vielen quieries läuft die seite wie geschmiert, da ich aber noch mehr projekte habe wo ich gerne cmsms benutzen möchte, und die alle auf dem selben server laufen, will ich natürlich mysql nur so belasten wie unbedingt nötig.

dank dir  :)
tina
Post Reply

Return to “Module und Tags”