Подключение к локальной базе данных на том же экземпляре EC2 имеет низкую задержку, но для RDS все становится действительно высоким. См. Результаты ниже.
time mysql -u root -proot -h localhost -e 'show databases'
+--------------------+
| Database |
+--------------------+
| information_schema |
| biblical |
| mysql |
| performance_schema |
| phpmyadmin |
| shop |
+--------------------+
real 0m0.005s
user 0m0.003s
sys 0m0.000s
но подключение к моему экземпляру amazon RDS в той же зоне доступности дает мне это
+--------------------+
| Database |
+--------------------+
| information_schema |
| biblical |
| mysql |
| performance_schema |
| phpmyadmin |
| shop |
+--------------------+
real 0m0.090s
user 0m0.000s
sys 0m0.000s
0,005 к 0,090 оказывает большое влияние на производительность моего приложения (Magento), и это было для простого запроса. При выполнении запроса с более интенсивным использованием ЦП это может стать очень высоким. Есть ли способ улучшить это ??
Вы сравниваете локальную базу данных с узлом, подключенным к сети. Простое согласование TCP-соединения, процесс аутентификации и передача данных могут легко съесть эти 90 мс во многих сценариях. Вы можете смягчить эти результаты, реализуя пулы соединений на стороне клиента, но сетевая задержка для передачи данных все равно будет применяться.
Вы также должны настроить свой экземпляр RDS для своей рабочей нагрузки, поскольку настройки RDS по умолчанию довольно общие и подходят не для всех случаев использования. Кэширование запросов, тайм-ауты подключения, уровень изоляции транзакций ... все это может серьезно повлиять на ваши запросы каждый раз, когда ваша целевая производительность находится на уровне однозначных миллисекунд.
Помните, что RDS - это не что иное, как стандартное программное обеспечение SQL, работающее поверх экземпляров EC2. Если вы развертываете экземпляр EC2 в своем VPC и устанавливаете MySQL для выполнения ваших запросов к нему из вашего экземпляра Magento, вы должны ожидать такой же производительности запросов каждый раз, когда вы развертываете настройку EC2 + EBS с сопоставимыми ресурсами с вашим экземпляром RDS. По моему опыту, RDS и MySQL в EC2 обеспечивают одинаковую производительность, RDS «просто» автоматизирует типичные задачи работы системы.