Я пытаюсь провести сравнительный анализ различных запросов в разных столбцах, но MySQL просто не позволит мне это сделать. После первого выполнения запроса я никогда не смогу снова получить такое же время выполнения для этого запроса. Например, если запрос выполняется в 0.062 сек в первый раз, я никогда не смогу получить одинаковое время выполнения для 2-го, 3-го и т.д. Это будет 0 секунд или что-то вроде 0.015.
Я прочитал много сообщений об отключении и очистке кеша запросов MySQL, но ни один из них не помог мне.
Независимо от того, что я делаю, MySQL, похоже, настаивает на использовании кэшированных результатов.
Я перезагружаю MySQL Workbench, затем я запускаю;
set global query_cache_type=0;
set global query_cache_size=0;
flush query cache;
reset query cache;
Время выполнения продолжает показывать 0 секунд.
Только переменная сервера, которую я не смог изменить, - "has_query_cache". Его значение "да", и когда я пытаюсь установить его "нет", Workbench говорит, что он доступен только для чтения.
Я также делаю;
set profiling=1;
run my select query
show profile for query 2;
Результат профилирования показывает это:
'starting', '0.000077'
'checking permissions', '0.000007'
'Opening tables', '0.000016'
'init', '0.000035'
'System lock', '0.000009'
'optimizing', '0.000013'
'statistics', '0.000094'
'preparing', '0.000008'
'executing', '0.000002'
'Sending data', '0.000016'
'end', '0.000002'
'query end', '0.000003'
'closing tables', '0.000005'
'freeing items', '0.000139'
'cleaning up', '0.000009'
Если я не ошибаюсь, это показывает, что кеши не используются правильно? Но я вижу 0 сек. для времени выполнения.
Изменить. Я выполняю запрос SELECT с использованием "SQL_NO_CACHE" следующим образом:
SELECT SQL_NO_CACHE col1,now() from mytable where col2="some_value"
(я добавил функцию now(), чтобы помочь предотвратить кэширование запросов)
Edit2: я использую innoDB, MySQL 5.6.10
Может кто-то мне помочь, потому что я не вижу, что здесь происходит.
Спасибо большое!