flog

dem Flo sein Blog

Ex-Feuerwehrman, Baskettballer, Schachspieler, House-Addict (since 1998), Radfahrer, Fitnessmensch und vor allem: Webprogrammierer aus Leidenschaft. Meine Hosen hab ich auch auf Facebook und Xing runtergelassen

MySQL Schulung: Performance Tuning

Erster Tag

Es ist gerade kurze Pause, hier also mal in Kurzform, was bisher geschah:

  • 03:00 Wecker klingelt
  • 03:50 Aufstehen und ab ins Bad (es wird höchste Zeit)
  • 04:15 Raus aus dem Haus zur Bushaltestelle Stadtmitte
  • 04:49 Pünktlich ist der X3 in Reutlingen, hoffentlich auch so pünktlich in Stuttgart am Flughafen
  • 05:40 Mit kleiner Verspätung bin ich am Flughafen, schnell zum AirBerlin Check-In
  • 05:50 Ich hab die Boardingkarte in meiner Hand, jetzt zum Gate und noch schnell die aktuelle c't kaufen
  • 06:10 Ich sitz am Gate, Boarding sollte schon laufen, verspätet sich scheinbar etwas heute.
  • 06:15 Zwei junge Mädchen kommen angehastet, haben das mit der Zeitumstellung scheinbar verpasst und wollten wissen, ob der Flug schon weg ist ;-)
  • 06:20 Boarding
  • 06:30 Ich sitze am Fenster, vorletzte Reihe und kann beim Start die Lichterschlange bewundern, die sich die B28 nach Stuttgart quält
  • 07:33 Landung in Berlin-Tegel, trübes Wetter, es nieselt, wir fahren mit dem Bus zur Gepäckausgabe
  • 08:00 Mit der Tasche auf dem Rücken gehts zum Bus, dann mit der U-Bahn zum Checkpoint-Charlie
  • 08:40 Einchecken im Hotel: Wow, ich konnte sogar mit Bad statt Dusche wählen. Aber keine Zeit mehr fürs Zimmer, auf zum Schulungszentrum
  • 08:58 Yehaw, noch rechtzeitig geschafft, unterwegs sogar noch zwei Päckchen Taschentücher für jeweils 10 Cent gekauft

Mittagspause: Mittagessen in der Axel-Springer Kantine (ja, der Axel Springer) und festgestellt, dass mein Hotel vier Sterne hat und eine Tageskarte Sauna und Wellnessbereich 10 € kostet. Das werde ich mir auf jeden Fall noch gönnen in der Hoffnung, dass man mir Bademantel und Handtuch stellt.

Zur Schulung selber: Der Dozent hat echt was drauf, arbeitet selber für Sun (dem Eigentümer von MySQL, falls das jemand noch nicht mitbekommen hat ;-)) und hat eine echt gute Art, sein Wissen rüber zu bringen.

Erster Tag zu Ende und wir sind sogar 20 Minuten früher mit dem Stoff fertig geworden als geplant. Kurz zum Dozenten noch was: Er hat früher in einer Internet-Agentur gearbeitet und hat damals den Session-Support für PHP gehakt. Arbeitet seit ein paar Jahren für MySQL AB (inzwischen zu Sun gehörend) und hält Schulungen und Vorträge auf diversen Veranstaltungen.

Zweiter Tag

Heute morgen um 06:30 Uhr kam der Weckruf, allerdings nicht der vom Hotel (der war auf 07:00 Uhr bestellt), sondern der von meiner Mutter. Ich hab dann noch Nachrichten geschaut, mich danach geduscht, frisch gemacht, einen kurzen Abstecher in den Saunabereich (nur um mal zu schauen, was denn da so wäre) und dann raus aus dem Hotel, ab zur Bäckerei Kamps (die liegt direkt auf dem Weg) und erst mal was zum Frühstücken organisiert und dann auf hier her ins Schulungszentrum. Ein StarBucks Kaffee liegt auch hier auf dem Weg, dass muss werde schon mal ausprobieren.

Zur Schulung: Im "Student Guide" hab ich gelesen, dass wir neben den üblichen Dingen (Schema/Datenbank Design, Indexing, Statement Tuning) auch die Storage Engines durchsprechen werden. Dabei gibt es natürlich für MyISAM und InnoDB eigene Kapitel aber auch die neue, mit MySQL 6 kommende Falcon wird ein großes Thema sein.

Der Dozent ist auch da, die Klasse vollständig, ich meld mich später wieder mit Updates.

Mittagspause, wieder lecker in der Axel Springer Kantine, diese Woche ist "Schnitzeljagd" jeden Tag ein anderes Schnitzel, heute mit Käse und Zwiebeln überbacken und Pommes. Wunderbar. Den Dozenten mal auf Kickfire angesprochen. Das hat nichts mit technischer Raffinesse zu tun, viel mehr mit brachialer Gewalt, dieser "SQL-Prozessor" machst nichts weiter als hier und da Cachen, aber ansonsten ist das Ding einfach nur schnell, wegen zwei Quad-Core Xeon`s, 16 GB Ram, SAS Platten ...

Gestern Nachmittag dann noch sehr spannende Themen: Umkreissuche mit MySQL, wie macht XING das mit dem "Sie kennen Person X über" eigentlich, MySQL Indexing und Caching (ja, Prepared Statements werden seit MySQL 5.1.17 auch in den Query-Cache gelegt).

Abends ging es dann noch mit dem Dozenten und einem anderen Kursteilnehmer in die "Hackeschen Höfe" eine Berliner Weiße trinken. War ganz ok, eine reicht dann aber auch. Abends bin ich dann in meinem Hotel noch in die Sauna gegangen, drei Saunagänge in annähernd zweieinhalb Stunden.

Dritter Tag

Heute morgen kam wieder ein privater Weckruf, diesmal allerdings schon um kurz nach vier von meiner Frau, sie geht jetzt zur Arbeit (Frühschicht im Altenheim). Ich hab ihr von dem Hotel und der Sauna und dem Kurs vorgeschwärmt, alles perfekt hier. Danach hab ich mich wieder schlafen gelegt, weil ja um sieben der Weckruf vom Hotel kommt. Den hab ich dann auch gehört, aufgestanden, frisch gemacht, Richtung Schulungszentrum marschiert, unterwegs noch was zum Frühstück gekauft und an der Ampel den anderen Kursteilnehmer von gestern Abend wieder getroffen. Zusammen sind wir dann die restlichen 300m zum Schulungszentrum gelaufen. Heute geht es im Kurs weiter mit Server-Konfiguration und dem Thema MyISAM und INNODB.

Wow, man kann MySQL dieses Clipping abgewöhnen. Das "Feature", dass dafür sorgt, dass man eine 300 in ein TinyInt (max. 255) schreiben kann und dann aber einfach 255 drin steht, oder das beim schreiben in ein CHAR Feld, einfach der Rest, der nicht reinpasst abgeschnitten wird, kommentarlos. Der Zauberbefehl lautet: SET GLOBAL SQL_MODE=STRICT_ALL_TABLES;
Dann bekommt man eine Fehlermeldung geliefert. MySQL 5.1 machts möglich.

Wir haben dann noch die Innereien von MyISAM und InnoDB besprochen, InnoDB machen wir morgen noch gar fertig und dann wollen wir einen MySQL-Cluster aufsetzen, gehört zwar nicht zum Kurs, aber wir haben die Zeit und es macht Laune sagt der Dozent.

Vierter (letzter) Tag

Aus dem Hotel ausgecheckt, und ab ins Schulungszentrum. Die Vorfreude auf den Cluster und Falcon wächst :-)

So, InnoDB noch einiges gelernt. Da gibt es noch einige Features, die ich nicht kannte, bzw. die man einstellen sollte, ja sogar muss. Falcon haben wir uns nur kurz angeschaut, weil wir a) keine 6er MySQL hier installiert hatten und b) im allgemeinen mehr Interesse an dem Cluster bestand. Clustering haben wir dann besprochen und auch hier zum Laufen bekommen, das ging echt ratz fatz. Außerdem haben wir eine Buchempfehlung bekommen zum Thema Bäume in SQL: Joe Celko's Trees and Hierarchies in SQL for Smarties

Empfehlungen für weiterführende Kurse: Der MySQL High Availability kurs (weil Cluster und Replikation drin durchgesprochen wird) und das MySQL Boot Camp (von Morgens acht bis Abends acht alles um MySQL).

Tipp!

Der Kurs wird nicht günstiger, nur dadurch, dass er in Deutschland stattfindet. Folgendes Beispiel:

Ort Kosten Flug Hotel Gesamt
Berlin 1599 € 190 € 235 € 2024 €
Beijing (Peking) US$ 999 (~ 790 €) 800 € (ca.) 400 € (ca.) 1992 €

Der Dozent hat uns Empfohlen, dass wir das genau prüfen sollten, denn z.B. Kuala Lumpur, Neu Deli, usw. sind sehr günstig, vor allem durch den Wechselkurs zum Dollar. Die Mehrkosten für den Flug sind alleine dadurch schon wieder drin und das Hotel ist in der Regel günstiger (bzw. bei gleichem Geld eine höherer Standard). Das lässt sich dann auch prima mit Urlaub kombinieren und man spart sich gleich noch was dabei. Die Dozenten sind dort nicht von vor Ort, sondern kommen von irgendwo her, er selbst hat auch schon mehrmals Schulungen in Asien gehalten.