Назад | Перейти на главную страницу

Почему запросы к базе данных в AWS RDS выполняются намного медленнее?

Я работал над функциями, чувствительными к производительности. Я занимаюсь разработкой локально, запустив сервер MySQL на моем Mac. На моем компьютере один ключевой запрос выполняется примерно за 1,2 секунды, что для меня приемлемо. Все работало достаточно быстро, поэтому я решил переместить его в базу данных AWS RDS Aurora, чтобы я мог начать использовать новую систему в производстве.

Но как только я начал подключаться к RDS вместо моего локального сервера, запросы начали принимать более чем в два раза пока. И это сравнение времени, необходимого для выполнения фактического запроса, не зависящего от скорости сети. Вот как я измеряю.

Я увеличил количество экземпляров, которые RDS использует для db.r3.4xlarge, который имеет 122 ГБ оперативной памяти, Intel Xeon E5-2670 v2 (Ivy Bridge) и 16 виртуальных ЦП. Моя локальная машина имеет 32 ГБ оперативной памяти и Intel Core i7 с тактовой частотой 4 ГГц. Я мало что знаю об этом, но похоже, что база данных в облаке работает на более мощном оборудовании, независимо от того, на какую метрику вы смотрите.

Главный вопрос: Что еще я могу изучить, чтобы облачная база данных работала так же быстро, как моя локальная машина?

Вещи, которые казались правдоподобными причинами, но не кажутся:

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

Я действительно немного растерялся. Если у кого-то есть идеи или советы, мы будем очень признательны!

Я последовал совету Тима в комментариях и подписался на AWS Support, чтобы поговорить с кем-нибудь об этом. Объяснение было:

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

Поэтому, если мы работаем над 1 запросом, маловероятно, что Aurora будет работать так же быстро, как ваша локальная машина.

Еще немного поболтали, потом я попытался использовать RDS MySQL вместо Aurora, и это сработало! Почти так же быстро, как моя локальная машина, с гораздо более дешевым оборудованием.