-EDIT- Я НЕ МОГУ очистить кеш запросов MySQL, перезапустив сервер или несколькими запросами

Насколько я понимаю, я НЕ МОГУ очистить кеш запросов MySQL, перезапустив сервер.

Я пытаюсь получить результаты, аналогичные первому блоку кода, каждый раз, когда запускаю SQL

1- Это перед перезапуском Apache и MySQL (впервые с этими запросами):

<0.4280259609>
SELECT perma,title,body
FROM articles WHERE MATCH(title) AGAINST('emerald green bow out listeners')
LIMIT 0,30;
<0.0419809818>
INSERT DELAYED INTO searches (q, date, view) VALUES ('emerald-green-bow-out-listeners', '2012-02-09 15:18:09', 1) ON DUPLICATE KEY UPDATE date='2012-02-09 15:18:09', view=view+1;
<0.412530899>
SELECT q
FROM searches_read WHERE MATCH(q) AGAINST('emerald green bow out listeners') 
LIMIT 20;

2- Это перед перезапуском Apache и MySQL (ВТОРОЙ раз с этими запросами):

<0.0016009808>
SELECT perma,title,body
FROM articles WHERE MATCH(title) AGAINST('emerald green bow out listeners')
LIMIT 0,30;
<0.0007231236>
INSERT DELAYED INTO searches (q, date, view) VALUES ('emerald-green-bow-out-listeners', '2012-02-09 15:23:13', 1) ON DUPLICATE KEY UPDATE date='2012-02-09 15:23:13', view=view+1;
<0.0002520084>
SELECT q
FROM searches_read WHERE MATCH(q) AGAINST('emerald green bow out listeners') 
LIMIT 20;

3- Это после перезапуска Apache и MySQL:

<0.0021140575>
SELECT perma,title,body
FROM articles WHERE MATCH(title) AGAINST('emerald green bow out listeners')
LIMIT 0,30;
<0.001044035>
INSERT DELAYED INTO searches (q, date, view) VALUES ('emerald-green-bow-out-listeners', '2012-02-09 15:20:14', 1) ON DUPLICATE KEY UPDATE date='2012-02-09 15:20:14', view=view+1;
<0.0018870831>
SELECT q
FROM searches_read WHERE MATCH(q) AGAINST('emerald green bow out listeners') 
LIMIT 20;

4- С SQL_NO_CACHE:

<0.0009889603>
SELECT SQL_NO_CACHE perma,title,body
FROM articles WHERE MATCH(title) AGAINST('emerald green bow out listeners')
LIMIT 0,30;
<0.0002679825>
INSERT DELAYED INTO searches (q, date, view) VALUES ('emerald-green-bow-out-listeners', '2012-02-09 15:37:23', 1) ON DUPLICATE KEY UPDATE date='2012-02-09 15:37:23', view=view+1;
<0.0008900166>
SELECT SQL_NO_CACHE q
FROM searches_read WHERE MATCH(q) AGAINST('emerald green bow out listeners') 
LIMIT 20;

5- После СБРОСА КЭША ЗАПРОСА:

<0.0009641647>
SELECT SQL_NO_CACHE perma,title,body
FROM articles WHERE MATCH(title) AGAINST('emerald green bow out listeners')
LIMIT 0,30;
<0.0002360344>
INSERT DELAYED INTO searches (q, date, view) VALUES ('emerald-green-bow-out-listeners', '2012-02-09 15:39:01', 1) ON DUPLICATE KEY UPDATE date='2012-02-09 15:39:01', view=view+1;
<0.0008797646>
SELECT SQL_NO_CACHE q
FROM searches_read WHERE MATCH(q) AGAINST('emerald green bow out listeners') 
LIMIT 20;

6- После СМЫВНЫХ ТАБЛИЦ:

<0.0017900467>
SELECT SQL_NO_CACHE perma,title,body
FROM articles WHERE MATCH(title) AGAINST('emerald green bow out listeners')
LIMIT 0,30;
<0.0010399818>
INSERT DELAYED INTO searches (q, date, view) VALUES ('emerald-green-bow-out-listeners', '2012-02-09 15:40:19', 1) ON DUPLICATE KEY UPDATE date='2012-02-09 15:40:19', view=view+1;
<0.0017001629>
SELECT SQL_NO_CACHE q
FROM searches_read WHERE MATCH(q) AGAINST('emerald green bow out listeners') 
LIMIT 20;

После перезагрузки компьютера я получаю результаты, аналогичные первому блоку кода.

Обратите внимание на следующее: я перезагружаю компьютер, для первых запросов я получаю результаты, аналогичные первому блоку кода. Для вторых запросов с ДРУГИМ ПОИСКОВЫМ ТЕРМИНОМ, т. е. «способы, которые вы можете выбрать более экологичными», я СНОВА получаю результаты, аналогичные первому кодовому блоку.

Я хочу иметь возможность сравнивать время выполнения с различными структурами таблиц. Итак, как я могу правильно очистить кеш запросов MySQL???


person Community    schedule 09.02.2012    source источник
comment
Вы пытались запустить RESET QUERY CACHE; stackoverflow.com/questions/5231678 /   -  person Haim Evgi    schedule 09.02.2012
comment
Не работает. Я редактирую свой пост, пожалуйста, прочитайте его еще раз.   -  person    schedule 09.02.2012
comment
Я хочу иметь возможность сравнивать время выполнения с различными структурами таблиц. Итак, как я могу правильно очистить кеш запросов MySQL??? Я думаю, что если первый раз является исключением, то не сравнивайте его. Найдите теплый кеш, и вы увидите, что в большинстве производственных сред используются инструменты/скрипты для предварительного подогрева кеша. Если это то, что вы делаете в производственной среде, это то, что вы хотите сравнить.   -  person z5h    schedule 16.07.2013


Ответы (2)


Вы можете обнаружить, что причина такой скорости даже после перезапуска сервера mysql заключается в том, что данные также кэшируются операционной системой (возможно, в меньшей степени самим диском). Если вы хотите получить какую-то форму стандартного эталонного теста, у mysql есть набор тестов, который вы можете использовать, я полагаю.

Кроме того, если вы измените свои запросы на:

SELECT SQL_NO_CACHE perma,title,body MySQL не будет проверять кэшированные результаты в своем кэше запросов.

В любом случае я всегда игнорировал первое выполнение запроса - просто чтобы операционные и дисковые кеши разогрелись, поэтому основывайте результаты на последующих выполнениях, используя вышеизложенное.

person FreudianSlip    schedule 09.02.2012

Ты можешь использовать

RESET QUERY CACHE 

или, чтобы очистить кеш и закрыть все открытые таблицы

FLUSH TABLES
person Joe Stefanelli    schedule 09.02.2012