5 Stimmen

MySQL: Wie kann man die gesamte myisam-Tabelle im Speicher halten?

Ich habe viel RAM (1 gb) auf meinem Server, und ich habe eine Tabelle (100 mb), die ich gerne beschleunigen würde. Ist es möglich, die gesamte Tabelle im Speicher zu halten (und dabei MYISAM zu verwenden)? Würde dies die Dinge schneller machen (ich habe bereits die richtigen Indizes).

Danke

0 Stimmen

Ich stelle diesen Ansatz in Frage, wenn Sie 20 Besucher auf einmal bekommen, dann haben Sie bereits Ihre Systemressourcen erreicht und überschritten, was würden Sie tun, wenn Sie 100 Besucher bekommen?

5voto

ajreal Punkte 45851

Ein besserer Vorschlag wäre, die Größe des Abfrage-Caches zu erhöhen und mysql die interne Optimierung durchführen zu lassen

mehr Details - http://dev.mysql.com/doc/refman/5.5/en/query-cache.html

1 Stimmen

Der Abfrage-Cache funktioniert jedoch nicht, wenn die Anwendung vorbereitete Anweisungen verwendet. Nur eine Kleinigkeit zur Erinnerung.

0 Stimmen

@ajreal: Welche Art von Abfrage-Cache-Größe würden Sie für einen 1-Gb-MySQL-Server mit einer Haupttabelle empfehlen, die 100 MB ist? es gibt auch ein paar andere Tabellen, die hin und wieder verwendet werden. auch, kurze Frage: wird der Abfrage-Cache für eine Tabelle Abfragen nach einer Einfügung in diese Tabelle ungültig gemacht?

0 Stimmen

@DanielSchneller: Warum funktioniert es nicht für vorbereitete Erklärungen? Ich verstehe Prepared Statements nicht ganz, aber ich dachte, sie seien "besser", weil mysql eine Art Vorkompilierung für die Statements durchführt. Empfehlen Sie, prepared statements in Zukunft nicht mehr zu verwenden?

5voto

Daniel Schneller Punkte 13408

Wenn Sie viel Arbeitsspeicher auf Ihrem Rechner haben und diesen hauptsächlich für MySQL verwenden, sollte sich das Betriebssystem darum kümmern. Bei MyISAM besteht die Idee darin, dass das Dateisystem die Seiten in seinem Cache behält, die am häufigsten benötigt werden. Mit viel Arbeitsspeicher steigen die Chancen, dass Ihre Tabelle ohnehin nicht sehr oft auf die Festplatte zugreifen wird.

Das ist IMHO sogar besser, als zu versuchen, die Tabelle vom Typ MEMORY zu machen, denn dann müsste man sich um die Schreibvorgänge kümmern - die sollten normalerweise sowieso persistent sein.

Solange der Rechner nicht durch andere Anwendungen als den MySQL-Server unter großem gleichzeitigen Speicherdruck steht - in diesem Fall scheinen 1 GB für einen Server heutzutage nicht zu viel zu sein -, müssen Sie wahrscheinlich nichts tun, um Ihr Ziel zu erreichen :)

4voto

Brains1994 Punkte 91

Sie können die Tabellen-Engine auf MEMORY umstellen, dann wird die gesamte Tabelle im Speicher abgelegt.

4 Stimmen

Wenn der Strom des Datenbankservers ausfällt ... werden die Daten?

0 Stimmen

Der gesamte Inhalt einer Tabelle mit engine = memory geht verloren. Sie sind nur nützlich, um (in der Tat, sehr schnell) temporäre Werte zu speichern. Um diese Werte zu setzen: ALTER TABLE t1 ENGINE = memory;

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X