MySQL Datenbank auslasten!?
XxX
- datenbank
0 XxX0 Sven Rautenberg0 XxX
0 Sven Rautenberg
Tach!
Ich habe mit einem kleinen Projekt begonnen, dabei können bis zu 100 - 200 neue datenbank einträge pro minuten entstehen, und das ganze mit UNIQUE im MySQL
nach fast 12000 beiträgen steht die seite still, nun meine Frage hat mysql da irgentwelche grenzen? (ja ich hatte selbst auch schon grössere datenbanken aber nicht so schnell XD)
und ist es besser, 200 - 400 einträge zu haben statt UNIQUE in der MySQL configurierung? Auch von der Performance her, weil es sind nur 100 - 200 weils schneller nicht gehr XD
Danke schonmal für euer wissen!
l.g.
Noch was
ich hab die datenbank grad auf Localhost umgesiedelt, irgentwie wundere ich mich aber das mein CPU gar nicht ausgelastet wird...!?
Kann ich das irgentwie raufdrehn?
Also das für MySQL mehr Power verwendet wird? oder generell für PHP und Apache? (übrigens: natürlich Linux!)
Danke nochmal
l.g.
Moin!
Noch was
ich hab die datenbank grad auf Localhost umgesiedelt, irgentwie wundere ich mich aber das mein CPU gar nicht ausgelastet wird...!?
Wenn die CPU von MySQL nicht benutzt wird, dann ist das ein guter Hinweis, dass dein Problem woanders liegt als in der Leistungsfähigkeit der DB selbst.
Vermutlich wird MySQL die eigentlichen Datenoperationen schnell genug ausführen, muss aber aus irgendeinem Grund lange darauf warten, dass der Computer das auch tatsächlich ausführt. Sowas kann beispielsweise passieren, wenn in einer Tabelle parallel viel geschrieben und gelesen wird, und die Storage-Engine nur Table-Locking beherrscht. Dann ist für jeden Schreibprozess die gesamte Tabelle gesperrt und kann nicht gelesen werden.
Kann ich das irgentwie raufdrehn?
Nein. Die Auslastung der CPU durch einen Prozess ist das Resultat der Realität, und als Messergebnis so hinzunehmen, analog einer Temperatur beispielsweise.
Wenn du willst, dass es wärmer wird, kannst du nicht am Zeiger des Thermometers rumstellen, sondern musst die Umgebung so beeinflussen, dass die gewünschte Temperatur hergestellt wird. Dasselbe gilt für die CPU-Auslastung durch MySQL: Wenn du willst, dass da mehr passiert, musst du optimieren, nachdem du analysiert hast, wo das Problem liegt - auf was genau MySQL eigentlich die meiste Zeit wartet.
- Sven Rautenberg
Hallo Sven
Vielen dank!
So viel theoretisches Wissen über MySQL hab ich die ganze zeit micht mitbekommen!
l.g.
Moin!
Ich habe mit einem kleinen Projekt begonnen, dabei können bis zu 100 - 200 neue datenbank einträge pro minuten entstehen, und das ganze mit UNIQUE im MySQL
nach fast 12000 beiträgen steht die seite still, nun meine Frage hat mysql da irgentwelche grenzen? (ja ich hatte selbst auch schon grössere datenbanken aber nicht so schnell XD)
MySQL hat Grenzen - die liegen bei mehrern Milliarden Datensätzen, sofern die ausreichend groß sind. Dein winziger Bestand von 12.000 Stück ist ein Witz für MySQL.
Allerdings dann nicht, wenn du durch falsche Tabellenstrukturen und mangelhafte Indizierung der Datenbank extrem viel Zusatzarbeit aufbürdest. Eigentlich alle Probleme, die bei geringer Datensatzzahl auftreten, sind auf mangelhafte Indizierung zurückzuführen.
Deshalb ist eine Problemanalyse notwendig: Welche Storage-Engine benutzt du? Welche Tabellenstruktur hast du? Welche Querys werden darauf losgelassen? Was sagen die Querys, wenn man sie mit EXPLAIN den Ausführungsplan erklären lässt? Wie beeinflussen sich schreibende und lesende Querys (zeitliche Reihenfolge, Transaktionen, etc.)?
und ist es besser, 200 - 400 einträge zu haben statt UNIQUE in der MySQL configurierung? Auch von der Performance her, weil es sind nur 100 - 200 weils schneller nicht gehr XD
Ein UNIQUE-Index ist natürlich ein kleines Performance-Hindernis, weil die Eindeutigkeit des Schlüssels vor jeder Veränderung und Hinzufügung eines Datensatzes geprüft werden muss. Es ist aber keine RIESIGE Performance-Bremse. Denn man kann UNIQUE ja nicht einfach weglassen und hoffen, dass gegen diese Eindeutigkeitsforderung schon nicht verstoßen werden wird. Irgendeine Prüfung der Eindeutigkeit ist immer notwendig - und die Datenbank kriegt das eigentlich am besten selbst hin.
- Sven Rautenberg