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

Запрос MySQL очень медленный на Amazon RDS, но действительно быстрый на моем ноутбуке?

Я хотел бы знать, знает ли кто-нибудь, почему это происходит. Я только что перешел на Amazon RDS для нашего веб-сайта, и наш самый большой запрос, выполнение которого занимает 0,2 секунды на моем MacBook, занимает 1,3 секунды на самом дорогом экземпляре RDS.

Очевидно, я отключил кеш запросов (и протестировал это) на моем локальном компьютере, и обе базы данных абсолютно одинаковы. InnoDB, оба имеют одинаковые индексы и т. Д. Это стоит нам целое состояние (2000 долларов в месяц) за самый быстрый экземпляр RDS, и я быстро теряю веру. Любые идеи?

Попробуйте поэкспериментировать с Предоставление IOPS что предлагает RDS. Независимо от размера экземпляра, количество операций ввода-вывода ограничено, и вы можете использовать параметры Provision IOPS за дополнительную плату для повышения производительности операций ввода-вывода.

Вы можете выделить до 3 ТБ хранилища и 30 000 операций ввода-вывода в секунду для каждого экземпляра базы данных. Для рабочей нагрузки с 50% операций записи и 50% операций чтения, выполняемой на экземпляре m2.4xlarge, вы можете реализовать до 25 000 операций ввода-вывода в секунду для Oracle и 12 500 операций ввода-вывода в секунду для MySQL. Однако, выделив до 30 000 операций ввода-вывода в секунду, вы сможете добиться меньшей задержки и более высокой пропускной способности. Фактическое реализованное количество операций ввода-вывода в секунду может отличаться от суммы, которую вы предоставили, в зависимости от рабочей нагрузки базы данных, типа экземпляра и выбора ядра базы данных. Дополнительные сведения см. В разделе «Факторы, влияющие на реализованный IOPS» в Руководстве пользователя Amazon RDS.

Вы можете преобразовать стандартное хранилище в хранилище с выделенным IOPS и получить стабильную пропускную способность и низкие задержки ввода-вывода. При этом вы столкнетесь с кратковременным снижением доступности. Вы можете независимо масштабировать IOPS (с шагом 1000) и хранилище «на лету» с нулевым временем простоя. Отношение предоставленных операций ввода-вывода в секунду к запрошенному хранилищу (в ГБ) должно составлять от 3 до 10. Например, для экземпляра базы данных с объемом хранилища 1000 ГБ вы можете выделить от 3000 до 10 000 операций ввода-вывода в секунду. Вы можете увеличивать или уменьшать количество операций ввода-вывода в секунду в зависимости от таких факторов, как сезонная изменчивость трафика ваших приложений.

AWS RDS Provision IOPS

У меня была аналогичная проблема на экземпляре сервера Rackspace. На выполнение запросов уходило время, даже если Innodb был настроен изо всех сил. В итоге я перешел на специализированный продукт для баз данных, предлагаемый Rackspace. Я предполагаю, что дисковые сервисы, такие как базы данных, не так хорошо работают на виртуализированных серверах, где диски используются совместно несколькими экземплярами. В целом, похоже, все согласны с тем, что mysql лучше всего работает на «голом железе» или другой инфраструктуре, оптимизированной для баз данных. Я могу ошибаться, но я пришел к такому выводу.

Основная причина должна заключаться в задержке между вашим компьютером и экземпляром Amazon RDS. Где вы расположены? Если вы находитесь в США, убедитесь, что вы используете RDS либо на Востоке США, либо на Западе США. Если вы находитесь в Европе, Японии или Азии, там тоже есть регионы.