데이터베이스 풀링이란 무엇입니까?
저는 단지 데이터베이스 연결 풀링의 개념과 그것이 어떻게 이루어지는지 알고 싶었습니다.
데이터베이스 연결 풀링은 다른 사용자가 데이터베이스 연결을 재사용할 수 있도록 열린 상태로 유지하는 데 사용되는 방법입니다.
일반적으로 데이터베이스 연결을 여는 것은 비용이 많이 드는 작업이며, 특히 데이터베이스가 원격인 경우에는 더욱 그렇습니다.네트워크 세션을 열고 인증하고 권한을 확인하는 등의 작업을 수행해야 합니다.풀링은 연결을 활성화 상태로 유지하여 나중에 연결이 요청될 때 다른 연결을 만드는 것보다 먼저 활성 연결 중 하나를 사용합니다.
다음 몇 단락에 대해서는 다음 다이어그램을 참조하십시오.
+---------+
| |
| Clients |
+---------+ |
| |-+ (1) +------+ (3) +----------+
| Clients | ==#==> | Open | ==> | RealOpen |
| | | +------+ +----------+
+---------+ | ^
| |(2)
| /------\ +---------+ (6) +-----------+
| | Pool | --> | Cleaner | ==> | RealClose |
| \------/ +---------+ +-----------+
(4) | ^
| |(5)
| +-------+
#==> | Close |
+-------+
가장 간단한 형태로, 그것은 단지 API 호출(1)일 뿐입니다.Open
"진짜"와 비슷한 API 호출,RealOpen
. 먼저 풀에 적합한 연결(2)이 있는지 확인하고, 연결이 가능한 경우에는 풀을 클라이언트에 제공합니다.그렇지 않으면 새 것이 생성되고(3) 클라이언트에 제공됩니다.
"적합한 연결"이란 올바른 정보(예: 데이터베이스 인스턴스, 자격 증명 등)를 사용하여 데이터베이스에 이미 액세스할 수 있는 연결입니다.
마찬가지로 우리가 있습니다.Close
실제를 호출하지 않는 API 호출 (4) RealClose
, 나중에 사용할 수 있도록 연결을 다시 풀(5)에 넣습니다.어느 시점에서 풀의 연결이 실제로 닫힐 수 있습니다(6).이 작업은 풀과 호출을 지속적으로 모니터링하는 스레드에 의해 수행될 수 있습니다.RealClose
그들이 충분히 나이가 많거나 어떤 다른 조건들이 충족된다면.
그것은 아주 단순한 설명입니다.실제 구현은 앞에서 언급한 것처럼 임의로 더 복잡할 수 있습니다.
- 여러 서버에 대한 연결을 처리하고 여러 사용자 계정을 사용합니다.
- 임의의 규칙을 사용하여 연결을 실제로 종료해야 하는 시기, 연결 기간, 유사한 연결 수 등을 결정합니다.
데이터베이스 연결 풀링은 보다 일반적인 경우로 캐시된 것을 유지하는 것으로 시작하는 데 비용이 많이 들 수 있습니다.비슷한 답변을 통해 쓰레드 풀(또는 백업 테이프 풀, 통신 장치, 레이저 커터 등 수십 가지 다른 것)에도 적용할 수 있습니다.
모든 경우에, 이전에 온라인 상태였던 리소스를 사용하는 것보다 다른 리소스를 온라인 상태로 전환하는 것이 "비용이 많이 드는" 경우가 가장 좋습니다.
이 연결된 답변은 리소스를 시작할 때 또는 완전히 종료할 때를 결정하는 한 가지 가능한 알고리즘을 보여줍니다.
이미지는 천 마디 말을 합니다. (팍스디아블로는 놀라운 설명을 해주었습니다.)
이름 그대로.만약 몇몇 사람들이 수영을 하고 싶다면, 그들은 같은 수영장에서 수영을 할 수 있는데, 누군가가 추가할 때마다 새로운 수영장을 건설하는 것이 정말 말이 됩니까?시간과 비용이 우선입니다.
데이터베이스 연결 풀링은 단순히 데이터베이스에 연결을 캐싱하여 다음에 다시 사용할 수 있도록 함으로써 데이터베이스에 연결할 때마다 새 연결을 설정하는 비용을 절감하는 것입니다.
자바 뿐만 아니라 다양한 프로그래밍 언어에 걸쳐 연결 풀링(Connection Pooling) 개념.새 연결 개체를 생성하는 데는 비용이 많이 들기 때문에 고정된 수의 연결을 생성하고 라이프사이클에서 유지 관리하여 가상 풀을 생성하는 Java Just(http://javajust.com/javaques.html )(이 페이지의 질문 14 참조)
언급URL : https://stackoverflow.com/questions/4041114/what-is-database-pooling
'programing' 카테고리의 다른 글
의사 요소의 적층 순서를 부모 요소 아래에 설정할 수 있습니까? (0) | 2023.10.14 |
---|---|
선택한 열에 대해 표에서 NA 값을 바꾸는 방법 (0) | 2023.10.14 |
signalR : /signalr/hubs가 생성되지 않음 (0) | 2023.10.14 |
CSS를 사용하여 텍스트를 미러링/플립할 수 있습니까? (0) | 2023.10.14 |
POST 변수 가져오기 (0) | 2023.10.14 |