dbutils oracle连接,python - DBUtils 连接池减少oracle数据库的连接数

为了解决项目中Oracle数据库连接过多的问题,通过分析代码发现因多进程导致大量不必要的连接。解决方案是引入DBUtils的连接池功能,并结合多线程,替代原来的多进程连接方式。DBUtils是一个Python模块,提供安全有效的数据库访问。通过安装DBUtils,调整配置参数如mincached和maxcached,实现数据库连接池,从而降低数据库连接次数,减轻系统负担。
摘要由CSDN通过智能技术生成

问题:

接到需求,告知项目的oracle连接次数过多,对系统造成太过大的负担,要求减少oracle数据库的连接次数

分析:

仔细分析代码以后,发现产生问题的原因,在于之前要求提升oracle监控的监控速度时,将oracle监控的脚本代码,拆分成了多个子进程。导致每次循环服务器都会产生子进程次数的数据库连接,产生了过多的不必要连接

解决方案:

讨论分析过后,决定更改代码的架构,用DBUtils的连接池功能+多线程(http://www.cnblogs.com/fnng/p/3670789.html)的组合,替代现有的 多进程+子进程对数据库的单次连接

DBUtils:

DBUtils 是一套允许线程化 Python 程序可以安全和有效的访问数据库的模块。

下载并安装:

$ wget https://pypi.python.org/packages/65/65/89afee016aca7fbb5c1642e6ef3864d80af808dc5efa7367b328093eece9/DBUtils-1.1.tar.gz

tar -zxf DBUtils-1.1.tar.gz

cd DBUtils-1.1

python setup.py install

使用:

参考:http://blog.163.com/power_mr/blog/static/138744007201391823253744/

导入:import DBUtils.PersistentDB

dbapi :数据库接口

mincached :启动时开启的空连接数量

maxcached :连接池最大可用连接数量

maxshared :连接池最大可共享连接数量

maxconnections :最大允许连接数量

blocking :达到最大数量时是否阻塞

maxusage :单个连接最大复用次数

#不用连接池的MySQL连接方法

import MySQLdb

conn= MySQLdb.connect(host='localhost',user='root',passwd='pwd',db='myDB',port=3306)

cur=conn.cursor()

SQL="select * from table1"

r=cur.execute(SQL)

r=cur.fetchall()

cur.close()

conn.close()

#用连接池后的连接方法

import MySQLdb

from DBUtils.PooledDB import PooledDB

p

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值