gpt4 book ai didi

python - cx_Oracle连接速度慢

转载 作者:太空宇宙 更新时间:2023-11-03 19:41:38 24 4
gpt4 key购买 nike

我正在使用cx_oracle和python 3.7连接到oracle数据库并执行存储在oracle数据库中的存储过程。

现在我正在连接到数据库,如下

dbconstr = "username/password@databaseip/sid"
db_connection = cx_Oracle.connect(dbconstr)
cursor = db_connection.cursor()

#calling sp here

cursor.close()
db_connection.close()

但在此代码中,cx_Oracle.connect(dbconstr) 的连接时间约为250ms,整个代码的运行时间约为500ms想要的是减少 250 毫秒的连接时间

我在python中使用flaskrest-api,这段代码就是用于此目的的,当整个响应时间为500ms时,250ms的连接时间太长了。

我还尝试通过声明连接对象的全局变量并仅创建和关闭游标来在应用程序的整个生命周期内维护连接,如下所示将给出250ms的结果

dbconstr = "username/password@databaseip/sid"
db_connection = cx_Oracle.connect(dbconstr)

def api_response():
cursor = db_connection.cursor()
#calling sp here
cursor.close()
return result

通过这种方法,响应时间会减少,但即使没有人使用该应用程序,也能保持连接。经过一段时间的空闲后,第一次请求的执行速度会降低,以秒为单位,这是非常糟糕的。

所以,我需要帮助来创建具有良好响应时间的稳定代码。

最佳答案

创建连接涉及数据库服务器上的大量工作:进程启动、内存分配、身份验证等。

您的解决方案 - 或使用 connection pool - 是减少 Oracle 应用程序中连接时间的方法。围绕应用程序中的使用点进行获取和释放的池对于计划内和计划外的数据库维护都有好处。这是由于池的内部实现造成的。

您的服务负载有多大?您可能想要启动一个池并获取/释放连接,请参阅 How to use cx_Oracle session pool with Flask gracefuly?Unresponsive requests- understanding the bottleneck (Flask + Oracle + Gunicorn)和别的。专业提示:保持池较小,并使最小和最大尺寸相同。

打开连接是否有问题?这有什么影响?有一些解决方案,例如共享服务器或 DRCP,但通常不需要使用它们,除非您的数据库服务器内存不足。

关于python - cx_Oracle连接速度慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60390965/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com