Hallo zusammen,
bin neu und falle mal gleich mit einer Frage ins Haus.
Ich arbeite seit vielen Jahr als Entwickler an einer Software zur Personalvermittlung. Naturgemäß entstehen hier sehr viele Daten, auch in recht unhandlichen Formaten wie Text und Varchar. Derzeit nutzen wir kanpp 100 Tabellen, die prinzipiell recht aufgeräumt sind (3.Normalform), wenn auch nicht überall. Das bringt halt agile Programmierung ab und an mit sich.
Problem/Ist-Zustand
Wir betreiben die Software derzeit auf einem eigene Rootserver (Quadcore, 4GB). Bis auf den Profilabgleich (Stelle/Arbeitnehmer) läuft der Rest gut. Beim Abgleich kommt es regelmäßig zu Zeitüberschreitungen. Die Abfrage habe ich gefühlte 100 Mal umgearbeitet und optimiert. Derzeit arbeite ich hier in 2 Stufen mit einem temporären Table (Memory-Engine), neugesetzten Indizies, um die Last zu mindern. Nach Recherche nutze ich vermehrt Joins - zumindest hat das ein wenig was gebracht, weil wahrscheinlich die elenden Kreuzprodukte nicht mehr gebildet werden. Hauptlast entsteht hier u.a. weil jedes Profil auf beiden Seiten zwischen 20 und 40 Berufe/Fertigkeiten aufweist, die verglichen/verknüpft werden - dazu kommen dann später noch Regionen, etc.
Verteilen oder nicht?
Soweit zur Vorgeschichte. Wir verknüpfen hier also Unmengen an Daten, beim Abgleich werden ca. 6-7 Tabellen genutzt. Abfragedauer kann zwischen ein paar Sekunden und einer halben Minute schwanken, je nach Menge der Profildaten. Nun geistert seit einiger Zeit der Gedanken durch den Raum das System zu verteilen. Leider kenne ich mich da nicht so aus, aber zB die MySQL Clusters sehen sehr vielversprechend aus, wobei ich aber gelesen habe, dass es weniger für größere Datenmengen geeignet ist. Wie kann ich das verstehen?? Nutzt das System jemand?
Wie optimieren?
Welche Möglichkeiten gibt es noch die Last mittels MySQL zu verteilen??
Wir möchten demnächst einen neuen Server holen mit mehr RAM und 2 x Quadcore-CPUs. Bringt eine gute Maschine mehr, als zB 2 "normale" Server und verteilter Last?? Was können wir noch an unserer MySQL-Abfrage/DB optimieren?
Wäre super, wenn Ihr ein paar Denkanstöße geben könntet!
Danke und Grüße
Soundbear
bin neu und falle mal gleich mit einer Frage ins Haus.

Ich arbeite seit vielen Jahr als Entwickler an einer Software zur Personalvermittlung. Naturgemäß entstehen hier sehr viele Daten, auch in recht unhandlichen Formaten wie Text und Varchar. Derzeit nutzen wir kanpp 100 Tabellen, die prinzipiell recht aufgeräumt sind (3.Normalform), wenn auch nicht überall. Das bringt halt agile Programmierung ab und an mit sich.

Problem/Ist-Zustand
Wir betreiben die Software derzeit auf einem eigene Rootserver (Quadcore, 4GB). Bis auf den Profilabgleich (Stelle/Arbeitnehmer) läuft der Rest gut. Beim Abgleich kommt es regelmäßig zu Zeitüberschreitungen. Die Abfrage habe ich gefühlte 100 Mal umgearbeitet und optimiert. Derzeit arbeite ich hier in 2 Stufen mit einem temporären Table (Memory-Engine), neugesetzten Indizies, um die Last zu mindern. Nach Recherche nutze ich vermehrt Joins - zumindest hat das ein wenig was gebracht, weil wahrscheinlich die elenden Kreuzprodukte nicht mehr gebildet werden. Hauptlast entsteht hier u.a. weil jedes Profil auf beiden Seiten zwischen 20 und 40 Berufe/Fertigkeiten aufweist, die verglichen/verknüpft werden - dazu kommen dann später noch Regionen, etc.
Verteilen oder nicht?
Soweit zur Vorgeschichte. Wir verknüpfen hier also Unmengen an Daten, beim Abgleich werden ca. 6-7 Tabellen genutzt. Abfragedauer kann zwischen ein paar Sekunden und einer halben Minute schwanken, je nach Menge der Profildaten. Nun geistert seit einiger Zeit der Gedanken durch den Raum das System zu verteilen. Leider kenne ich mich da nicht so aus, aber zB die MySQL Clusters sehen sehr vielversprechend aus, wobei ich aber gelesen habe, dass es weniger für größere Datenmengen geeignet ist. Wie kann ich das verstehen?? Nutzt das System jemand?
Wie optimieren?
Welche Möglichkeiten gibt es noch die Last mittels MySQL zu verteilen??
Wir möchten demnächst einen neuen Server holen mit mehr RAM und 2 x Quadcore-CPUs. Bringt eine gute Maschine mehr, als zB 2 "normale" Server und verteilter Last?? Was können wir noch an unserer MySQL-Abfrage/DB optimieren?
Wäre super, wenn Ihr ein paar Denkanstöße geben könntet!
Danke und Grüße
Soundbear
Kommentar