Die erste Suchabfrage am Tag dauert c.a. 30 Minuten. Alle späteren Abfragen sind in ca 5 Sekunden erledigt.
Mir erklärt sich das so, dass der Kernel (2.6.22) hier die temporäre Tabelle in den Cache (RAM) schreibt, der dann Nachts beim Backup des Systems aber wieder verloren geht?
Nun meine Fragen:
1.) Warum dauert die erste Suche so lange?
Das reine Kopieren der Tabelle als File geht um ein vielfaches schneller.
Wieso wird der Cache also nicht so schnell befüllt?
2.) Kann ich den Cache irgendwie "sichern", so dass er nicht wieder freigegeben wird?
Das experimentieren mit "tmp_table_size" brachte hier leider keinen Erfolg. Auch ein Wert von "4G" hielt die Tabelle nicht im RAM.
3.) Wo könnte noch optimiert werden (Die Abfrage selbst lässt sich leider nicht optimieren)?
Anbei noch ein Auszug aus meiner my.cnf:
Code: Select all
port = 3306
socket = /var/run/mysqld/mysqld.sock
skip-locking
key_buffer = 512M
max_allowed_packet = 16M
table_cache = 512
join_buffer_size = 4M
sort_buffer_size = 4M
read_buffer_size = 4M
read_rnd_buffer_size = 4M
myisam_sort_buffer_size = 128M
thread_cache_size = 8
query_cache_size = 128M
tmp_table_size = 64M
# Try number of CPU's*2 for thread_concurrency
thread_concurrency = 4