Ich habe das folgende Szenario:
Ich habe eine Datenbank mit einer bestimmten MyISAM-Tabelle mit etwa 4 Millionen Zeilen. Ich verwende gespeicherte Prozeduren (MySQL Version 5.1) und insbesondere eine, um diese Zeilen nach verschiedenen Kriterien zu durchsuchen. Diese Tabelle hat mehrere Indizes, und die Abfragen über diese gespeicherte Prozedur sind normalerweise sehr schnell (<1s). Grundsätzlich verwende ich eine vorbereitete Anweisung und erstelle und führe dynamisches SQL in dieser Suchsp aus. Nach der Ausführung der vorbereiteten Anweisung führe ich "DEALLOCATE PREPARED stmt;" aus.
Die meisten Abfragen laufen in weniger als einer Sekunde (ich verwende LIMIT, um immer nur 15 Zeilen zu erhalten). Es gibt jedoch einige seltene Abfragen, deren Ausführung länger dauert (z. B. 2-3 Sekunden). Ich habe die gesuchte Tabelle so weit wie möglich optimiert.
Ich habe eine Webanwendung entwickelt, und ich kann die Ergebnisse der schnellen Abfragen in weniger als einer Sekunde auf meinem Entwicklungsrechner ausführen und sehen.
Wenn ich jedoch zwei Browserinstanzen öffne und eine gleichzeitige Suche durchführe (gegen den Entwicklungscomputer), eine mit der länger laufenden Abfrage und die andere mit der schnelleren Abfrage, werden die Ergebnisse gleichzeitig zurückgegeben, d. h. es scheint, als ob die schnelle Abfrage wartet, bis die langsamere Abfrage beendet ist, bevor sie die Ergebnisse zurückgibt, d. h. beide Abfragen dauern 2-3 Sekunden...
Gibt es dafür einen Grund? Denn ich dachte, dass MyISAM SELECTS unabhängig voneinander behandelt und dies ist derzeit nicht das Verhalten, das ich erlebe...
Vielen Dank im Voraus! Tim