Frage

Ich arbeite mit einem MySQL-Server. Ich möchte irgendwie, um sicherzustellen, dass die gesamte DB in den Arbeitsspeicher geladen wird, wie ich es gehört viel schneller wäre.

Ist das wahr? und wie ich es tun vertify?

War es hilfreich?

Lösung

Wenn Sie InnoDB verwenden, dann können Sie innodb_buffer_pool_size eingestellt zumindest so groß wie Ihre Daten und Indizes sein. Dann, wie Sie auf Daten zugreifen, wird es in dem Speicher zwischengespeichert und alle nachfolgenden Zugriffe über Speicher auftreten.

Wenn Sie die Daten auf Pre-Cache wollten, könnten Sie einige Ihrer gemeinsamen Abfragen tun, oder vollständige Tabelle / Index-Scans zu zwingen alle Daten in den Speicher zu laden.

Es gibt eine init-Datei Option für mysqld, die den Server automatisch einige Befehle beim Start auszuführen hat, in dem Sie die Pre-Caching-Abfragen enthalten könnten auszuführen.

Beachten Sie nicht wollen, aus dem Speicher laufen, also seien Sie vorsichtig mit innodb_buffer_pool_size zu groß Einstellung.

Andere Tipps

Nun, eine Möglichkeit ist, ein RAM-Laufwerk zu verwenden .. obwohl es nicht dauerhaft ist.

http: //www.linuxforums .org / forum / misc / 670-how-create-rAM-Laufwerk-linux.html

(Nur der Vollständigkeit halber,) Sie konnten verwenden HEAP als Tischmaschine. Aber bedenken Sie, dass, was auch immer Daten, die Sie in einem Haufen Tisch gegangen wird, wenn Sie den Server neu starten.

Tabellen im RAM sind sehr schnell.

Sie können durch Änderung ihrer Speicher-Engine Ihre vorhandenen Tabellen ändern. Aber stellen Sie eine Sicherung, wenn Sie die Daten nach einem Neustart des Servers verwenden möchten.

TABLE test ENGINE = MEMORY ALTE;

Beachten Sie, dass der Speicher-Tabellen können nicht BLOB oder TEXT-Spalten und Daten und Indexgröße ist begrenzt auf den verfügbaren Speicher enthalten.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top