超超哥AI云计算超哥讲AI 出品

社群入口

AI 超哥 Codex 副业群

扫码加入群聊,一起交流 AI、Codex 与副业实践。

原图注明二维码于10月20日前有效;若提示过期或无法入群,请等待更新二维码。

AI 超哥 Codex 副业群入群二维码在新窗口打开原图

关系加载、异步访问与连接池

MySQL、SQLAlchemy 与数据库设计#Python全栈#第十四阶段#MySQL、SQLAlchemy 与数据库设计#关系加载、异步访问与连接池约 857 字 · 2 分钟阅读
追问显示
点击任意追问卡片可收起 / 展开

懒加载为什么容易形成 N+1 查询?

追问 循环展示题目分类和标签时,哪些属性访问会触发额外 SQL?如何记录数量而不是凭代码行数判断?

joinedload 与 selectinload 有什么取舍?

追问 关联结果行放大、额外往返和集合大小怎样影响选择?集合 joinedload 的结果为何需要按要求调用 unique?

显式 join 与 eager loading 的目的有什么不同?

追问 过滤或排序关联字段与填充对象关系怎样分工?为什么添加 joinedload 不代表任意关联列都自动可供 WHERE 引用?

如何分批处理大查询结果,控制内存与事务时长?

追问 yield_per、驱动缓冲、游标分页和关联加载怎样相互影响?为何分批迭代不一定等于数据库端没有缓存完整结果?

使用 AsyncEngine 与 AsyncSession 需要哪些配套条件?

追问 异步驱动、连接 URL、await 调用与生命周期怎样配合?为什么不能只把函数改成 async 就继续随意调用同步数据库操作?

异步 ORM 中的隐式 I/O 为什么可能导致 MissingGreenlet 等错误?

追问 懒加载、过期字段与响应模型属性读取怎样触发查询?预加载、显式 refresh 和 awaitable 属性各如何选择?

并发查询为何不能随意共享一个 AsyncSession?

追问 gather 中不同任务如何安排会话?多个独立会话又为什么不自动构成同一个原子事务?

连接池大小、overflow 与等待超时各控制什么?

追问 多个工作进程的连接上限怎样汇总?池等待超时、数据库连接数耗尽与 SQL 慢查询如何区分?

pool_pre_ping 与 pool_recycle 各适合处理什么连接问题?

追问 连接取出时可用与事务中途断线有何区别?为什么检查存活不能保证整个事务不会失败或自动安全重试?

如何在应用关闭、进程分叉和后台任务中正确处理连接资源?

追问 Engine.dispose、会话关闭、异步循环与独立任务资源怎样安排?为什么不应把父进程已有数据库连接直接共享给子进程?

核对资料: SQLAlchemy 关系加载、异步 ORM、连接池。