Советы по повышению производительности API
Несколько советов по повышению производительности запроса огромных данных через API.
Улучшите время отклика API
Иногда мы можем наблюдать, что API возвращает ответ более чем за 10 секунд. Ниже приведены некоторые советы по улучшению производительности или способу уменьшить время отклика.
Добавьте кластерные и некластерные индексы
Всякий раз, когда мы увеличиваем нагрузку на сервер, индексы повышают производительность. Как мы все знаем, мы можем добавить один кластерный индекс и несколько некластерных индексов в таблицу.
Индекс базы данных несколько похож на оглавление в книге. Индексирование поможет быстро получить запрос к базе данных (поскольку для запроса данных не требуется проходить всю таблицу, но он находит блоки данных из индекса).
Так что индексирование улучшит производительность в поиске. Мы должны применить некластерный индекс к каждому полю поиска.
Сократите число объединений (joins)
Попробуйте использовать меньше внутренних объединений в запросах SQL.
Сделайте неподтвержденное чтение
Установите уровень изоляции транзакции, который читался бы как неподтвержденный в процедурах. Это улучшит производительность, чтобы получить результат. Вы можете посмотреть разницу с помощью плана выполнения.
DataReader данных вместо dataAdapter/dataSet
DataReader - лучший выбор для приложений, которым требуется оптимизированный доступ только для чтения и прямой передачи данных. Чем раньше вы загрузите данные из DataReader, закроете DataReader и закроете соединение с базой данных, тем выше будет производительность.
For loop вместо foreach
Если вы хотите пересечь коллекцию, то foreach - это хорошо. Если вы хотите выполнить какую-то операцию, используйте for loop, он увеличивает производительность.
Уменьшите сложность
Попробуйте использовать меньшую сложность в логике. Как только сложность выше (например, n * n, n * n * n), производительность ухудшается, пожалуйста, не используйте вложенные for loop
Если записей много, мы можем реализовать пейджинг на SQL-сервере. Это улучшит производительность.
Мы также можем реализовать SQL-пейджинг для повышения производительности. мы можем отправить pageSize и pageNumber в качестве параметра в API.
Иногда мы сталкиваемся с проблемами производительности из-за визуализации интерфейса. Подобно тому, как API возвращает результаты в течение 2 секунд, но для рендеринга или зависания страницы пользовательскому интерфейсу требуется более 10 секунд из-за рендеринга большого количества записей. Так что мы представляем способ рендеринга любого количества записей без застревания страницы.
angular(UI) толкует логику для более чем 10K записей. Если мы не используем пейджинг, мы можем использовать виртуальную прокрутку. Продемонстрируем реализацию виртуальной прокрутки.
При таком подходе мы не будем отображать все записи в пользовательском интерфейсе. мы будем рендерить определенное количество записей в пользовательском интерфейсе. После этого, когда пользователь прокрутит страницу вниз, записи будут отображаться соответственно.
Код страницы component.ts
Определите определенные переменные.
- public pageSize=10;
- public skip=0;
- public view=new Array(this.pageSize).fill({}).map(x=>({}));
Способ привязки данных в сетке
- public bindGrid(px) {
- const currentView = px.slice(this.skip, this.skip + this.pageSize);
- const removeCount = this.view.length - currentView.length;
- if (removeCount > 0) {
- this.view.splice(currentView.length - 1, removeCount);
- }
- currentView.forEach((item, index) => {
- if (!this.view[index]) {
- this.view[index] = {};
- }
- Object.assign(this.view[index], item);
- });
- this.gridview = {
- data: this.view,
- total: px.length
- }
- }
Код страницы HTML
- <kendo-grid [data]="gridview"
- [skip]="skip"
- [pageSize]="pageSize"
- [scrollable]="'virtual'"
- [height]="500" />
Заключение
Этот пост представляет собой способ повысить производительность для получения результата от API и рендеринга большого количества записей в пользовательском интерфейсе с помощью кендо-сетки.