Sven Rautenberg: MySQL beschleunigen oder parallel laufen lassen?

Beitrag lesen

Moin!

Was mich so ein bisschen wundert, ist, warum keiner bisher auf die eigentliche Frage einfach nur geantwortet hat:

Gibt es bei MySQL Möglichkeiten dieses für mehrere Prozessoren anzupassen? Da reicht mir schon ein einfaches ja oder nein, wenn es jemand weiss.

Die Antwort ist "Nein". MySQL ist schon so multithreaded und multitasked, wie es geht.

Die Lösung zu deinem Problem liegt wirklich in der anscheinend mieserablen Nutzung der Datenbank, nicht im Datenbankprogramm selbst.

Außerdem teilt hier anscheinend nicht jeder deine Problemanalyse. Wenn du den Server extrem aufgebohrt hast im Vergleich zur alten Kiste, mit Multiprozessor- und Multikernsystem, und trotzdem ist die Applikation so lahm, wie vorher, dann hat das Gründe.

Nur mal als Szenario: Angenommen, nur eine einzige, aber extrem suboptimale Abfrage, die riesige Mengen an RAM und, weil RAM nicht reicht, auch noch Swap-Space verbraucht, muß bewältigt werden. Weil Festplatten damals wie heute extrem lahm sind (ob die nun 60 Sekunden brauchen im alten System oder 40 Sekunden im neuen, merkt man nicht), zeigt der Serverwechsel keinerlei merkbare Geschwindigkeitssteigerung. Du kannst diese Abfrage aber auch nicht auf mehrere CPUs aufteilen, denn das Problem ist nicht die Rechenpower, sondern die Wartezeit auf die Festplatte.

Schau dir die CPU-Auslastung am besten mal genauer an. Vermutlich hat ein Kern einer CPU ganz viel zu tun, der Rest langweilt sich.

Eine Performanceverbesserung ist nur hinzukriegen, indem das Performanceproblem analysiert und der Grund für die Probleme erkannt wird. Erst dann kann man geeignete Gegenmaßnahmen ergreifen. Und sowas ist halt nicht mit einem einfachen "ja oder nein" als Antwort auf eine Frage getan, die eine Problemanalyse vorwegnimmt, der man nicht wirklich trauen sollte, wenn man optimale Beratung möchte.

Ebenso behauptest du beispielsweise, alle Indices wären perfekt gesetzt. Hast du das persönlich geprüft? Hast du alle SQL-Statements, die die Datenbank bearbeiten muß, manuell mit EXPLAIN analysiert?

Ich möchte garnicht bei null anfangen und jedem erklären warum wir in dieser Situation stecken und dass das System erneuert werden muss ist mir von Anfang an klar gewesen.

Gut, da hast du dann deine Antwort, wie du die Datenbank schnell kriegst: System neu machen.

Alternativ eben am bestehenden System optimieren - aber eben nicht am Backend "MySQL", sondern an den Queries und den Indices.

Und erst wenn auch dort wirklich alles ausgereizt ist, müssen andere Methoden ran, beispielsweise die Aufsplittung der Datenbank in separate Bereiche. Ungefähr so, wie bei MySpace... http://www.baselinemag.com/print_article2/0,1217,a=198614,00.asp

- Sven Rautenberg

--
"Love your nation - respect the others."