python sqlalchemy并行操作
嗨,我有一个多线程程序,所有线程都将在oracle上运行 DB。那么,sqlalchemy能够支持oracle上的并行操作吗python sqlalchemy并行操作,python,sqlalchemy,Python,Sqlalchemy,嗨,我有一个多线程程序,所有线程都将在oracle上运行 DB。那么,sqlalchemy能够支持oracle上的并行操作吗 tks 只要每个并发线程都有自己的会话,您就可以了。尝试使用一个共享会话会给您带来麻烦。只要每个并发线程都有自己的会话,您就可以了。尝试使用一个共享会话会遇到麻烦。OCI(oracle客户端接口)有一个参数OCI_THREADED,该参数具有连接被静音的效果,因此通过多个线程进行并发访问是安全的。这可能是您看到的文档所指的设置 cx_oracle,本质上是一个Python
tks 只要每个并发线程都有自己的会话,您就可以了。尝试使用一个共享会话会给您带来麻烦。只要每个并发线程都有自己的会话,您就可以了。尝试使用一个共享会话会遇到麻烦。OCI(oracle客户端接口)有一个参数OCI_THREADED,该参数具有连接被静音的效果,因此通过多个线程进行并发访问是安全的。这可能是您看到的文档所指的设置
cx_oracle
,本质上是一个Python->OCI桥,使用关键字参数“threaded”(如中所述)在其连接函数中提供对该设置的访问。文档声明默认情况下为假,因为它会导致“10-15%的性能损失”,尽管没有提供此信息的来源(性能统计数据应始终作为规则可疑地查看)
至于SQLAlchemy,随SQLAlchemy提供的cx_oracle
方言默认情况下将此值设置为True,并在通过create_engine()设置引擎时将其设置为False,因此在该级别上没有问题
但除此之外,SQLAlchemy推荐的使用模式(即每个线程一个会话,将连接保持在本地池中,在该池中它们将根据需要由函数签出)在任何情况下都会阻止对连接的并发访问。因此,您可能可以关闭create_engine()上的“threaded”设置,并在遵循常规使用模式的情况下享受可能带来的切实性能提升。OCI(oracle客户端接口)有一个参数OCI_threaded,该参数具有连接被静音的效果,因此通过多个线程进行并发访问是安全的。这可能是您看到的文档所指的设置
cx_oracle
,本质上是一个Python->OCI桥,使用关键字参数“threaded”(如中所述)在其连接函数中提供对该设置的访问。文档声明默认情况下为假,因为它会导致“10-15%的性能损失”,尽管没有提供此信息的来源(性能统计数据应始终作为规则可疑地查看)
至于SQLAlchemy,随SQLAlchemy提供的cx_oracle
方言默认情况下将此值设置为True,并在通过create_engine()设置引擎时将其设置为False,因此在该级别上没有问题
但除此之外,SQLAlchemy推荐的使用模式(即每个线程一个会话,将连接保持在本地池中,在该池中它们将根据需要由函数签出)在任何情况下都会阻止对连接的并发访问。因此,如果遵循常规使用模式,您可能可以关闭create_engine()上的“threaded”(线程化)设置,并享受可能带来的切实性能提升。tks,因为oracle官方文档说,您应该启用某种功能(尚不知道“某种功能”是什么…),以便oracle使用并行功能。。在sqlalchemy中我应该怎么做?tks,因为oracle的官方文件说应该启用某些东西(还不知道“某些东西”是什么…),以便oracle使用并行能力。。炼金术我该怎么做?