数据库连接池的概念
据库连接池(Connection pooling)是程序启动时建立足够的数据库连接,并将这些连接组成一个连接池,由程序动态地对池中的连接进行申请,使用,释放。
创建数据库连接是一个很耗时的操作,也容易对数据库造成安全隐患。所以,在程序初始化的时候,集中创建多个数据库连接,并把他们集中管理,供程序使用,可以保证较快的数据库读写速度,还更加安全可靠。
假设网站一天有很大的访问量,数据库服务器就需要为每次连接创建一次数据库连接,极大的浪费数据库的资源,并且极易造成数据库服务器内存溢出、拓机。
数据库连接是一种关键的有限的昂贵的资源,这一点在多用户的网页应用程序中体现的尤为突出.对数据库连接的管理能显著影响到整个应用程序的伸缩性和健壮性,影响到程序的性能指标.数据库连接池正式针对这个问题提出来的.数据库连接池负责分配,管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而不是重新建立一个。
Django中使用数据库连接池的流程
安装
pip install djorm_ext_pool
配置settings
INSTALLED_APPS=[
...,
djorm_pool,
...,
]
DJORM_POOL_OPTIONS = {
"pool_size": 20,
"max_overflow": 0,
"recycle": 3600, # the default value
# 其中DATABASE_WAIT_TIMEOUT为你定义的连接超时时间,
# 必须小于等于mysql里面的wait_timeout()
}
可能出现的要修改的BUG
$virtualenv_path/Lib/site-packages/djorm_pool/__init__.py 52行附近,做出如下修改。
def patch_mysql():
class hashabledict(dict):
def __hash__(self):
# return hash(tuple(sorted(self.items())))
return hash(frozenset(self))
版权声明:除特别注明外,本站所有文章均为王晨曦个人站点原创
转载请注明:出处来自王晨曦个人站点 » django中使用数据库连接池
出发地 akpwhkwkbkm [url=http://www.g663g58mzj4x04tpurvf06t505z5v22ks.org/]ukpwhkwkbkm[/url] kpwhkwkbkm http://www.g663g58mzj4x04tpurvf06t505z5v22ks.org/