Какой метод разбиения на страницы является лучшим, чтобы нагрузка на сервер была минимальной - PullRequest
2 голосов
/ 16 октября 2010

Я провел небольшое исследование по разбиению на страницы, и из того, что я прочитал, есть два противоречивых решения сделать это

  1. Загружать небольшой набор данных из базы данных каждый раз, когдапользователь нажимает следующую задачу. Предположим, существует миллион строк, удовлетворяющих любым условиям WHERE.Это означает, что миллион строк извлекается, сохраняется, сортируется, затем большинство из них отбрасывается и извлекается только 20.Если пользователь нажимает кнопку «Далее», тот же процесс повторяется снова, извлекаются только другие 20. (ref - http://www.mysqlperformanceblog.com/2008/09/24/four-ways-to-optimize-paginated-displays/)

  2. Загрузить все данные из базы данных и кэшировать их ...Здесь тоже есть несколько проблем, упомянутых здесь - http://www.javalobby.org/java/forums/t63849.html

Так что я знаю, что мне придется использовать гибрид обоих, однако вопрос сводится к тому, какая операция дороже - повторные запросы.в базе данных для небольших порций данных или передачи большого набора результатов по сети

1 Ответ

0 голосов
/ 16 октября 2010

В моей компании именно такая ситуация, и мы выбрали гибрид.Наши данные являются табличными, поэтому мы отправляем их через AJAX на datatables . Это обеспечивает хорошее форматирование, сортировку, фильтрацию и отображение / скрытие столбцов пользовательского интерфейса.У Datatables есть отличное решение, которое будет «ставить в очередь вперед», называемое «конвейерной передачей», которое будет захватывать некоторое количество данных перед действием пользователя (в нашем случае, до 5 раз записей, которые они запрашивают), а затем пролистывать без запросов, пока не закончитсяданных.Это ОЧЕНЬ легко реализовать с помощью Datatables, но я подозреваю, что подобное решение не будет сложным, если вам придется писать его вручную, используя функциональность JJuery AJAX.

Я попытался выполнить полную загрузку и кешировать на 1,5 миллиона записей.базы данных, и это было крушение поезда.Клиент чуть не бросил меня, потому что разозлился, это было так медленно.После продолжительного совершенства AJAX клиент снова был счастлив.Но лучше никогда не доходить до этой точки.

Удачи.

...