Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
[MySQL 4.0] Index-Effizienz... [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr
brauche Webseite ideal für Vereine und Firmen
- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
[MySQL 4.0] Index-Effizienz...


 
MaxPayne
24-09-2004, 21:56 
 
Tag,

ich habe ein Tabelle, die Besucheraktivitäten einer Website erfassen soll. Ein Aufruf einer Website korrespondiert zu einer Zeile in dieser Tabelle, die wie folgt definiert ist:


+---------+------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+---------+------------------+------+-----+---------+-------+
| bereich | varchar(100) | | | | |
| ip | varchar(15) | | | | |
| zeit | int(10) unsigned | | | 0 | |
| browser | tinytext | YES | | NULL | |
| notiz | text | YES | | NULL | |
| sprache | enum('de','en') | | | de | |
+---------+------------------+------+-----+---------+-------+


Wie man sieht verwendet diese Tabelle aber keinerlei Indizes. Ich weiß, dass die Ergebnisse dieser Tabelle etwa jeden Monat von einem PHP-Skript abgerufen und in grafische Statistiken etc. umgewandelt werden, ansonsten würden die Schreibaufträge durch die Aufrufe der Webseite die hauptsächliche Benutzung der Tabelle darstellen.

Ich hab deswegen neulich mit nem Kumpel diskutiert, dass es in so einem Fall doch besser wäre die 2,3 sec Abrufzeit der Daten bei der Statistikauswertung in Kauf zu nehmen als die gesamte Website zu verlangsamen, weil wegen Indizes ein neuer Eintrag in die Tabelle mehr Zeit in Anspruch nimmt.

Gibt es vielleicht einen Kompromiß, wie man die Abfrage bei der Auswertung mit Indizes beschleunigen kann ohne den Aufwand beim Erweitern des Index bei einem neuen INSERT explodieren zu lassen?

 
NielsRunge
24-09-2004, 22:31 
 
also bei Tabellen in die oft geschrieben wird und eher selten gelesen, mache ich es meist so dass ich den Index bei Bedarf setze und nach der Auswertung dann wieder lösche, als das Auswertungsscript macht es halt.
Wenn die Tabellen groß werden lohnt es sich den Index dynamisch zu erstellen weil die Auswertung dann schön schnell geht.

 
MaxPayne
24-09-2004, 22:33 
 
Den Index über 15.000 Einträge zu erstellen kostet dann sicherlich bei der Auswertung noch mehr Zeit...

 
NielsRunge
24-09-2004, 22:38 
 
probieren?
Wenn ich in den Statistik Bereich komme lasse ich den Index erstellen und dann werten einige Scripte bestimmte Infos aus, die Cache ich dann, und dann beim verlassen entferne ich den Index dann wieder.
Für mich war es die beste Lösung weil dei INSERTs usw. einfach wesentlich schneller sind

 
MaxPayne
24-09-2004, 22:51 
 
Ich will ja den Abruf der Statistiken ja auch ein wenig beschleunigen. Das ginge imho nur mit Indizes.
Diese aber erst zu erstellen, kostet noch mehr Zeit, die ich auf die Statistiken...

 
NielsRunge
24-09-2004, 23:00 
 
ja, wie oft muß die Statistik angezeigt und wieoft wird etwas eingetragen?

Das mußt Du einfach vergleichen und dann eine Lösung finden.

 
MaxPayne
25-09-2004, 14:31 
 
Steht beides in dem thread-eröffnenden Post....


Alle Zeitangaben in WEZ +2. Es ist jetzt 19:30 Uhr.