MEIN SETUP ( Beispiel )
Ich verwende Linux auf einer Amazon High CPU Extra Large EC2-Instanz mit den folgenden Spezifikationen:
- 7 GB Speicher
- 20 EC2-Recheneinheiten (8 virtuelle Kerne mit jeweils 2,5 EC2-Recheneinheiten)
- 1690 GB lokaler Instanzspeicher
- 64-Bit-Plattform
Ich habe zwei große MySQL-Datenbanken, die auf der MyISAM-Speicher-Engine ausgeführt werden. Einer ist 2 GB und der andere ist 500 MB. Ich möchte sicherstellen, dass MySQL so viel RAM verwendet, wie es kann / muss, um die Abfragegeschwindigkeit zu maximieren. Ich weiß , dass es eine Reihe von MySQL Speicherkonfigurationsoptionen ist wie key_buffer_size
und MyISAM_sort_buffer_size,
aber ich bin nicht vertraut mit diesen zu optimieren.
FRAGEN
- Wie kann man überprüfen, welchen Speicher MySQL derzeit auf einem Linux-System verwendet?
- Wie maximiert / optimiert man die MySQL-Speichernutzung?
- Angenommen, meine Abfragen und mein Schema sind optimiert. Welche weiteren Änderungen sollte ich berücksichtigen?
Antworten:
Dies ist ein schwieriges Thema. Kann hier nicht beantwortet werden, ganze Bücher wurden darüber geschrieben. Ich empfehle, Ihre innodb_buffer_pool_size groß genug zu machen. Wenn Sie Myisam-Tabellen verwenden, überprüfen Sie key_buffer_size. Auch table_cache und max_connections sollten berücksichtigt werden.
Hier ist etwas, das Ihnen helfen kann:
http://www.mysqlperformanceblog.com/2006/09/29/what-to-tune-in-mysql-server-after-installation/ http://www.mysqlperformanceblog.com/2007/11/01/innodb- Grundlagen der Leistungsoptimierung / http://www.mysqlperformanceblog.com/2007/11/03/choosing-innodb_buffer_pool_size/
BEARBEITEN:
Wie @ draw010 sagte, ist es wichtig, die Art der Verwendung der Datenbank zu berücksichtigen. Das Tunning für eine DB mit starkem Lesevorgang unterscheidet sich stark von einem DB mit starkem Lesevorgang. Sie können auch andere Strategien in Betracht ziehen. Wie Memcached, NOSQL-Datenbanken usw.
quelle
Wenn Sie sicher sein müssen, dass MySQL den gesamten benötigten Speicher verwendet, müssen Sie zu InnoDB wechseln. Wenn Sie nicht die MySQL-
FULLTEXT
Suchfunktionen verwenden, treten keine ernsthaften Probleme auf.Im Falle von MyISAM werden eine Reihe von Caches verwendet, einschließlich interner MySQL-Schlüsselpuffer und Systemcache. Wenn Sie die beste Leistung erzielen möchten, müssen Sie Platz für einen der Caches lassen. Ich empfehle MyISAM jedoch nicht für diesen Zweck, insbesondere wenn Ihre Datenbanken schreibintensiv sind: MyISAM sperrt die gesamte Tabelle beim Schreiben, während InnoDB nur betroffene Zeilen sperrt.
Selbst wenn Sie alle Ihre Datenbanken in den Speicher stellen, können Sie aufgrund unzureichender Indizes oder aus anderen Gründen langsam laufende Abfragen haben.
quelle