Платформа API - обработка нумерации страниц для большой базы данных - PullRequest
0 голосов
/ 29 ноября 2018

У меня возникли проблемы с производительностью API Plateform по сравнению с базой данных 35,7 ГБ, которую я пытаюсь раскрыть.

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

Только для запроса по умолчанию (без фильтра) запрос подсчета занимает очень много времени (10 тыс. Секунд).Так что я прыгал, чтобы найти какой-то способ предотвратить разбиение на страницы в этом самом случае, так как я не в состоянии предотвратить такого рода использование API.

Я изучил README, код и документацию по производительностино не нашел достаточного ответа, поэтому я попытался переопределить службу PaginationExtension:

Я переписал метод isPartialPaginationEnabled () просто для замены первой строки, но я не удовлетворен результатом.

Поэтому я спрашиваю, есть ли способ, которого я не видел, или, возможно, другой подход к проблеме.Любая помощь будет приветствоваться.

Заранее спасибо.

1 Ответ

0 голосов
/ 08 декабря 2018

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

#api_platform.yaml
collection:
        pagination:
            client_enabled: true
            enabled_parameter_name: 'pagination' # optional

            client_items_per_page: true # Disabled by default
            items_per_page_parameter_name: itemsPerPage # Default value

            partial: true
            client_partial: true # Disabled by default
            partial_parameter_name: 'partial' # Default value
...