Möglichkeiten InnoDB zu Precachen

Dieses Thema im Forum "Smalltalk" wurde erstellt von Deex, 26. Sep. 2013.

  1. Deex

    Deex Member

    Also mein Problem ist aktuell folgendes, wir haben mehere Datenbanken und eine ist die Quell Datenbank, aktuell etwa 43M Einträge die ausgewertet werden pro Eintrag und in diverse andere Datenbanken geschrieben werden.

    Nun haben wir die derzeitigen möglichkeiten der Geschwindikeitsoptimierung scheinbar ausgereizt und selbst tricks wie die maximale Zeichen größe bei 241 zu belassen helfen nichts.

    Nach Aktuellen Hochrechnungen wird er mit der Kalkulation etwa 110 Tage beschäftigt sein, was nicht akzeptabel ist. Das Problem ist nicht das die CPU voll augelastet ist sondern die IOWait Time massiv ist, laut Entwickler können die Einträge nur einzeln ausgewertet werden. Das ganze läuft schon als Prozess über die Shell und vorbei am Apache.

    Also stelle ich mir die frage ob es möglich ist die InnoDB vorzucachen und als Beispiel jeweils 2 Gigabyte ständig vorzucachen um die IOWait zu reduzieren. Hat einer von euch erfahrung damit?

    Ich würde mir das Optimal so vorstellen, den Prozess zu starten und eben zu sagen halte mir von der Tabelle Raw row 0 - 10 00000 im cache.

    Hier nur mal ein Auszug wie "langsam" er ist http://pastebin.com/raw.php?i=55ibqmFa

    Dieser Artikel sieht recht interessant aus, bin mir aber nicht sicher wie aktuell das noch ist, das ist schließlich von 2008
    http://www.mysqlperformanceblog.com/2008/05/01/quickly-preloading-innodb-tables-in-the-buffer-pool/
     
    Zuletzt bearbeitet: 26. Sep. 2013
  2. nowayback

    nowayback Well-Known Member

    hi,

    Keine Ahnung ob es dir hilft, aber ich bin vor einiger zeit mal auf LSI FastPath gestoßen.

    ich habe halt keine ahnung ob sich das auch auf die wait i/o auswirkt, aber read/write beschleunigt das spürbar.


    Grüße
    nwb
     
  3. Deex

    Deex Member

    hi Nowayback,

    leider besitze ich keinen Server mit der Software, aber ein Interessanter Ansatz dort mit anderen Raid Konfigurationen zu arbeiten.
     
  4. Deex

    Deex Member

    Hier meine Erfahrungsberichte, (soll eine art Notizblock sein bis ich etwas gefunden habe was helfen könnte)

    Count Row Hack

    Quickly preloading Innodb tables in the buffer pool - MySQL Performance Blog
    der Count Row Hack um InnoDB dazu zu bringen bestimmte Rows zu Cachen hat bei mir komplett versagt, nachdem diese Berechnet waren hat er es aus dem Memcache wieder rausgeworfen. - Schade, da muss noch der weg her wie man es auch dauerhaft im RAM behält.

    Hardware Optimierung mit hdparm

    Erstmal eine Übersicht Schaffen wie flott der Cache ist

    SDA2
    Aktuelle Einstellungen Prüfen
    Dann schauen was die Festplatte überhaupt unterstützt
    Offiziell wird Empfohlen auf eigenes Risiko folgende Einstellungen zu verwenden
    multcount = 16 (laut http://dev.mysql.com/doc/refman/5.5/en/disk-issues.html)

    Wie oben ausgelesen unterstützt die SDA 16
    Allerdings warnt mich es ausdrücklich davor das zu machen
    Nach langem überlegen..no risk no fun, also aktivieren

    Anschließend mal den Durchsatz Testen
    Hier wäre jedenfalls keine veränderung sichtbar.

    Also abwarten auf die Ersten Ergebnisse der Beschleunigung beim IOWait Problem der alte IOWait Status war 80.25 im Durchschnitt.
    >> Ein paar Tage später lässt sich tatsächlich durch diese maßnahme eine verbesserung erkennen, die IOWait time ist von 80.25 runter gegangen auf 77,86, dass ist mit Sicherheit nicht viel aber dennoch eine verbesserung.
     
    Zuletzt bearbeitet: 29. Sep. 2013
  5. Deex

    Deex Member

    So ich möchte gerne die Ergebnisse Präsentieren,
    ich halte fest das dieses Gebastel bei unserer Konfiguration mit der Berechnung von InnoDB einträgen die Geschwindigkeit massiv erhöht hat

    Vorher: Dauer der Berechnung von 100 Einträgen, ca. 21-24 Sec
    Nacher: Dauer der Berechnung von 100 Einträgen, ca. 0.5ms

    Das hier ist nur für die Komplexen Berechnungen gedacht, und führt zu massiven Schwierigkeiten wenn man den Server als Webserver verwendet, ich würds daher nur machen wenn nötig.
    Bitte das nicht einfach so übernehmen, ich sehe es nur als Anreiz mit den einstellungen etwas zu Spielen. Ich jedenfalls war dankbar nach endlosem suchen für ein paar Performance Tricks die mir den hintern gerettet haben. Es sei nochmal erwähnt der macht nichts anderes als eine Roh Datenbank (InnoDB) zeile für zeile zu Kalkulieren und anschließend in anderen Tabellen einzusortieren.

    Mit Sicherheit kann man das weiter Optimieren doch mir spart es fast ein halbes Jahr meines lebens und ich bin so ganz happy ;)
    [​IMG]
     
    Zuletzt bearbeitet: 9. Okt. 2013

Diese Seite empfehlen