Я работаю над тем, что использует Zen Cart. Смена сайта из Zen Cart не является обязательной в данный момент. Сайт работает нормально в большинстве случаев, но каждую неделю сайт теряет производительность. Обсуждения с поставщиком сервера показывают, что это почти наверняка вызвано слишком большим количеством записей в базу данных, что приводит к неэффективному использованию ввода-вывода. Сервер базы данных отличается от веб-сервера, но если у сервера базы данных недостаточно доступного ввода-вывода, сайт пострадает (поскольку почти каждая страница на сайте выполняет вызов базы данных). Я ищу решение, чтобы это исправить, и считаю, что нашел, но хотел бы получить отзыв.
A) Определите, могу ли я изменить корзину zen для использования INSERT DELAY вместо INSERT, чтобы страницы не зависали при определенных запросах. Однако Zen Cart - это огромная система, и внесение такого широкомасштабного изменения может привести к отрицательным последствиям (например, операторы DELAY не будут выполняться для таблиц, которые были заблокированы с помощью LOCKED TABLES, или на последующих страницах, которые не отражают должным образом действия, предпринятые пользователь на предыдущих страницах, поскольку они могут загружаться без выполнения предыдущих запросов).
B) Разверните гибридное хостинговое решение, в котором сайт работает в облаке, но база данных работает на сервере с несколькими дисками SAS, чтобы увеличить скорость записи и тем самым быстрее освободить ввод-вывод для последующих запросов. Я хотел бы избежать этого, так как это значительно увеличивает расходы.
Кто-нибудь сталкивался с этой проблемой с Zen-Cart? Что вы думаете об этих исправлениях? Какие исправления вы использовали?
UPDATE:
В итоге я использовал Query Cache от Data Diggers, и это очень помогло. Я также узнал, что zencart использует getimagesize () большую часть своего времени загрузки, поэтому я создаю способ получить эти значения из кэша. Большая часть задержки запроса MySQL была вызвана чрезмерными операциями чтения, а не операциями записи. С тех пор, как я внедрил изменения, ситуация значительно улучшилась. Я отмечу ответ ЭйДжея как правильный, так как он действительно ответил на то, что я первоначально спрашивал.