API 平台 - 针对大型数据库处理分页

API Platform - Handling pagination against a big database

我在 API Plateform 性能方面遇到一些问题,针对我试图公开的 35.7 GiB 数据库。

我正在使用 collection 分页功能,因为这是一个需要。对于我的大多数查询,它工作正常,因为它们包含限制结果集的过滤器。

仅对于默认查询(无过滤器),计数查询花费了很长时间(10k 秒)。所以我希望找到一些方法来防止在这种情况下发生分页,因为我无法阻止这种 API 用法。

我查看了自述文件、有关性能的代码和文档,但没有找到足够的答案,所以我尝试覆盖 PaginationExtension 服务:

我重写了 isPartialPaginationEnabled() 方法只是为了替换第一行,但我对结果不满意。

所以我想问一下是否有我没有看到的方法,或者是否有其他方法可以解决这个问题。欢迎任何帮助。

提前致谢。

我不知道我是否理解你的意思。但是您可以禁用计数查询以提高分页性能,请在我的配置下方查看这种情况。

#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