【笔记】python的sqlalchemy数据库连接池原理的说明

sqlalchemy数据库连接池的使用方式是延迟初始化,就是说一开始你调用create_engine(...)后创建的那个数据库池是空的,你后面通过session.connection()或者engine.connect()才开始创建连接,

每当你创建一个连接,你调用engine.pool.status()就可以看到数据库连接池处于什么状态,下面说明以下status()的输出说明:

‘Pool size: 16  Connections in pool: 1 Current Overflow: 1 Current Checked out connections: 16‘

Pool size 是你指定的数据库池的大小

Connections in pool 是在池子中可以使用的连接有多少个

Current Overflow 这个参数说明当前存在的连接数超过Pool size多少个,当overflow (初始为Pool size的负值) 超过max_overflow(默认为10)之后就不能创建新的连接了,只能等待,换句话说:你的数据库连接池的大小虽然只有Pool size个,

          但是你可以创建的连接数则是Pool size+max_overflow, 没创建一个连接overflow 都会加1,到等于max_overflow时候就不能在创建连接了

Current Checked out connections 是被占用的连接数

注:这些都是看源码以及在python终端查看engine/session/engine.pool等的各种函数调用和属性获取到的,重要的查看地方: __dict__, __class__;在终端创建连接时注意用变量持有连接,不然你将会看到数据库连接池的状态不变

  engine.pool.checkedin() 显示闲着的连接数个数,大小从0 ~ Pool size

  engine.pool.checkedout() 显示被占用的连接数个数,大小从0 ~ Pool size+max_overflow

调用session.connection()或者engine.connect(),从数据库池中拿连接,如果有闲着的连接就直接返回,没有闲着的就看下是否能创建连接(即数据库池满了),如果能就创建新连接,如果不能,则等待连接,超时时间可配置,请查看文档

调用Connection.close()释放连接,将数据库连接放回连接池,而不是真的关闭连接

时间: 2024-10-05 05:07:28

【笔记】python的sqlalchemy数据库连接池原理的说明的相关文章

Mybatis深入之数据库连接池原理

Mybatis深入之数据库连接池原理 简介 主要记录Mybatis数据库连接池实现原理.如何使用连接池来管理数据库连接的.连接池如何向外提供数据库连接.当外部调用使用完成之后是如何将数据库连接放回数据库连接池的. 准备 有前面的相关文章的铺垫.这里就不再从Mybatis数据库相关信息的初始化以及何时创建一个真正的数据库连接并且向外提供使用的.这两方面的过程可以参见Mybatis深入之DataSource实例化过程和Mybatis深入之获取数据库连接两篇文章. 了解Mybatis数据库连接池如何配

数据库连接池原理

——连接池用什么数据结构实现? —— 实现连接池的代码 —— 线程安全问题 [数据库连接池的设计思路及java实现][ http://blog.csdn.net/shijinupc/article/details/7836129] [Java的JDBC数据库连接池实现方法][ http://developer.51cto.com/art/200907/137300.htm ]   ?   [设计数据库连接池,要考虑哪些问题?] 1. 有一个简单的函数从连接池中得到一个 Connection. 2

Python实现Mysql数据库连接池

python连接Mysql数据库: Python编程中可以使用MySQLdb进行数据库的连接及诸如查询/插入/更新等操作,但是每次连接MySQL数据库请求时,都是独立的去请求访问,相当浪费资源,而且访问数量达到一定数量时,对mysql的性能会产生较大的影响.因此,实际使用中,通常会使用数据库的连接池技术,来访问数据库达到资源复用的目的. python的数据库连接池包 DBUtils: DBUtils是一套Python数据库连接池包,并允许对非线程安全的数据库接口进行线程安全包装.DBUtils来

DBCP数据库连接池原理分析

在比较大的项目中,需要不断的从数据库中获取数据,Java中则使用JDBC连接数据库,但是获取数据库的连接可是相当耗时的操作,每次连接数据库都获得 .销毁数据库连接,将是很大的一个开销.为了解决这种开销,则使用了对象池的技术.程序启动时,先创建一定数量的数据库连接对象,然后只要一用到就直接从对象池中取出连接对象,然后使用完成后不对其销毁,而是再返回到对象池中,这样使连接池对象能反复使用,虽然增加了启动时所需要的时间但是提高了响应速度,对象池也相当于是一个缓存. 这里有DBCP的一些配置参数,通过这

数据库连接池原理详解与自定义连接池实现

实现原理 数据库连接池在初始化时将创建一定数量的数据库连接放到连接池中,这些数据库连接的数量是由最小数据库连接数制约.无论这些数据库连接是否被使用,连接池都将一直保证至少拥有这么多的连接数量.连接池的最大数据库连接数量限定了这个连接池能占有的最大连接数,当应用程序向连接池请求的连接数超过最大连接数量时,这些请求将被加入到等待队列中. 连接池基本的思想是在系统初始化的时候,将数据库连接作为对象存储在内存中,当用户需要访问数据库时,并非建立一个新的连接,而是从连接池中取出一个已建立的空闲连接对象.使

spark 大型项目实战(七):用户访问session分析(七) --数据库连接池原理

**文章地址:http://www.haha174.top/article/details/257789** 1.谈谈数据库连接池的原理 ------------- 这次我们采取技术演进的方式来谈谈数据库连接池的技术出现过程及其原理,以及当下最流行的开源数据库连接池jar包. 一.早期我们怎么进行数据库操作 1.原理:一般来说,java应用程序访问数据库的过程是: ①装载数据库驱动程序: ②通过jdbc建立数据库连接: ③访问数据库,执行sql语句: ④断开数据库连接. 2.代码 Public

数据库连接池原理及应用

1.运作原理 在实际应用开发中,特别是在WEB应用系统中,如果JSP.Servlet或EJB使用JDBC直接访问数据库中的数据,每一次数据访问请求都必须经历建立数据库连接.打开数据库.存取数据和关闭数据库连接等步骤,而连接并打开数据库是一件既消耗资源又费时的工作,如果频繁发生这种数据库操作,系统的性能必然会急剧下降,甚至会导致系统崩溃.数据库连接池技术是解决这个问题最常用的方法,在许多应用程序服务器(例如:Weblogic,WebSphere,JBoss)中,基本都提供了这项技术,无需自己编程,

总结代理模式 并根据数据库连接池原理来模拟实现自己的数据库连接池工具类

代理模式 需求:对系统中已有的某个类的功能,进行扩展(增强) 要求:在不修改源码的情况下,对已有的功能进行增强 静态代理 抽象接口:保证包含增强功能的对象和原有功能的对象,对外提供相同的方法 目标对象:封装了原有功能 代理对象:封装了增强功能和原有功能(通过持有一个目标对象的引用实现) 问题:代码不够灵活,产生大量冗余工作 动态代理 动态代理的实现API: Proxy : 帮助程员产生代理对象,提供产生代理类和代理对象的静态方法 InvocationHandler : 句柄接口,拦截到,所有代理

数据库连接池两种配置方式详解

数据库连接池:   负责分配.管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而再不是重新建立一个:释放空闲时间超过最大空闲时间的数据库连接来避免因为没有释放数据库连接而引起的数据库连接遗漏:数据库连接池原理:   连接池基本的思想是在系统初始化的时候,将数据库连接作为对象存储在内存中,当用户需要访问数据库时,并非建立一个新的连接,而是从连接池中取出一个已建立的空闲连接对象.使用完毕后,用户也并非将连接关闭,而是将连接放回连接池中,以供下一个请求访问使用.而连接的建立.断开都由