2015-04-25 2 views
2

После развертывания в облаке Google мое приложение имеет очень большую задержку, более 5 секунд. После поиска проблемы выясните, что запросы в базе данных MySQL являются проблемой и очень долго выполняются.Google Cloud: запросы MySQL очень медленные

Вот несколько примеров из той же базы данных, что и на разных серверах. Команды выдаются через SSH непосредственно на SQL сервере:

select * from tbl1; 
local - 54343 rows in set (0.14 sec) 
shared hosting - 54343 rows in set (0.89 sec) 
google - 54343 rows in set (26.73 sec) 

select * from tbl2; 
local - 132 rows in set (0.00 sec) 
shared hosting - 132 rows in set (0.01 sec) 
google - 132 rows in set (0.20 sec) 

select * from tbl3 inner join tbl4 ON tbl4.tbl3_id = tbl3.id; 
local - 746 rows in set (0.00 sec) 
shared hosting - 746 rows in set (0.12 sec) 
google - 746 rows in set (0.95 sec) 

Я использую D1, но и пытались D32 ярус, но не получить гораздо лучшие результаты. Я использую настройки по умолчанию (флаги и т. Д.). Как вы думаете, что может вызвать проблему? Также я попробовал async файловую систему repc., Отключить некоторые флаги регистрации.

+0

Пожаловаться на Google. Это гнилая производительность. –

+0

Быстрый вопрос: есть ли tbl1 в формате InnoDB? –

+0

Да, все таблицы находятся в InnoDB, также пытались MyISAM, но аналогичные результаты –

ответ

0

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

Попробуйте свои запросы как локально, так и дистанционного управления с помощью SQL_NO_CACHE так:

выберите SQL_NO_CACHE * от tbl3 внутреннего соединения tbl4 ON tbl4.tbl3_id = tbl3.id;

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

8.8.1 Optimizing Queries with EXPLAIN

+0

Я пробовал выбрать sql_no_cache * из tbl1, который имеет около 50 000 строк. Я получаю результаты (локальный/текущий сервер/google): 0.20/0.40/24 или похожие запросы (0.04/0.10/1.9). Я не думаю, что эти запросы проблемы, я должен получить аналогичные результаты, а не более 20 секундных различий по 50 000 строк при простом выборе * из запроса. Также я думаю, что сервер облака sql Google не поддерживает кеш запросов, по крайней мере, я не могу найти способ включить его –

Смежные вопросы