MySQL Optimieren

Alles, was MySQL betrifft, kann hier besprochen werden.

MySQL Optimieren

Postby csigg » 10. June 2007 13:56

Hallo,

ich betreibe einen MYSQL-Linux Server auf Basis von SuSe 10.2 als DB-Server für ein Warenwirtschafts-System. Die MySQL DB läuft auf xampp 1.4.14. Der Server hat einen "normalen" AMD 1800+ Prozessor drin und 1GB RAM. Allerdings ist meine Datenbank ziemlich langsam bei Abfragen. Die Systemauslstung zeigt mir, dass der Hauptspeicher nur zu ca. 3% belegt wird, und die CPU Last bei 100% ist.
Ich wollte jetzt die my.cnf ändern, allerdings weiss ich nicht wie ich die Parameter am besten anpasse. Zum ausprobieren sind es einfach zu viele Variablen. Kann mir da jemand einen Tipp geben??
Die Hife auf www.mysql.de bringt mir auch nicht viel, da das beispiel für einen Relativ Schwachen PC gedacht ist.
csigg
 
Posts: 11
Joined: 28. December 2006 12:55

Postby Mätes » 11. June 2007 07:59

Hast du ans setzten von vernünftigen Indizes gedacht?
Die können bei großen Tabellen und komplizierteren Abfragen Wunder wirken.

Wie du die DB und den Rechner optimieren kannst, ist allerdings nicht mein Ding, vielleicht haben andere dahingehend ein paar Tipps für dich.

ma
User avatar
Mätes
 
Posts: 142
Joined: 13. April 2006 09:34
Location: kölle

Postby csigg » 11. June 2007 09:44

da auf der DB ein Warenwirtschaftssystem mit sehr effienzienten DB-Handling arbeitet denk ich nicht dass ich dadurch noch mehr Performance gewinne könnte.
csigg
 
Posts: 11
Joined: 28. December 2006 12:55

Postby Mätes » 12. June 2007 08:31

ich arbeite auch mit einem vorgefertigten Programm,
das schon desöfteren verkauft wurde.

die db ist eine mittelschwere katastrophe :)

gerade wenn man sie noch erweitert, oder anders nutzt als von
den machern geplant, kann man dort einiges rausholen.

wie dem auch sei, war nur eine idee.

gruß
m
User avatar
Mätes
 
Posts: 142
Joined: 13. April 2006 09:34
Location: kölle

Postby kschroeder » 13. June 2007 13:30

Du kannst auch bei den Abfragen einiges optimieren. So sollte man nie ein "select * from" verwenden, sondern immer die verwendeten Felder angeben.

(Ist übrigens auch bei Oracle der Fall)
kschroeder
 
Posts: 251
Joined: 11. May 2007 13:33

Postby csigg » 13. June 2007 15:46

naja, das mit den abfragen bringt mir nicht soviel,
dazu müsste ich mir den delphi quelltext besorgen und neu kompilieren, und der aufwand lohnt sich fast nicht. ausserdem läuft das wawi ja bei anderen ganz gut. mein vertrauen in die entwickler ist da sehr hoch.
csigg
 
Posts: 11
Joined: 28. December 2006 12:55

Postby kschroeder » 14. June 2007 15:24

Kannst Du sicher sagen, dass nur Mysql langsam ist und die hohe Auslastung erzeugt? Von den Rechnerdaten sieht alles gut aus und sollte kein Grund für einen Performance-Engpass sein.
kschroeder
 
Posts: 251
Joined: 11. May 2007 13:33

Postby Mätes » 15. June 2007 08:19

wie heißt denn das wawi?
User avatar
Mätes
 
Posts: 142
Joined: 13. April 2006 09:34
Location: kölle

Postby csigg » 15. June 2007 12:07

das wawi heisst cao

ich hab jetzt mal die my-huge.cnf benutzt, mit der siehts es eigentlich schon ziemlich gut aus....
kannmir jemand sagen für welche rechneleistung die ausgelegt ist??
finde da bei mysql auf der seite leider nix

allerdings braucht meine db manchmal doch noch ziemlich lange
top zeigt mir dann immer eine CPU leistung von 99% an und eine Speicerauslastung von 10%, ist das normal?[/url]
csigg
 
Posts: 11
Joined: 28. December 2006 12:55

Re: MySQL Optimieren

Postby fraktalisman » 29. July 2009 18:29

Eine hohe CPU-Auslastung ist ja laut Tuning-Tipps auf der MySQL-Website ein gutes Zeichen, da möglichst viel in CPU und RAM passieren soll, und möglichst wenig auf der Platte.

Nun habe ich mich auch schon durch etliche Tutorials und Dokumentationen durchgearbeitet, habe aber auch noch etliche Fragen.
Unter anderem die schon erwähnte Frage, auf welche RAM-Größe sich die Vorgaben der huge.cnf beziehen...

Welches wären für einen Rechner mit 2 GB Arbeitsspeicher (MySQL 5 auf Debian Linux) sinnvolle Einstellungen in der my.cnf ?

Aktuelle Einstellungen:
Code: Select all
key_buffer = 1024M
max_allowed_packet = 8M
table_cache = 1500
sort_buffer_size = 4096K
net_buffer_length = 128K
read_buffer_size = 4096K
read_rnd_buffer_size = 4096K
myisam_sort_buffer_size = 64M


query_cache setzen?
Den query_cache habe ich bislang nicht explizit gesetzt, da ich davon ausging, die Einstellung table_cache wirke sich bereits darauf aus. Ist es überhaupt möglich, generelle Tipps zur optimalen Größe des Query Cache zu geben, oder ergibt sich das prinzipiell erst durch die Auswertung der tatsächlichen Datenbanknutzung? In einigen Tutorials wurde angemerkt, ein zu großer Cache sei kontraproduktiv, da nach einer Änderung des Datenbankinhalts die dann ungültigen Cache-Inhalte (aufwändigerweise) gelöscht werden müssen?
fraktalisman
 
Posts: 1
Joined: 29. July 2009 17:46

Re: MySQL Optimieren

Postby Mr. T » 03. August 2009 07:00

query cache solltest du auf jeden fall einschalten. ich kenne zwar dein system nicht, aber mit ~16MB cache kannst du bei kleinen systemen mit weniger als 100 nutzern taeglich nichts falsch machen.
mit
Code: Select all
SHOW STATUS WHERE variable_name LIKE 'Qcache%'

siehst du die query cache auslastung.
das problem mit dem query cache ist allerdings, das dieser mit der zeit durch neue cacheinserts und lowmem_prunes fragmentiert (Qcache_free_blocks wird groesser=>ideal ist ein wert von 1), dh. du musst ab und an ein
Code: Select all
flush query cache

ausfuehren - ich mach das hier jedesmal nachdem der cronjob mit dem inkremental backup fertig ist (alle halbe stunde), davor ist Qcache_free_blocks meistens so bei ~1600 bis 2400, je nachdem wie die server auslastung in der zeit war.
je nachdem wie das verhaeltniss von Reads/Writes ist kann es sich lohnen von MyISAM nach InnoDB zu wechseln, siehe http://www.softwareprojects.com/resourc ... -1470.html . ansonsten versuchen einen index auf felder anzulegen fuf die haeufig mit "where" zugegriffen wird - also wenn du viele 'SELECT id FROM namen WHERE nachname="Musterman"' abfragen hast wuerdest du das feld 'nachname' indizieren. manche anfragen kann mysql unter umstaenden auch direkt aus dem index beantworten ohne das es auf die datentabelle zugreifen muss, was deutlich schneller ist wenn der index komplett im speicher ist.
sorry, aber ich habe keine umlaute auf meiner tastatur.
Mr. T
 
Posts: 2
Joined: 03. August 2009 05:56
Location: NZ


Return to MySQL

Who is online

Users browsing this forum: No registered users and 2 guests