You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQLAlchemy中使用AsyncAttrs/awaitable_attrs加载关联对象的性能影响

AsyncAttrs/awaitable_attrs 关联加载的性能与重复查询问题

1. 加载未加载的关联关系时是否会阻塞事件循环?

会阻塞。正如官方文档所说,awaitable_attrs 的实现等效于调用 AsyncSession.run_sync(),而这个方法是在事件循环内部同步执行传入的可调用对象。当你首次访问未预加载的关联属性时,底层会执行同步的数据库查询操作——这类传统IO操作不会主动让出事件循环,会导致整个事件循环被阻塞,直到查询完成。如果你的异步服务追求高并发性能,这种场景下需要谨慎使用,避免影响其他请求的处理效率。

2. 已通过预加载加载的关联关系是否会被重复查询?

不会重复查询。awaitable_attrs 会先检查目标关联对象是否已经被加载到内存中(比如通过 selectinload、joinedload 这类预加载方式提前获取)。如果关联数据已经存在,就直接返回内存中的对象,不会触发新的数据库查询;只有当关联数据未被加载时,才会执行查询去获取数据。

内容的提问来源于stack exchange,提问作者DurandA

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 19:10:54