스레드에서 데이터베이스를 요청하는 데 시간이 너무 오래 걸린다고 생각되면 Python 데이터베이스 연결 풀을 사용하여 이러한 측면의 단점을 개선할 수 있습니다. 다음은 기사의 구체적인 소개입니다. 기사에서는 Python 데이터베이스 연결 풀링에 대해 더 잘 이해하고 있습니다.
어제 데이터베이스 요청을 위해 스레드 500개 열기 테스트를 했는데 시간이 얼마나 걸릴지 모르겠습니다. 즉, 동시에 많은 스레드를 실행하면 효율성이 얼마나 됩니까? 그래서 데이터베이스 연결 풀 기술을 사용하면 이러한 연결 작업을 크게 향상시킬 수 있지 않을까 생각했습니다. 잠시 정리한 후 자주 데이터베이스 연결을 설정하고 닫는 효율성과 연결 풀 간의 성능 비교를 테스트해 보겠습니다!
1. DBUtils 모듈 학습
DBUtils는 실제로 두 개의 하위 모듈을 포함하는 Python 패키지입니다. 하나는 DB-API 2 모듈에 연결하기 위한 것이고 다른 하나는 일반적인 PyGreSQL 모듈에 연결하기 위한 것입니다. . 전역 DB-API 2개 변수
SteadyDB.py
를 사용하여 데이터베이스 연결을 안정화
PooledDB.py
연결 풀
PerciousDB.py
영구적인 데이터베이스 연결 유지(영구 연결)
SimplePooledDB.py
간단한 연결 풀 PS: 먼저 DB-API를 추출해 보겠습니다
설치하면 최상위 모듈인 PertantDB와 PooledDB의 두 가지 모듈에 대한 기본 서비스가 제공됩니다.
DBUtils.PerciousDB는 DB-API 2 모듈을 사용하여 견고하고 스레드로부터 안전한 영구 데이터베이스 연결을 구현합니다. 다음 그림은 PertantDB 사용 시 연결 계층 단계를 보여줍니다. DBUtils.PooledDB는 DB-API 2 모듈을 사용하여 견고하고 스레드로부터 안전하며 캐시되고 재사용 가능한 데이터베이스 연결을 구현합니다. 다음 그림은 PooledDB를 사용할 때의 워크플로를 보여줍니다.
현재 선택할 수 있는 두 가지 모듈이 있습니다: PertantDB와 PooledDB, 둘 다 성능을 향상하고 데이터베이스 안정성을 유지하기 위해 데이터베이스 연결을 재사용하도록 설계되었습니다.
python setup.py install
특정 모듈 학습:
DBUtils.SimplePooledDB는 매우 간단한 데이터베이스 연결 풀 구현입니다. 본격적인 PooledDB 모듈보다 많은 기능이 부족합니다. DBUtils.SimplePooledDB는 기본적으로 Webware의 구성 요소인 MiscUtils.DBPool과 유사합니다. 데모 프로그램이라고 생각하시면 됩니다.
DBUtils.SteadyDB는 DB-API 2에서 설정된 원래 연결을 기반으로 "강력한" 데이터베이스 연결을 구현하는 모듈입니다. "하드" 연결은 연결이 닫힌 후 또는 작업 수 제한이 사용된 후 다시 연결된다는 의미입니다. 일반적인 예는 프로그램이 계속 실행 중이고 데이터베이스에 액세스해야 하는 동안 데이터베이스가 다시 시작되는 경우 또는 프로그램이 방화벽 뒤의 원격 데이터베이스에 연결되어 방화벽이 다시 시작될 때 상태가 손실되는 경우입니다.
일반적으로 SteadyDB를 직접 사용할 필요는 없으며 그냥 대신 사용하면 됩니다.