MySQL und Tabelle > 500.000 Einträge
Posted: 2004-06-07 09:03
Hallo zusammen,
ich habe eine Preissuchmaschine in Perl programmiert, welche anfangs auch super läuft. Nun habe ich ein Problem mit der Masse:
Ich erwarte etwa 5.000.000 Einträge in der MySQL Tablelle. Leider mußte ich feststellen, daß nach ca. 400.000 - 500.000 Einträge der MySQL Server bei einer Suchanfrage schon schlapp macht. Zeit bis Ergebiss: min. 10 Sekunden, Prozessorlast 99.7%.
Sobald es über 500.000 Einträge geht, hängt sich das System auf, so das ich nichtmal mehr mit Putty drauf komme. Confixx_Counterscript will nicht mehr, etc. Mit anderen Worten: 2 gleichzeitige Suchanfragen erfordern einen Reset, da nichts mehr geht.
Ich benutze einen Rootie L von 1&1 mit 2000er Celeron und 256 MB, der nun schon 1 Jahr einwandfrei läuft. Die MySQL Tabelle ist nach folgendem Schema aufgebaut:
Artikeltitel(Index) als VARCHAR(50)
URL als VARCHAR(100)
BildURL als VARCHAR(100)
Preis als DECIMAL(11,2)
Anbieter als INT(3)
Time als INT(11)
Meine my.cnf vom 3.23.57:
Die my.cnf ist meiner Meinung nach schon ganz okay oder ist jemand anderer Meinung ?
Derzeit muß ich den Artikelbestand unter 300.000 laufen lassen um eine vernünftige Performance zu gewährleisten.
Ich habe jetzt auch schon mehrere Stunden die MySQL Dokumentation durchforstet um eine Lösung zu finden, aber leider ohne Ergebniss.
Hat jemand einen Tipp zur Lösung meines Problems ?
Gruß Axel
ich habe eine Preissuchmaschine in Perl programmiert, welche anfangs auch super läuft. Nun habe ich ein Problem mit der Masse:
Ich erwarte etwa 5.000.000 Einträge in der MySQL Tablelle. Leider mußte ich feststellen, daß nach ca. 400.000 - 500.000 Einträge der MySQL Server bei einer Suchanfrage schon schlapp macht. Zeit bis Ergebiss: min. 10 Sekunden, Prozessorlast 99.7%.
Sobald es über 500.000 Einträge geht, hängt sich das System auf, so das ich nichtmal mehr mit Putty drauf komme. Confixx_Counterscript will nicht mehr, etc. Mit anderen Worten: 2 gleichzeitige Suchanfragen erfordern einen Reset, da nichts mehr geht.
Ich benutze einen Rootie L von 1&1 mit 2000er Celeron und 256 MB, der nun schon 1 Jahr einwandfrei läuft. Die MySQL Tabelle ist nach folgendem Schema aufgebaut:
Artikeltitel(Index) als VARCHAR(50)
URL als VARCHAR(100)
BildURL als VARCHAR(100)
Preis als DECIMAL(11,2)
Anbieter als INT(3)
Time als INT(11)
Meine my.cnf vom 3.23.57:
Code: Select all
[mysqld]
port = 3306
socket = /var/lib/mysql/mysql.sock
skip-locking
set-variable = key_buffer=32M
set-variable = max_allowed_packet=1M
set-variable = table_cache=128
set-variable = sort_buffer=4M
set-variable = net_buffer_length=16K
set-variable = myisam_sort_buffer_size=32M
set-variable = wait_timeout=120
set-variable = interactive_timeout=120
server-id = 1
Derzeit muß ich den Artikelbestand unter 300.000 laufen lassen um eine vernünftige Performance zu gewährleisten.
Ich habe jetzt auch schon mehrere Stunden die MySQL Dokumentation durchforstet um eine Lösung zu finden, aber leider ohne Ergebniss.
Hat jemand einen Tipp zur Lösung meines Problems ?
Gruß Axel