Zum Inhalt springen

Datenbank optimieren

Erstellt am 9. Mai 2007 · 5 Antworten · letzte Antwort am 10. Mai 2007

Tags: Datenbank, Frage

axel___ ·

Hi,

ich betreue ein Typo3-Projekt auf einem Intel Core2 Quad 2,4 Ghz (4 Prozessorkerne) mit 4GB RAM. Das System beinhaltet einen Shop. Momentan sind in der größten Tabelle 4,5 Mio Einträge. Die Skripte habe ich schon soweit wie möglich optimiert. Es wird mit mehreren Tausend Usern pro Tag gerechnet.
Auf dem Server ist eine MySQL 4.1.20 Datenbank.
Die Konfiguration ist noch Standard, ich würde Sie aber gerne optimieren, um auf den Ansturm vorbereitet zu sein.

Hier die Zeilen der my.cnf:

[client]
port		= 3307
socket		= /tmp/mysql.sock

[mysqld]
port		= 3307
socket		= /tmp/mysql.sock
skip-locking
key_buffer = 16M
max_allowed_packet = 1M
table_cache = 64
sort_buffer_size = 512K
net_buffer_length = 8K
read_buffer_size = 256K
read_rnd_buffer_size = 512K
myisam_sort_buffer_size = 8M

log-bin

server-id	= 1

[mysqldump]
quick
max_allowed_packet = 16M

[mysql]
no-auto-rehash

[isamchk]
key_buffer = 20M
sort_buffer_size = 20M
read_buffer = 2M
write_buffer = 2M

[myisamchk]
key_buffer = 20M
sort_buffer_size = 20M
read_buffer = 2M
write_buffer = 2M

[mysqlhotcopy]
interactive-timeout

Habt Ihr noch Vorschläge, oder zusätzliche Werte, dich ich noch eintragen kann?
Persistente Verbindungen von PHP aus sind abgeschaltet, muss ich dann noch max_connections setzen?

Danke,
Euer Axel

mic_jan ·

Achja, mehrere 1.000 User pro Tag ist für dein System noch kein wirklicher Ansturm. (Zumindest meine Erfahrung).

Du kannst natürlich da wo es möglich ist, mit mod_proxy arbeiten und einen php_accelerator hast du ja bestimmt auch installiert.

Für verlässliche Zahlen kommst du an einem Last-/Stress-Test nicht dran vorbei.

Gruss,

Michael

tandem ·

Hallo Axel,

Momentan sind in der größten Tabelle 4,5 Mio Einträge. Die Skripte habe ich schon soweit wie möglich optimiert.

4,5 Mio Einträge sagt einiges - aber auch nichts.
Es kommt ja - wesentlich - auf das Design der Datenbank an.
Da kann man auch alles falsch gemacht haben ...
Also testen.

axel___ ·
tandem schrieb

4,5 Mio Einträge sagt einiges - aber auch nichts.
Es kommt ja - wesentlich - auf das Design der Datenbank an.
Da kann man auch alles falsch gemacht haben ...
Also testen.

Da hast Du recht, Grundlage war tt_products, allerdings hatte die Produkt-Tabelle so viele Felder, die man gar nicht brauchte und die bei vielen Abfragen unnötig Speicher benötigt haben. Mittlerweile habe ich nur noch 6 Spalten.

Ich denke das Design ist soweit in Ordnung, daran kann man jetzt auch nicht mehr schrauben. Mir ging es halt um die Optimierung von MySQL und was alles noch möglich ist. Als PHP-Accelerator ist der Zend-Optimizer installiert. Einen Last und Stress-Test will ich gerne machen, und suche nach einer einfachen Lösung.