von NetDrag |
ne, is datenbank intern, sql und php haben gar nichts damit zu tun.
planen mußt du ihn schon, d.h die größe sodaß oft benötigte abfragen im cache bleiben, auch wenn neue querys dazu kommen.
Nur bringt dir der cache wahrscheinlich nichts, weil bei einer gut geplanten datenbank wirkt er erst wenn die datenbank etwas größer ist, was bei webapplikationen selten der fall ist.
gib mal eine deiner sql abfragen im commandline client von mysql ein, dann siehst du ja wie lange die abfrage dauert. der query-cache liegt meist bei 0,2 sekunden. |
von Bastian_W |
hi...
meine Frage ziehlte mehr daraufhin ob ich einen zustäzlichen Befehl in meinem PHP Programm einbauen muß?
Wie frage ich den den Status ab?
Per PHP??? |
von toc22 |
Der Q-Cache ist ab Version 4 von MYSQL enthalten.
In dem Q-Cache werden Querys und deren Ergebnismengen gespeichert. Wenn das gleiche Statement mehrmals benutzt wird und die betroffenen Datensätze sich nicht verändert haben, wird das Ergebnis aus dem Cache geliefert. Bei einem kleinen Cache kann es allerdings sehr schnell vorkommen, dass ältere Statements überschrieben werden.
In Szenarien, in denen häufig auf Bestandsdaten zugegriffen wird, kann dieser Cache enmorme Geschwindigkeitssteigerungen bewirken. Besonders bei komplexen Statements kann der Q-C sehr wirkungsvoll sein, da das zeitaufwendige Parsen der Statements entfällt. Bei Bewegungsdaten, dürften die Geschwindigkeitssteigerungen ehere gering sein.
Man kann die Effiezienz des Q-C. in einer speziellen Situatuion sehr leicht bewerten:
show status;
Aktiviert wird der Q-Cache wie folgt:
unter Linux in /etc/my.cnf
[mysqld]
...
query_cache_size=500K
...
Hier gibt es eine sehr gute Doku zum Q-C:
http://www.mysql.com/doc/en/Query_Cache.html |
von Bastian_W |
Ok... habe ich mitlerweile gut verstanden... nur was ist der
Query-Cache???
Wie stelle ich den ein bzw. benutze den? |
von NetDrag |
Also index über Fulltext hat keinen Sinn. Du muß dir das so vorstellen:
Eine Datenbank ist ja nichts anderes als ein Programm das in einer Datei mit einem genauen Schema nach einträgen sucht. Also
Column ID | Column Name | Column Beschreibung
1 | Name1 | Eine ziemlich lange Beschreibung zu diesem Link
2 | Name2 | Eine sehr sehr Lange Beschreibung zu Link 2
usw.
Da das DatenbankSystem ja nicht weiß wo genau die 2 Zeile anfängt, muß es erst Zeile 1, durchgehen bis es weiß wo Zeile 2 anfängt. Vereinfacht ist der Index eine Liste die dem DBMS genau sagt wo der 2. Eintrag liegt. So geht der Zugrifff ziemlich schneller.
1 | Position 1
2 | Position 2
Wenn jetzt in Index auch noch ein langer Text steht macht der Index ja keinen Sinn mehr da dann der Index gleich lang wird wie dir Tabelle |
|