Google Cloud SQL ОЧЕНЬ МЕДЛЕННО

Я собираюсь перенести свой сайт на Google Cloud SQL, и я подписался на бесплатную учетную запись (D32).

После тестирования на таблице с записями 23k показатели были очень слабыми, поэтому я прочитал, что если я перейду от бесплатной учетной записи к полной платной учетной записи, у меня будет доступ к более быстрому процессору и жесткому диску... так что я сделал.

выступления все еще ОЧЕНЬ НЕДОСТАТКИ.

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

Несколько страниц нашей старой системы имеют более 1,5 тыс. запросов на страницу, в настоящее время мне удалось нажать время запроса mysql (выполнение и вытягивание данных) до 3.6 секунд для всех этих запросов, что означает, что MySQL принимает около 0,0024 секунды для выполнения запросов и возврата значений.. не самый большой, но приемлемый для этих страниц.

Я загружаю таблицу, связанную с этими многочисленными запросами в Google Cloud SQL. Я замечаю, что INSERT уже использует SECONDS вместо миллисекунды.. но я думаю, что это может быть параметр sync vs async. Я изменяю его на async, и время выполнения для вставки не похоже, что оно изменяется. пока что не большая проблема, сейчас я только тестирую запросы.

Я запускаю простой select * FROM <table>, и я замечаю, что он занимает более 6 секунд. Я думаю, что, возможно, кеш запросов нужно построить.. Я снова пытаюсь, и в это время требуется 4 секунды (исключая сетевой трафик). Я запускаю тот же запрос на моем резервном сервере после перезагрузки и без каких-либо подключений, и он занимает менее 1 секунды. Запустив его снова, 0.06 секунд.

Может быть, проблема в кеше, слишком большая... пусть попробуйте меньшее подмножество

select * from <table> limit 5;

  • на мой сервер: 0.00 секунд
  • GCS: 0.04

поэтому я решил попробовать немой выбор на пустой таблице, никаких записей вообще, только созданных только с одним полем

  • на мой сервер: 0.00 секунд
  • GCS: 0.03

профилирование не дает никаких сведений, кроме того, что кеш запросов не запущен в Google Cloud SQL и что выполнение запросов выглядит быстрее, но.. не...

Мой сервер:

mysql> show profile;
+--------------------------------+----------+
| Status                         | Duration |
+--------------------------------+----------+
| starting                       | 0.000225 |
| Waiting for query cache lock   | 0.000116 |
| init                           | 0.000115 |
| checking query cache for query | 0.000131 |
| checking permissions           | 0.000117 |
| Opening tables                 | 0.000124 |
| init                           | 0.000129 |
| System lock                    | 0.000124 |
| Waiting for query cache lock   | 0.000114 |
| System lock                    | 0.000126 |
| optimizing                     | 0.000117 |
| statistics                     | 0.000127 |
| executing                      | 0.000129 |
| end                            | 0.000117 |
| query end                      | 0.000116 |
| closing tables                 | 0.000120 |
| freeing items                  | 0.000120 |
| Waiting for query cache lock   | 0.000140 |
| freeing items                  | 0.000228 |
| Waiting for query cache lock   | 0.000120 |
| freeing items                  | 0.000121 |
| storing result in query cache  | 0.000116 |
| cleaning up                    | 0.000124 |
+--------------------------------+----------+
23 rows in set, 1 warning (0.00 sec)

Google Cloud SQL:

mysql> show profile;
+----------------------+----------+
| Status               | Duration |
+----------------------+----------+
| starting             | 0.000061 |
| checking permissions | 0.000012 |
| Opening tables       | 0.000115 |
| System lock          | 0.000019 |
| init                 | 0.000023 |
| optimizing           | 0.000008 |
| statistics           | 0.000012 |
| preparing            | 0.000005 |
| executing            | 0.000021 |
| end                  | 0.000024 |
| query end            | 0.000007 |
| closing tables       | 0.000030 |
| freeing items        | 0.000018 |
| logging slow query   | 0.000006 |
| cleaning up          | 0.000005 |
+----------------------+----------+
15 rows in set (0.03 sec)

Имейте в виду, что я подключаюсь к обоим серверам удаленно с сервера, расположенного в VA, и мой сервер находится в Техасе (даже если это не так важно).

Что я делаю неправильно? почему простые запросы занимают много времени? я чего-то не понимаю или не понимаю?

В настоящее время я не смогу использовать Google Cloud SQL, потому что страница с 1500 запросами займет слишком много времени (около 45 секунд)

Ответ 1

Кэш запросов еще не является особенностью Cloud SQL. Это может объяснить результаты. Тем не менее, я рекомендую закрыть этот вопрос, поскольку он довольно широк и не соответствует формату аккуратного и аккуратного Q & A. Есть слишком много переменных, которые не упоминаются в Q & A, и не ясно, какой решающий "ответ" будет похож на самый общий вопрос оптимизации, когда в игре играет так много переменных.

Ответ 2

Я знаю, что этот вопрос старый, но....

CloudSQL имеет плохую поддержку таблиц MyISAM, рекомендуется использовать InnoDB.

У нас была низкая производительность при переносе устаревшего приложения, после прочтения документа и обращения к платной поддержке нам пришлось перенести таблицы в InnoDB; Кэш запросов не был также убийцей.

Вы также можете найти позже, вам нужно будет настроить mysql conf через "флаги" на консоли Google. Пример: "wait_timeout" установлен слишком высоким по умолчанию (imo.)

Надеюсь, это поможет кому-то:)