Hallo,
ist es möglich mySQL komplett in den ram zu legen und somit die Performance für Abfragen etwas zu erhöhen?
Ich habe da etwas von RAM-Disk gehört, konnte aber keine informationen dazu finden.
Wie muss ich mir das dann vorstellen? Ich erstele quasi eine virtuelle Festplatte im RAM und installiere MySQL darauf?
Wie sieht es dann mit der datensicherheit aus? der rAM verliert seine daten je bei einem Reboot oder einem Stromausfall... gibt's da irgend eine Möglichkeit oder ein gutes HowTo?
Gruß
Wecki
MySQL komplett in den Ram legen?
-
- Posts: 80
- Joined: 2004-03-16 13:47
- Location: Münster
Re: MySQL komplett in den Ram legen?
Es gibt ein Tabellenformat "Memory":
Hash based, stored in memory, useful for temporary tables
-
- Posts: 101
- Joined: 2005-01-27 08:55
Re: MySQL komplett in den Ram legen?
Leider ist es keine temporäre Tabelle.
Es wäre eine ganze Datenbank welche mein Kunde im RAM haben möchte.
Ist dies überhaupt sinnvoll im Bezug auf Performance?
Was bewirkt dieses Format Memory und wo stelle ich das ein? :?:
Es wäre eine ganze Datenbank welche mein Kunde im RAM haben möchte.
Ist dies überhaupt sinnvoll im Bezug auf Performance?
Was bewirkt dieses Format Memory und wo stelle ich das ein? :?:
-
- Posts: 80
- Joined: 2004-03-16 13:47
- Location: Münster
Re: MySQL komplett in den Ram legen?
Infos hier:
http://dev.mysql.com/doc/refman/4.1/en/ ... ngine.html
Die Performance sollte schon deutlich besser sein, da die gesamte Tabelle ja im RAM vorgehalten wird.
http://dev.mysql.com/doc/refman/4.1/en/ ... ngine.html
Die Performance sollte schon deutlich besser sein, da die gesamte Tabelle ja im RAM vorgehalten wird.
-
- Posts: 696
- Joined: 2004-01-27 14:16
- Location: Aachen
Re: MySQL komplett in den Ram legen?
Datanbanken zu optimieren ist ein gut bezahlter Job wenn man das wirklich kann. Maßnahmen hängen sehr von dem aktuelle Fall ab.MySQL Manual wrote: As indicated by their name, MEMORY tables are stored in memory and use hash indexes by default. This makes them very fast, and very useful for creating temporary tables. However, when the server shuts down, all data stored in MEMORY tables is lost. The tables themselves continue to exist because their definitions are stored in .frm files on disk, but they are empty when the server restarts.
Datenbanken einfach in den Arbeitsspeicher zu legen ist zwar in manchen Fällen durchaus sinnvoll, es ist aber meistens keine geeignete Maßnahme um eine Webanwendung mal eben ein bisschen schneller zu machen.
-
- Posts: 194
- Joined: 2003-02-22 22:51
- Location: München / Berg-am-Laim
Re: MySQL komplett in den Ram legen?
Wegen der Ramdisk: einfach den Kernel mit der Option kompilieren und /dev/ram0 glaub heißt das device mounten. dorthin die daten verschieben. nicht vergessen ein ständiges backup der DB zu machen ... denn Ausfall (z.b. Strom weg) = Daten weg ...
-
- Posts: 23
- Joined: 2005-01-03 17:27
Re: MySQL komplett in den Ram legen?
Bei der MEMORY-Engine oder konventionellen Tabellen (MyISAM/InnoDB) auf einer RAM-Disk muss man natürlich selber dafür sorgen, dass das auf die Platte geschrieben wird, wenn da was schief läuft, hat man natürlich ein Problem.
Wie schon gesagt ist das auch keineswegs ein Allheilmittel. Wahrscheinlich will der Kunde ja nicht explizit, dass seine Tabellen im RAM liegen, sondern einfach bessere Performance, oder?
Wenn es hauptsächlich SELECT-Abfragen sind und oft die gleichen Zeilen angefordert werden, kann der Query Cache schon recht viel bewirken, ohne dass selten gebrauchte Daten Speicher belegen.
Wie schon gesagt ist das auch keineswegs ein Allheilmittel. Wahrscheinlich will der Kunde ja nicht explizit, dass seine Tabellen im RAM liegen, sondern einfach bessere Performance, oder?
Wenn es hauptsächlich SELECT-Abfragen sind und oft die gleichen Zeilen angefordert werden, kann der Query Cache schon recht viel bewirken, ohne dass selten gebrauchte Daten Speicher belegen.
-
- Posts: 101
- Joined: 2005-01-27 08:55
Re: MySQL komplett in den Ram legen?
Der kunde möchte eine bessere performance. leider bringt aber ein Cachen in diesem fall nicht viel, da es sich um eine produktvergleichplatform handelt.
Hier ist die Warscheinlichkeit äußerst gering, das 2 mal die gleichen Produkte angefragt werden.
Hier ist die Warscheinlichkeit äußerst gering, das 2 mal die gleichen Produkte angefragt werden.
-
- Userprojekt
- Posts: 608
- Joined: 2005-12-16 17:57
Re: MySQL komplett in den Ram legen?
Existieren brauchbare INDEXes? Lieber einen INDEX zuviel als einen zuwenig. Damit ist oft eine Beschleunigung um Faktor 100 drin.wecki wrote:Der kunde möchte eine bessere performance. leider bringt aber ein Cachen in diesem fall nicht viel, da es sich um eine produktvergleichplatform handelt.
Hier ist die Warscheinlichkeit äußerst gering, das 2 mal die gleichen Produkte angefragt werden.
Viele Grüße,
Mattias
-
- Posts: 194
- Joined: 2003-02-22 22:51
- Location: München / Berg-am-Laim
Re: MySQL komplett in den Ram legen?
Zuviele INDEXe verderben aber auch gern mal den Brei!MattiasS wrote: Lieber einen INDEX zuviel als einen zuwenig.
-
- Userprojekt
- Posts: 608
- Joined: 2005-12-16 17:57
Re: MySQL komplett in den Ram legen?
Nunja, auf jeder Spalte einen Index unterzubringen ist Overkill und Verschwendung von Plattenspeicher, aber ein zwei INDEXes auf den großen Tabellen wirken manchmal Wunder.Metrax wrote: Zuviele INDEXe verderben aber auch gern mal den Brei!
Und wenn ein INDEX wider erwarten nix gebracht hat, kann man ihn ja auch wieder entfernen.
Bevor ich damit anfinge, Tabellen ins RAM zu legen, würde ich damit hantieren.
Bei Tabellen, auf die primär lesend zugegriffen wird und genügend RAM kann es auch schon etwas bringen, ganze Tabellen in den Dateisystemcache des Kernels zu legen, wozu man einfach
Code: Select all
cat dateiname > /dev/null
Viele Grüße,
Mattias