Как улучшить загрузку более 25 миллионов строк в одной таблице. У меня есть реализация с данными, которая требует такого типа принуждения. У меня уже есть другие решения с laravel. Но возможно ли улучшить производительность моего запроса ajax, чтобы моя таблица могла быть загружена данными в течение 30-40 секунд?
Мой DataTable загружает данные с помощью ajax-вызова https://datatables.net/reference/option/ajax
В настоящее время вы получаете свои данные с помощью цикла php или json?
Не надо. Полная остановка, только не надо. Браузеры не предназначены для OLAP, и это будет просто пустой тратой времени, пытаясь получить столько данных в браузере и, вероятно, привести к сбою компьютеров ваших конечных пользователей (которые, вероятно, будут иметь более низкие характеристики, чем ваша машина разработчика). Вместо этого реализуйте сортировку/пейджинг/и т. д. на стороне сервера, поскольку вы используете таблицы данных: datatables.net/manual/на стороне сервера
Если вы пытаетесь загрузить миллион записей, браузер не поддерживает столько записей в таблице. вот почему ССЫЛКА проверьте этот вопрос о стеке.
@RoryMcCrossan Спасибо за предложение. Я уже изучил это, и ничего из этого не помогло.
@mafortis Я загружаю данные с помощью ajax-вызова с данными для актуальности, это JSON, который захватывает эти данные для представления. Представление, отображаемое в шаблоне, имеет пустую таблицу. Сразу после загрузки документа происходит вызов ajax.
@freedomn-m Что касается сбоя браузера, я до сих пор не видел подобных проблем. Но я знаю, что эта проблема сохранится в будущем, поскольку данные явно увеличиваются, и именно поэтому я поднял этот вопрос. Я попытался реализовать вариант на стороне сервера, предоставляемый таблицами данных в этом конкретном случае, но в результате я обнаружил проблему с экспортом данных в формате pdf и excel.
@ThataL Мои данные загружаются несколькими кусками. это позволило загрузить такой большой объем данных в одну таблицу.
@divyamohankashyap хорошо, если вы уже получаете свои данные в json, вы прошли 50% пути, поскольку ответ ниже я предлагаю вам также использовать обработку на стороне сервера, все, что вам нужно сделать, это использовать переменную jason в JavaScript и зациклить данные там, он позаботится обо всем остальном. PS Я действительно не предлагаю вам использовать пакет для таблиц данных, так как в этом нет необходимости, если вы хотите, вы можете добавить его в свое приложение, js очень просто и не утяжеляет ваше приложение, добавляя много пакетов, здесь я объяснил, как stackoverflow.com/questions/55016159/…

Вы не должны загружать все эти записи сразу. Это будет очень медленно, и вы мало что можете с этим поделать.
Решением для этого является реализация Обработка на стороне сервера. Таким образом, вы можете изменить запрос к базе данных на стороне сервера, чтобы загружать только те записи, которые должны отображаться. Уже есть несколько пакетов для Laravel, которые создадут для вас эти запросы. Например: yajra/laravel-datatables.
Мои данные загружаются в несколько кусков. Обработка на стороне сервера здесь не поможет, потому что я дал пользователям кнопку экспорта, которая не будет работать, когда я включу обработку на стороне сервера. И о пакете Laravel Yajra. У меня есть последний вариант, если я не получу здесь полезного решения.
@divyamohan kashyap: я полагаю, вы можете настроить свою логику на стороне сервера, чтобы подавать DataTable из правильного фрагмента, в зависимости от запрошенных строк. На самом деле не имеет смысла останавливать ваше приложение на целую вечность только для того, чтобы загрузить записи, которые пользователь не может увидеть, понять или обработать сразу. С этой точки зрения serverSide: true — оптимальное решение. Что касается вашего экспорта, вы можете переопределить встроенные инструменты экспорта DataTables своими собственными, скажем, при нажатии кнопки «экспорт» вы вызовете вызов ajax и ответите документом, подготовленным на стороне сервера.
Если вы загружаете 25 миллионов строк в datatable за 30 секунд, это звучит так, как будто производительность уже потрясающая. Однако, чтобы сделать этот объем данных действительно пригодным для использования в пользовательском интерфейсе, вам следует рассмотреть возможность реализации разбиения по страницам, фильтрации и сортировки. Если вам нужна более конкретная помощь для достижения этой цели, добавьте в вопрос более подробную информацию о вашей текущей логике.