我想提高 SQLAlchemy 的性能,在单个 API 调用中,我到处都有提交,我是否要聚合这些会话添加,并在 API 调用结束时进行提交?还是我到处都这样做有关系吗?
谢谢!
我想提高 SQLAlchemy 的性能,在单个 API 调用中,我到处都有提交,我是否要聚合这些会话添加,并在 API 调用结束时进行提交?还是我到处都这样做有关系吗?
谢谢!
提交应该在您想要保存所有这些记录(对象)或不保存的相关调用的逻辑块之后发生。如果一个失败,你希望他们都失败(回滚)。另一方面,将不相关的调用组合到一个事务中可能会导致意外的副作用,发生意外的错误,并且当它真的应该保存得很好时,你不打算的东西会被回滚,这不是你正在做的事情但我以前见过这个性能。
无论如何,通常情况下,我在每次 API 调用结束时都有一个提交,因为我认为 API 调用是全有或全无的交易,我怀疑如果我在某处遇到唯一键违规时我保存了一半的数据,调用者会不会高兴在中间。
我在 SA 文档中找到了这个页面,处理会话解释了如何布置我的会话、事务等。 上下文会话的生命周期