Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 11

Thema: MySQL 5 und InnoDB

  1. #1
    Kevni
    Gast

    Standard MySQL 5 und InnoDB

    Guten Abend an alle,

    ich bin derzeit dabei meine Kenntnisse in SQL aufzufrischen um mein Browsergamekonzept qualitativer umzusetzen. Dazu habe ich nun einige Fragen zum neueren MySQL 5 und Tabellen-Engines. Das ganze ist auf ein Browsergame bezogen was relativ rechenintensiv sein wird.

    Nun denn, aus diversen Quellen habe ich erfahren, dass MySQL schneller rechnen und besser mit großen Zahlen umgehen könne als PHP. Ist das war? Soll ich meine Rechnungen soweit wie möglich auf die Datenbank auslagern?

    Ich habe gerade meine erste eigene Stored Function/Procedure erfolgreich umgesetzt. Wie lange ist diese denn ab ihrer Definition gültig? Solange mein Server läuft? Muss ich sie nach einem Neustart erneut definieren?

    Ich plane, sofern die erste Frage zutreffen würde, mithilfe von Stored Procedures ein externes SQL-Script zu erstellen das vom System (Windows oder Linux, noch offen) in regelmäßigen Abständen aufgerufen wird. Wie stelle ich sowas am besten an? Also ich möchte das die Datenbank in diesem Sinne selbstständig im Hintergrund rechnet, ohne die Hilfe einer Skriptsprache und vorallem ohne Klicks des Benutzers oder Conjobs.

    So, das wars dann erstmal. Ich würde mich sehr freuen mir ein Profi da etwas zu meinen Ideen sagen und meine Fragen beantworten könnte.

    Vielen Dank im vorraus!

    Kevin
    Achtung: Dies ist ein alter Thread im HTML und Webmaster Forum
    Diese Diskussion ist älter als 90 Tage. Die darin enthaltenen Informationen sind möglicherweise nicht mehr aktuell. Erstelle bitte zu deiner Frage ein neues Thema im Forum !!!!!

  2. #2
    Kevni
    Gast

    Standard AW: MySQL 5 und InnoDB

    Nachtrag:

    Hab die Tabellen-Engines ganz vergessen...
    Dazu noch folgende Fragen:

    Ich habe mich über InnoDB, MyISAM und HEAP (?) informiert. Nun habe ich noch keine konkrete Datenbankstruktur vor mir legen und kann daher noch nicht sagen welche Engine ich für welche Tabelle nutzen werde. Ich plane Tabellen die viel beschrieben werden und vorallem durch Locking gesichert werden müssen mit InnoDB zu betreiben. Tabellen die mehr gelesen werden dagegen mit dem Standart MyISAM. Kann ich HEAP (oder wie das hieß) in einem Browsergame auch sinnvoll nutzen? Es soll ja, da es über den Arbeitsspeicher läuft, sehr schnell sein, aber eben nur solange die DB bzw. der Server läuft.

    Danke nopchmals im vorraus

  3. #3
    Großmeister(in)
    Registriert seit
    09.12.2008
    Ort
    Berlin
    Alter
    38
    Beiträge
    666
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings
    Blog-Einträge
    1

    Standard AW: MySQL 5 und InnoDB

    MySQL rechnet definitiv schneller als PHP, das hast du richtig gehört. Sämtliche Aufgaben die von der DB erledigt werden können sollte man auch ihr überlassen.
    Deine Stored Procedures sind so lange aktiv wie du sie nicht wieder löschst (wie auch deine Tabellen). Die müssen nach einem Serverneustart nicht neu angelegt werden.

    Für regelmäßige Skript-Aufrufe sind nunmal Cronjobs gedacht. Wieso willst du die nicht nutzen?
    Ich wüßte spontan keine Alternative um SQL-Scripts regelmäßig laufen zu lassen, außer den Sachen die du ausschließen möchtest.

    Zu den Engines:
    In Punkto Transaktionen ist zur Zeit InnoDB am stabilsten und am besten integriert. Bietet auch Row-Level-Locking wenn ein Mix aus Operationen nebenläufig ausgeführt werden muss.
    Für Tabellen auf die hauptsächlich SELECTs und INSERTs ausgeführt werden ist MyISAM eine gute Wahl.
    Heap (Memory-Engine) sollte nur für Tabellen verwendet werden, deren Inhalte sich nicht ändern (z.B. PLZ-Lookups) oder bei denen es egal ist wenn die Inhalte bei einem Server-Neustart verloren gehen. Die Tabellenstruktur bleibt beim Neustart erhalten, aber die Daten sind weg und müssen danach eben neu eingespielt werden. Heap bietet keine Text-/Blob-Felder und unterstützt nur Zeilen fester Größe. Man muss also beispielsweise statt VARCHAR dann CHAR verwenden, was je nach Inhalten eine gewisse Speicherverschwendung darstellt.
    Bevor du dich für eine Engine entscheidest solltest du dir auf jedenfall über die Tabellenstrukturen im Klaren sein und wie diese Tabellen verwendet werden.


    Wichtig ist für die Performance auch das vernünftige setzen von Indices, große Tabellen zu partitionieren kann auch viel ausmachen.
    Dann halt noch so Kleinigkeiten wie richtige Wahl der Feldtypen, z.B. die SQL-Feldtypen zur Speicherung von Zeit und Datum verwenden, für Strings die immer eine (nahezu) gleiche Länge haben Feldtyp CHAR statt VARCHAR verwenden, keine NULL-Werte erlauben (es sei denn sie werden wirklich explizit benötigt, sonst lieber leeren String oder 0 speichern).
    Kann sich auch alles noch läppern.
    "Programming today is a race between software engineers
    striving to build bigger and better idiot-proof programs,
    and the universe trying to build bigger and better idiots.
    So far, the universe is winning."
    Rick Cook

  4. #4
    Kevni
    Gast

    Standard AW: MySQL 5 und InnoDB

    Vielen Dank für deine Antwort!

    Du hast alles was ich wollte beantwortet, damit wäre das Thema auch direkt erledigt.
    Für Ausführungen der SQL-Scripte werde ich Cronjobs verwenden

    Danke nochmal,
    Kevni

  5. #5
    Pion
    Gast

    Standard AW: MySQL 5 und InnoDB

    Zitat Zitat von SinnlosS Beitrag anzeigen
    keine NULL-Werte erlauben (es sei denn sie werden wirklich explizit benötigt, sonst lieber leeren String oder 0 speichern).
    Weil?

    Null hat doch nix mit 0 oder leeren String zu tun


    mfg

  6. #6
    Großmeister(in)
    Registriert seit
    09.12.2008
    Ort
    Berlin
    Alter
    38
    Beiträge
    666
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings
    Blog-Einträge
    1

    Standard AW: MySQL 5 und InnoDB

    Viele Leute erlauben bei Tabellenfeldern wenn nicht zwingend etwas darin stehen muss auch NULL-Werte.
    Wenn man für Felder NULL-Werte erlaubt verlangsamt das aber Abfragen auf diese Tabelle. Deswegen soll lieber ein leerer String oder bei INT-Feldern eine 0 gespeichert werden und die Tabellenfelder als NOT NULL deklariert werden. NULL-Werte sollten nur erlaubt werden wenn sie wirklich nötig sind, wenn es also einen Unterschied zwischen einem leeren String (bzw. einer 0) und einem NULL-Wert gibt.

    Edit:
    Ich zitiere grad mal noch den entsprechenden Ausschnitt aus dem Buch "High Performance MySQL" (übrigens sehr empfehlenswert, http://www.amazon.de/Performance-Opt...8691065&sr=8-2 )
    [...]
    Es ist für MySQL schwieriger, Abfragen zu optimieren, die sich auf Nullable-Spalten beziehen, weil diese die Vergleiche von Indizes, Indexstatistiken und Werten deutlich komplizierter machen. Eine Nullable-Spalte belegt mehr Speicherplatz und erfordert in MySQL eine spezielle Verarbeitung. Wenn eine Nullable-Spalte indiziert wird, braucht sie pro Eintrag ein zusätzliches Byte und kann in MyISAM sogar dafür sorgen, dass ein Index fester Größe (wie etwa der Index einer Single-Integer-Spalte) in einen Index variabler Größe konvertiert wird.
    Selbst wenn Sie die Tatsache eines "kein Wert" in einer Tabelle speichern müssen, müssen Sie nicht unbedingt NULL verwenden. Nehmen Sie stattdessen lieber Null, einen speziellen Wert oder einen leeren String.
    Geändert von SinnlosS (02.11.2010 um 11:49 Uhr)
    "Programming today is a race between software engineers
    striving to build bigger and better idiot-proof programs,
    and the universe trying to build bigger and better idiots.
    So far, the universe is winning."
    Rick Cook

  7. #7
    Forum Guru Avatar von The User
    Registriert seit
    28.10.2007
    Ort
    Zwischen Pazifik und Atlantik...
    Beiträge
    4.044
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard AW: MySQL 5 und InnoDB

    Zitat Zitat von SinnlosS Beitrag anzeigen
    MySQL rechnet definitiv schneller als PHP, das hast du richtig gehört. Sämtliche Aufgaben die von der DB erledigt werden können sollte man auch ihr überlassen.
    Hast du da einen Beweis für? MySQL ist gut im Abfragen-in-Index-Struktur optimieren, aber um irgendwelche Sachen auszurechnen, etwa die Summe von Zahlen, insbesondere, wenn die Queries jedes Mal neu ausgewertet und optimiert werden müssen? Ich wäre mit so einer Aussage etwas vorsichtiger, die extensive Benutzung von stored procodures kann jedoch dafür die Konsistenz der Datenbank sichern, zudem spart man sich schonmal das hin-und-her zwischen PHP und MySQL…

  8. #8
    Großmeister(in)
    Registriert seit
    09.12.2008
    Ort
    Berlin
    Alter
    38
    Beiträge
    666
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings
    Blog-Einträge
    1

    Standard AW: MySQL 5 und InnoDB

    Gegenfrage, hast du mal ein Beispiel wo PHP schneller als SQL ist in Dingen, die von SQL simpel zu erledigen sind?
    COUNT() ist schneller als die Ergebnismenge komplett zu selektieren und dann in PHP mit num_rows zu zählen.
    SUM() ist zugegebnermaßen nur gleich schnell wie die Zahlen alle auszulesen und in PHP aufzuaddieren. Langsamer als PHP ist es aber definitiv auch nicht.
    Datumsberechnungen und -umformungen mit den SQL-eigenen Feldtypen sind wesentlich schneller über die DB, als wenn man diese in PHP vornimmt.
    Über das Filtern der Ergebnismenge mit SQL gegenüber dem Auslesen größerer Datenbestände als benötigt und anschließender Filterung in PHP brauchen wir wohl gar nicht erst reden.

    Mir fällt gerade wirklich kein Beispiel ein, dass sich in angemessener Form sowohl über DB als auch über PHP regeln ließe und in dem PHP schneller wäre als SQL.
    Aber du darfst mir gerne welche nennen, ich bin selbstverständlich auch nicht allwissend.
    "Programming today is a race between software engineers
    striving to build bigger and better idiot-proof programs,
    and the universe trying to build bigger and better idiots.
    So far, the universe is winning."
    Rick Cook

  9. #9
    Pion
    Gast

    Standard AW: MySQL 5 und InnoDB

    Datenbanken werden bei großen Aufkommen ziemliche Krücken, im direkten Vergleich sind elementare Berechnungen natürlich schneller.. (ein paar Ausnahmen wie zb "uuid" gibts sicherlich)

  10. #10
    Großmeister(in)
    Registriert seit
    09.12.2008
    Ort
    Berlin
    Alter
    38
    Beiträge
    666
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings
    Blog-Einträge
    1

    Standard AW: MySQL 5 und InnoDB

    Zitat Zitat von Pion Beitrag anzeigen
    Datenbanken werden bei großen Aufkommen ziemliche Krücken, im direkten Vergleich sind elementare Berechnungen natürlich schneller.. (ein paar Ausnahmen wie zb "uuid" gibts sicherlich)
    Hm, und PHP skaliert in Sachen Performance besser bei großen Aufkommen, so dass ab einem bestimmten Grad dann PHP schneller ist? Hast du da Quellen wo das genauer erläutert wird? Würde mich interessieren, habe ich noch nie gehört.
    "Programming today is a race between software engineers
    striving to build bigger and better idiot-proof programs,
    and the universe trying to build bigger and better idiots.
    So far, the universe is winning."
    Rick Cook

Ähnliche Themen

  1. mysql.php connected sich ncht mit der MySQL Datenbank
    Von Unregistriert im Forum PHP Forum - Apache - CGI - Perl - JavaScript und Co.
    Antworten: 4
    Letzter Beitrag: 17.06.2010, 16:51
  2. per PHP neue MySQL-Datenbank und MySQL-Benutzer anlegen
    Von sudeki05 im Forum PHP Forum - Apache - CGI - Perl - JavaScript und Co.
    Antworten: 3
    Letzter Beitrag: 15.04.2007, 19:40
  3. PHP MySQL
    Von Luge im Forum PHP Forum - Apache - CGI - Perl - JavaScript und Co.
    Antworten: 2
    Letzter Beitrag: 31.03.2006, 12:27
  4. mysql
    Von ::RMB:: im Forum Tutorials, Workshops und Anleitungen
    Antworten: 3
    Letzter Beitrag: 10.03.2006, 22:09
  5. mySQL
    Von Bianca im Forum Computer - Internet Forum
    Antworten: 10
    Letzter Beitrag: 28.11.2004, 18:49

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •