MySQL Suche gutes MySQL Buch

Teilzeitelf

Ein Teilzeitelf
ID: 90232
L
29 April 2006
1.105
127
Hallo,

Ich bin auf der Suche nach einem Guten MySQL Lehrbuch / Referenz.
Ich habe schon einige Erfahrungen und suche daher in erster Linie Bücher die Best Practise vermitteln und / oder sich auch mit komplexeren Abfragen und Performance Themen beschäftigen.

Ich habe, beim durchstöbern von Amazon, nur wenig reine MySQL Bücher gefunden, dafür viele die sich mit der Kombination von PHP und MySQL beschäftigen. Ich habe jedoch schon 1-2 Bücher dieser Art im Regal stehen und der MySQL Teil kommt in denen doch recht kurz weg, bzw. wird nur sehr oberflächig behandelt.

Hat jemand einen Tipp für mich ?

Viele Grüße,

TZE
 
Also als Referenz kennst Du sicher MySQL Handbuch. Dort steht viel interessantes. Dabei auch einen Blick auf die englische Dokumentation werfen und die Kommentare!

Was suchst Du genau zum Thema (My)SQL? Die Querys werden bei einem guten Datenbankdesign vom Datenbanksystem automatisch optimiert. Da lohnt sicht selten von Hand nachzugehen. Man kann zum Beispiel am Datenbankserver optimieren, indem man eine an die Anwendung angepasste Konfigurationen verwendet.

Edit: Damit beschäftigt sich zum Beispiel das Buch welches Sebbo genannt hat. Ein Buch zum Datenbankentwurf kann ich persönlich dieses hier empfehlen. Datenbanksysteme von Alfons Kemper, André Eickler

Die kurz & gut Serie finde ich persönlich nicht empfehlenswert. Diese entsprich meist nur eine Zusammenfassung der online Referenz.
 
Zuletzt bearbeitet:
Hallo,

Danke euch Beiden erstmal.

Ich hatte die deutsche Version von dem vorgeschlagenen Buch gesehen (wobei ich auch mit der englischen kein Problem hätte). Allerdings war es mir, als ging es eher um die Technik / Administration des Servers selbst, während ich eher nach "Best Practise" und Tipps zum Schreiben meiner Queries suche. (Und noch Tipps zum Design der Tabellen und Indexe) Hochverfügbarkeit/Backup etc. interessiert mich eher weniger. Liege ich da falsch?

Die online Referenz nutze ich im Augenblick schon häufiger. Ich suche aber was greifbares, wo ich kleine lustige Lesezeichen reinkleben kann und was ich halt neben dem Rechner griffbereit liegen haben kann, in dem Punkt bin ich noch etwas altmodisch :)

Gruß

TZE

Ps.: @Apollo: Auch dir danke. "MySQL: Das Handbuch für Administratoren" klingt ganz gut, ich hatte es zwar in der Ergebnisliste von Amazon gesehen, aber übersprungen weil es nicht nach dem "geklungen" hat was ich suche. Nach den User Kommentaren klingt es aber auch ganz brauchbar.
 
Ja, bei dem Buch geht es in um die Technik. Wie gesagt macht das Datenbanksystem die Optimierung, sodass Du selber keine Optimierung vornehmen musst. Der Query wird intern optimiert. Es macht wenig bis keinen Sinn von Hand den Query optimieren zu wollen. Daher wirst Du zu dem Thema auch nur Bücher finden die sich mit dem Konfigurieren des Datenbanksystems beschäftigen. Mein vorgeschlagenes Buch beschäftigt sich mit dem Datenbankenwurf (Normalisierung, Keys, etc.). Wenn Dich das interessiert kenne ich bis jetzt kein besseres Buch.
 
Du kannst bei Amazon einen Blick ins Buch werfen. Meistens sieht man auch das Inhaltsverzeichnis. Da kann man dann selber schon etwas abschätzen, ob das passen könnte. Ob du Hochverfügbarkeit/Backup brauchst oder nicht, kann ich nicht beurteilen (zumindest Backups wirst du ja hoffentlich machen).

Und zur Datenbank-Performance gehört auf jeden Fall ein korrekt eingerichter Server! Wenn die DB-Caches und Werte nicht auf deine Anwendung(en) angepasst sind, dann wird es mit der Performance nie so sehr gut aussehen, egal wie viele best-practices du beachtest. Aber vielleicht macht die DB-Administration ja auch jemand anderes.
 
Es macht wenig bis keinen Sinn von Hand den Query optimieren zu wollen.

Das würde ich so nicht unterschreiben, zumindest nicht bei sehr komplexem Datenbank-Strukturen mit sehr komplexen Queries. Zum Beispiel statt Subqueries lieber Joins nehmen (wobei das auch als Best-Practice gelten könnte. Bei einfachen Queries hast du aber recht, da macht der Query-Optimizer das meiste. Hier kommt dann eher die Anwendungs-Logik ins Spiel, die "möglichst gut" sein sollte.
 
https://www.amazon.de/High-Performa...4287/ref=sr_1_1?ie=UTF8&qid=1336641765&sr=8-1

Das könnte was sein. Ist sehr aktuell (aber auf englisch). Vorherige Ausgaben gibt es auch auf deutsch. Wobei ich das englische Original bevorzugen würde (zumindest keine Übersetzungsfehler).
Seit wenigen Tagen ist die 3. von dir verlinkte Auflage draussen, jetzt noch zu der veralteten 1. deutschen Auflage zu greifen ist keine gute Idee.
Da ich alle Auflagen besitze (1-3), rate ich ganz klar zu der 3. neuen Auflage! Oder, wenn man unbedingt Geld sparen möchte zu der 2. Auflage aber keineswegs zu der 1. Auflage. Die 1. Auflage ist zwar natürlich auch gut, hinkt aber Meilen der 2. und 3. hinterher. Alles was ich in der 1. Auflage vermisst habe, weil man es hätte erwähnen soll (z.B. InnoDB Clustered Indizes) wurde mit Auflage 2 nachgereicht.
So richtig genial sind aber erst alle 3 zusammen :biggrin:

Die online Referenz nutze ich im Augenblick schon häufiger. Ich suche aber was greifbares, wo ich kleine lustige Lesezeichen reinkleben kann und was ich halt neben dem Rechner griffbereit liegen haben kann, in dem Punkt bin ich noch etwas altmodisch
ich könnte dir das hier anbieten (ich löse aktuell einen Teil meiner Büchersammlung auf, einfach ne PN bei Interesse).
Bei Bedarf taugt es auch jemandem den Kopf einzuschlagen :biggrin:


Ps.: @Apollo: Auch dir danke. "MySQL: Das Handbuch für Administratoren" klingt ganz gut, ich hatte es zwar in der Ergebnisliste von Amazon gesehen, aber übersprungen weil es nicht nach dem "geklungen" hat was ich suche. Nach den User Kommentaren klingt es aber auch ganz brauchbar.
Ich werfe da mal noch das Standardwerk MySQL Administrator's Bible in den Raum.


Und zur Datenbank-Performance gehört auf jeden Fall ein korrekt eingerichter Server! Wenn die DB-Caches und Werte nicht auf deine Anwendung(en) angepasst sind, dann wird es mit der Performance nie so sehr gut aussehen, egal wie viele best-practices du beachtest. Aber vielleicht macht die DB-Administration ja auch jemand anderes.
Und in dem Bereich ist z.B. auch das High Performance MySQL Buch sehr sehr sehr gut. Percona (die Leute hinter dem Buch) sind nicht ohne Grund die Bekannteste MySQL-Consulting Firma (neben Oracle) und vermitteln auch wirklich sehr viel Wissen in ihren Büchern und ihrem Blog.
 
Sebbo schrieb:
[...]statt Subqueries lieber Joins nehmen[...]

Da hast Du recht. Deswegen schreibe ich auch wenig bis keinen.
Dennoch bin ich der Meinung das Überoptimierung / Microoptimierung nicht wirtschaftlich ist. Ein enorme Erhöhung der Performance erzielt man selten; und diese geht dann in die Kosten (Lesbarkeit, Wartung, Zeit erstmal den Query zu optimieren, das nicht trivial ist.)

Ein Join ist auch erst einmal mit hohen Datenbankkosten verbunden. Da würde ich jetzt nicht unbedingt behaupten das dieser schneller ist. Da kommt es auch auf das Datenbankdesign an (Indizies, Engine, Konfiguration, etc.). Daher wird ich hier auch wieder mit der Lesbarkeit des Querys argumentieren und demnach entscheiden.

Wie Du sagst ist die "richtige Anwendungslogik" entscheidend.
 
Natürlich macht ein gutes DB-Design weit mehr aus als ein guter Query. Aber wenn man von beidem Bescheid weiß ist dies natürlich von Vorteil und HPM behandelt beides.
Wenn man sich aber manche Klamm-Scripte ansieht (Schleife statt Join) kann eine Query-Optimierung doch Wunder bringen :)biggrin:) und umso komplexer das DB-Design auf Grund der Anforderungen wird umso mehr Joins in einem Query vorhanden sind umso wahrscheinlicher wird es, dass der MySQL Optimizer irgendwo Mist baut und da sollte man dann eben doch solides Wissen über Qeury Optimierung haben und wie man eventuell MySQL überreden kann den Query besser auszuführen oder generell erstmal das Problem des Querys findet. Gerade ab so 8-10 Joins in einem Query steigt die Wahrscheinlichkeit für schlechte MySQL-Queryoptimierung beträchtlich. MySQL funktioniert eben am Besten wenn es absolut simple Querys ausführen soll.
 
Da hast Du recht. Deswegen schreibe ich auch wenig bis keinen.
Dennoch bin ich der Meinung das Überoptimierung / Microoptimierung nicht wirtschaftlich ist. Ein enorme Erhöhung der Performance erzielt man selten; und diese geht dann in die Kosten (Lesbarkeit, Wartung, Zeit erstmal den Query zu optimieren, das nicht trivial ist.)

Da muss ich dir recht geben, mit einem kleinen Aber ;)
Bei sehr hohen Query-Anzahlen (für ein und das selbe Query), was zum Beispiel bei einer sehr stark besuchten Seite durchaus auftreten kann (z.B. mehr als 1.000 mal das selbe Query in einer Stunde), kann auch eine kleine Optimierung von vielleicht 0,2 Sekunden einen deutlichen Unterschied machen. Das geht aber natürlich auch wieder ins Anwendungs-Design rein (caching oder sowas).
 
Hallo zusammen,

Vielen Dank nochmal an alle Antworten, ich werde mir die vorgeschlagenen Bücher heute abend nochmal in Ruhe genauer anschauen. Ich bin aber guter Dinger, dass ich das richtige unter den Vorschlägen finden werde.
Der Server, den ich verwende, wird administriert. (Und natürlich auch gesichert) Daher brauche ich den Part nicht näher betrachten (klar Hintergrundinfos aufbauen um ein besseres Verständnis der Technik zu bekommen schadet sicher nicht, aber es soll halt nicht das Hauptthema des Buches sein).
Zum Thema SQL habe ich noch nicht viel aus Büchern gelesen, sondern viel gegoogelt und mir eigene Vorgehensweise entwickelt. Meine Scripte funktionieren und ich habe aktuell auch keine Performance Probleme. Aber eh ich mich wieder an was neues setze, würde ich gerne einfach mal kontrollieren ob meine Vorgehensweise so in Ordnung ist oder ob ich nicht Anregungen und Tipps finde wie man es besser machen kann.
Daher suche ich die Eierlegendewollmichsau der SQL-Bücher, die sowohl das Datenbankdesign als auch vernünftige Queries beleuchten. (Die PHP+MySQL Bücher die ich hier liegen haben kommen selten über ein "SELECT * FROM..." mit einem bisschen WHERE, ORDER BY und GROUP BY hinaus)
 
Meine Scripte funktionieren und ich habe aktuell auch keine Performance Probleme.
Kein Wunder ;)
Wenn es wenig Daten sind und wenig Zugriffe sind, funktionierte jedoch noch so miserable Lösung gut, wenn es aber mal mehr Daten und Zugriffe werden, treten die Probleme sehr schnell auf.
Ich will keineswegs sagen, dass du es bisher falsch gemacht hast oder so (habe ich keine Ahnung), aber die Performance-Probleme treten eben erst in den Extremfällen auf, die über 100 Besucher am Tag liegen.

Daher suche ich die Eierlegendewollmichsau der SQL-Bücher, die sowohl das Datenbankdesign als auch vernünftige Queries beleuchten. (Die PHP+MySQL Bücher die ich hier liegen haben kommen selten über ein "SELECT * FROM..." mit einem bisschen WHERE, ORDER BY und GROUP BY hinaus)
HPM ist eigentlich ein guter Kompromiss aus allen Teilen mit der Arbeit von MySQL: Queryoptimierung, ein wenig Datenbankschemas (Fallstricke und so mancher Trick), Backup, High Performance Situationen (Load Balancing, Replikation, Clustering) und wie man die Config von MySQL tuned (für MyISAM egal, aber für InnoDB lebensnotwendig).
Und natürlich sehr sehr sehr viel Hintergrundwissen zu MySQL, so dass du beim Designen von Schemas und dem Überlegen wie Datenbankabfragen aussehen würden, direkt schon feststellen wirst, dass manche Querys mit dem Design zu komplex werden und somit potentiell unperformant sind.
 
ich werfe einfach mal was ein ...
Wer performance sparen will, könnte ja Tabellen anlegen, darüber eventuellkeine joins machen - sondern sich ein DBMS nehmen, welches View's beherrscht. Die sind für Abfragen doch performanter und werden DBMS intern umgesetzt.
Nur so am Rande eine kleine Notiz