Я создаю интернет-магазин и стараюсь повысить производительность, сводя к минимуму запросы MYSQL.
Хорошо ли кэшировать запросы mysql через txt-файл, а затем извлекать это вместо запроса? Это то, что я делаю "
Является ли это более эффективным, чем выполнение sql-запросов каждый раз? Любые проблемы с безопасностью, которые я пропускаю?
Если вы только запускаете приложение, memcache намного быстрее, чем использование текстовых файлов.
Текстовые файлы будут выполнять эту работу, и описанные вами шаги имеют смысл, но memcache будет быстрее и справится с большой тягой для вас.
Если вы сделаете тест, затраты на создание уникального хеша и выполнение ввода-вывода на диск будут больше, чем просто выборка с сервера MySQL.
ИМХО, не беспокойтесь. Хорошие мысли, но MySQL уже имеет внутреннее кэширование и настройку производительности.
Сосредоточьтесь на создании своего приложения, так как «преждевременная оптимизация – это корень всего зла».
Ваш метод немного похож на перенос проблемы из одного угла в другой.
Введение кеша не улучшает производительность Mysql. Лучше посмотрите, какие запросы на самом деле медленны, а затем оптимизируйте запросы.
Если вы хотите добиться кеширования с учетом будущей масштабируемости, я бы рекомендовал настроить службы RESTful, которые запускают запросы в базе данных, а затем используя функции кеширования HTTP вашего веб-сервера для кэширования результатов. Шаги будут выглядеть так:
Подробнее о кешировании PHP с Apache можно узнать здесь . То, что вы сейчас делаете, близко к этому, но ваше приложение сможет лучше масштабироваться с помощью сервис-ориентированного подхода.
Просто захотелось взвесить в моих двух центах, что последовательный червь и thephpdeveloper сказали, что тот факт, что память / RAM намного быстрее, чем любая связанная с диском операция ввода IO, которую вы придумываете. Бросьте столько же бара, сколько вы можете в mysql, и вам не нужно будет заниматься управлением кешем, если вам действительно не нужно обновляться до кластера, и для этого нужны другие соображения. Memcache дает вам больше контроля над управлением кешем, и, следовательно, вам нужно делать больше ошибок.
Я бы начал с создания приложения, а затем проверил его и оптимизировал запросы и / или добавил управление кешем по мере необходимости.
Две вещи, на которые нужно обратить внимание, сравнительный анализ и профилирование . О единственном способе, с помощью которого вы можете сравнить значимо, – это использовать две метрики этих diciplines вместе, используя вашу текущую конфигурацию mysql, php.ini, httpd.conf, .htaccess, переписывать текст и многое другое – это бенчмаркинг и профилирование действующие технологии выполняют эту задачу.
Это бессмысленно, вы должны кэшировать результаты .
Время сборки запроса должно быть довольно незначительным. (Если это не так, вы не используете SQL, как предполагалось , генерируя вместо этого потоки глупого select
s, где было бы разумным join
)
При загрузке с диска запрос, очевидно, склонен замедлять работу.
(ОС может кэшировать диск IO, хотя и затрудняет его обнаружение)
В любом случае, на самом деле требуется время, чтобы получить результаты из базы данных, а затем снова вставить их в веб-страницу по шаблону. На вашем месте я бы кэшировал на диск стилизованные результаты заданного запроса, и когда его спросили, если кеш не очень старый, я бы прямо readfile()
их.
Вы настроили кеш запросов MySQL?