본문 바로가기
Python

[Python] Mysql Connection Pool 사용하기

by bryan.oh 2021. 6. 18.
반응형

Python에서 Connection Pool?

연결 풀링은 연결이 요청 될 때마다 생성되는 것이 아니라 재사용됨을 의미합니다 .

Python을 통한 MySQL 연결 설정은 주로 MySQL 커넥터 Python API가 중간 계층 서버 환경에서 사용되는 경우 리소스와 시간이 많이 소요됩니다. 즉, 여러 MySQL 서버에 대한 다중 연결을 유지하고 연결을 쉽게 사용할 수 있어야하는 미들웨어입니다.

예를 들어, 애플리케이션은 데이터 검색 또는 데이터 업데이트를 위해 데이터베이스를 매우 자주 사용합니다. 모든 새 요청 애플리케이션을 처리하기 위해 새 MySQL 데이터베이스 연결을 생성하고 요청 완료 후 연결이 닫힙니다. 다시 새 요청에 대해 애플리케이션은 새 연결을 설정하고이 프로세스는 모든 새 요청에 대해 반복됩니다.

이 상황을 분석하면 응용 프로그램이 데이터베이스 연결 개체를 만들고 닫는 데 대부분의 시간을 소비한다는 것을 쉽게 알 수 있습니다. 이러한 유형의 환경에서는 연결 풀링을 사용하여 애플리케이션 성능을 향상시킬 수 있습니다.

연결 풀이라고하는 데이터베이스 연결의 메모리 캐시는 연결 재사용을 용이하게하기 위해 연결 풀링 모듈에 의해 데이터베이스 드라이버 제품의 최상위 계층으로 유지됩니다. 연결 풀링은 백그라운드에서 수행되며 애플리케이션 코딩 방식에 영향을주지 않습니다.

 

Connection Pool 구성할때 고려해야할 요소들

  • 데이터베이스 모듈이 지원할 수있는 최대 연결. 예를 들어 MySQL 커넥터 Python은 최대 32 개를 지원합니다.
  • Connection Pool의 Size를 구성 할 수 있습니다. 작성시 연결 풀 크기를 제공해야합니다. 일단 생성되면 크기를 변경할 수 없습니다
  • Connection Pool Size 를 넘어가면 오류가 발생합니다.

 

생성

dbconfig = {
  "host": "localhost",
  "port": "3306",
  "database": "test",
  "user": "bryan"
}

pool= mysql.connector.connect(pool_name = "mypool",
                              pool_size = 3,
                              **dbconfig)

 

사용

    con = pool.get_connection()
    c = con.cursor()
    c.execute('some query')
    res = c.fetchall()
    c.close()
    con.close()
728x90
반응형

댓글