загрузка памяти MySQL из поиска в реальном времени javascript - PullRequest
0 голосов
/ 21 февраля 2012

Я запускаю поиск в реальном времени через текстовое поле, которое при вводе пользователем возвращает совпадающие строки из базы данных mysql.Проблема в том, что это одна из главных функций сайта, которая действительно увеличила нагрузку на память в моей базе данных mysql.Поскольку каждое нажатие клавиши отправляет запрос в скрипт php для запроса к базе данных.

Я заставил php игнорировать любой поисковый запрос длиной менее 3 символов, но кроме этого, что еще я мог сделать?

Здесь есть несколько вариантов: Оптимизация поиска в реальном времени в Javascript

Но мне было интересно, следует ли мне извлекать данные из кэшированного листа XML или есть какой-то способ кэшировать сам MySQL.

Что в основном делают Google или некоторые другие крупные сайты, использующие эту функцию?

Ответы [ 2 ]

1 голос
/ 21 февраля 2012

Используйте механизмы индексации для индексации ваших данных и ускорения результатов поиска.Например: http://sphinxsearch.com/ или http://lucene.apache.org/core/

Настройка задания cron для индексации данных, PHP-API для sphinx и Zend Framework Module.Индексирование скорости много вещей, если используется правильно.

0 голосов
/ 21 февраля 2012

Я бы постарался максимально оптимизировать SQL-запрос:

  • без SELECT *
  • без JOIN
  • использовать WHERE только в индексированных полях

Кроме того, на стороне PHP:

  • кэширует результаты поиска по наиболее часто используемым терминам (чем чаще обновляются найденные данные, тем короче время жизни кэша)в простых текстовых файлах
  • используйте redis, если возможно, memcached

Также рассмотрите параллельный NoSQL db

И

Zend_Search_Lucene отлично подходит для низких/ Средний трафик сайтов (по сообщениям, возникают проблемы при масштабировании)

...