[java] 데이터베이스 풀링이란 무엇입니까?

데이터베이스 연결 풀링의 개념과 달성 방법을 알고 싶었습니다.



답변

데이터베이스 연결 풀링은 데이터베이스 연결을 열어 두어 다른 사람이 재사용 할 수 있도록하는 방법입니다.

일반적으로 데이터베이스 연결을 여는 것은 특히 데이터베이스가 원격 인 경우 비용이 많이 드는 작업입니다. 네트워크 세션을 열고 인증하고 권한을 확인해야합니다. 풀링은 연결을 활성 상태로 유지하여 나중에 연결이 요청 될 때 활성 연결 중 하나가 다른 연결을 만드는 데 우선적으로 사용됩니다.

다음 몇 단락에 대해서는 다음 다이어그램을 참조하십시오.

  +---------+
  |         |
  | Clients |
+---------+ |
|         |-+  (1)   +------+   (3)    +----------+
| Clients | ===#===> | Open | =======> | RealOpen |
|         |    |     +------+          +----------+
+---------+    |         ^
               |         | (2)
               |     /------\
               |     | Pool |
               |     \------/
           (4) |         ^
               |         | (5)
               |     +-------+   (6)   +-----------+
               #===> | Close | ======> | RealClose |
                     +-------+         +-----------+

가장 간단한 형식으로, “실제”와 유사한 개방 연결 API 호출과 유사한 API 호출 (1)입니다. 먼저 풀에서 적절한 연결을 확인하고 (2) 사용 가능한 경우 클라이언트에 제공됩니다. 그렇지 않으면 새 것이 생성됩니다 (3).

A “에 적합한 연결은”다만 이미 하나 있다 (예 : 데이터베이스 인스턴스, 자격 증명, 그리고 아마도 다른 것들로) 올바른 정보를 사용하여 데이터베이스에 액세스 할 수 있습니다.

마찬가지로, 실제 닫기 연결을 실제로 호출하지 않고 나중에 사용하기 위해 연결을 풀 (5)에 넣는 닫기 API 호출 (4)이 있습니다. 어떤 시점에서 풀의 연결이 실제로 닫힐 수 있습니다 (6).

꽤 간단한 설명입니다. 실제 구현은 여러 서버 및 여러 사용자 계정에 대한 연결을 처리 할 수 ​​있으며, 일부 연결 기준을 미리 할당하여 일부는 즉시 준비 될 수 있으며, 사용 패턴이 조용 해지면 실제로 이전 연결을 닫을 수 있습니다.


답변

이미지는 천 단어를 말합니다 (paxdiablo는 멋진 설명을했습니다).

대체 텍스트

출처


답변

이름에서 알 수 있듯이. 소수의 사람들이 수영을 원한다면 같은 수영장에서 수영을 할 수 있습니다. 누군가 추가 할 때마다 새로운 수영장을 건설하는 것이 합리적입니까? 시간과 비용이 우선입니다.


답변

데이터베이스 연결 풀링은 데이터베이스에 대한 연결을 캐싱하여 데이터베이스에 연결할 때마다 새 연결을 설정하는 비용을 줄이기 위해 다음에 다시 사용할 수 있도록합니다.


답변

연결 풀링 구현을 위해 Apache Commons 라이브러리를 투명하게 사용할 수 있습니다. http://commons.apache.org/dbcp/

DBCP는 지원되는 최대 절전 모드 풀이기도합니다. http://www.informit.com/articles/article.aspx?p=353736&seqNum=4


답변

연결 풀링 개념은 Java뿐만 아니라 많은 프로그래밍 언어에서 사용됩니다. 새로운 연결 객체를 생성하는 것은 비용이 많이 들기 때문에 가상 풀을 생성하는 라이프 사이클에서 고정 된 수의 연결이 유지되고 유지됩니다. Java Just ( http://javajust.com/javaques.html )는이 페이지의 질문 14를 참조하십시오.


답변