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
我在 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