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
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. –