2016-06-16 4 views
3

Für ein Forschungsprojekt im Bereich der Sozialwissenschaften verwende ich MySQL (5.5) auf einem dedizierten Linux-Server mit 8 GB Speicher. Die Daten bestehen aus etwa 30 Millionen Datensätzen, was zu einer MyISAM-Quellentabelle von etwa 4 GB führt (mit MyISAM, da die Daten stabil sind und Transaktionen nicht nützlich sind). Meine Frage lautet: Wie kann ich verhindern, dass Speicher zu einem unnötigen Engpass wird?

Bei den aktuellen Einstellungen werden immer nur etwa 20% des Speichers verwendet, aber das richtige Gleichgewicht der my.ini-Einstellungen ist schwer zu finden, da viele Variablen voneinander abhängig sind. Wie kann ich zulassen, dass MySQL so viel Speicher wie möglich nutzt (genug Reserve, um zu verhindern, dass Linux austauscht).Maximierung der Speichernutzung für einen MySQL-Analyseserver

aktuelle Einstellungen:

[mysqld] 
max_connections = 3 
performance_schema=on 
default-storage-engine=MYISAM 
local-infile=1 

myisam_sort_buffer_size = 2048M 

key_buffer_size = 2048M 
tmp_table_size = 2048M 
max_heap_table_size = 2048M 

sort_buffer_size = 128M 
read_buffer_size = 256M 
read_rnd_buffer_size = 128M 
join_buffer_size = 512M 
thread_stack = 256KB 

query_cache_size = 64M 
query_cache_limit = 32M 
table_open_cache= 256 
table_definition_cache = 512 

myisam_max_sort_file_size = 75G 

Antwort

-1

Ihre beste Wette ist MySQL Tuner auf Ihrer Datenbank ausgeführt werden, nachdem es für eine Weile laufen und im Einsatz. Niemand auf SO kann Ihnen relevante Informationen zur Optimierung Ihrer Speichernutzung geben, ohne die Form Ihrer Datenbank und Nutzungsmuster zu kennen. MySQL Tuner automatisiert dies.

+0

Ich habe sowohl MySQL Tuner und [Tuning-Primer] (https://launchpad.net/mysql-tuning-primer) mit einigem Erfolg verwendet. Das Problem besteht darin, dass solche Tools auf Transaktionsserver mit einer beträchtlichen Anzahl von Verbindungen ausgerichtet sind, was zu Warnungen über die Speichernutzung führt, die in dieser Situation nicht gelten. –