데이터베이스 접속
Database connection데이터베이스 접속은 클라이언트소프트웨어가 같은 머신에 있든 없든 데이터베이스 서버 소프트웨어와 통신할 수 있도록 하는 컴퓨터 사이언스 기능입니다.일반적으로 결과 집합 형식으로 명령을 보내고 응답을 받으려면 연결이 필요합니다.
연결은 데이터 중심 프로그래밍의 핵심 개념입니다.일부 DBMS 엔진은 접속에 상당한 시간이 필요하기 때문에 성능 향상을 위해 연결 풀링이 개발되었습니다.데이터베이스에 대한 "열려 있고 사용 가능한" 연결 없이는 데이터베이스에 대해 어떤 명령도 수행할 수 없습니다.
연결은 기본 드라이버 또는 공급자에게 연결 문자열을 제공하여 구축됩니다. 연결 문자열은 특정 데이터베이스 또는 서버 및 인스턴스뿐만 아니라 사용자 인증 자격 정보(예: Server=sql_box; Database=Common)를 처리하는 방법입니다.사용자 ID=uid;Pwd=암호;)연결이 구축되면 자유롭게 열고 닫을 수 있으며 속성(명령 시간 초과 길이 또는 트랜잭션(존재하는 경우) 등)을 설정할 수 있습니다.Connection String은 사용하는 데이터액세스 인터페이스와 데이터 프로바이더의 지시에 따라 키/값 쌍의 세트로 구성됩니다.
많은 데이터베이스(Postgre 등)SQL)에서는 각 연결에서 한 번에 하나의 작업만 수행할 수 있습니다.데이터 요청(SQL Select 문)이 데이터베이스로 전송되고 결과 세트가 반환되면 연결은 열려 있지만 클라이언트가 결과 세트를 모두 사용할 때까지 다른 작업에 사용할 수 없습니다.SQL Server 2005(및 그 이후)와 같은 다른 데이터베이스에서는 이 제한이 적용되지 않습니다.그러나 연결당 여러 작업을 제공하는 데이터베이스는 일반적으로 한 번에 하나의 작업 작업만 허용하는 데이터베이스보다 훨씬 더 많은 오버헤드가 발생합니다.
풀링
데이터베이스 연결은 유한하고 비용이 많이 들기 때문에 데이터베이스 연결에서 수행되는 작업에 비해 작성하는 데 시간이 불균형적으로 오래 걸릴 수 있습니다.데이터베이스를 업데이트해야 할 때마다 애플리케이션이 데이터베이스 연결을 작성, 사용 및 닫는 것은 비효율적입니다.
접속 풀링은 이 문제를 완화하기 위해 설계된 기술입니다.데이터베이스 연결 풀을 생성하여 데이터베이스에 액세스해야 하는 응용 프로그램 간에 공유할 수 있습니다.
연결 풀에서 가져온 연결 개체는 대부분의 경우 실제 데이터베이스 연결을 둘러싼 래퍼입니다.래퍼는 풀과의 관계를 이해하고 응용 프로그램에서 풀의 세부 정보를 숨깁니다.예를 들어 래퍼 개체는 데이터베이스 연결의 "닫기" 메서드와 마찬가지로 호출할 수 있는 "닫기" 메서드를 구현할 수 있습니다.데이터베이스 연결 방법과 달리 래퍼의 메서드는 실제로 데이터베이스 연결을 닫지 않고 풀로 반환할 수 있습니다.응용 프로그램이 래퍼 개체의 메서드를 호출할 때 연결 풀링을 인식할 필요는 없습니다.
이 접근방식은 어플리케이션의 전체 수명 동안 접속을 열어두는 것이 아니라 필요할 때만 접속을 열고 작업이 완료되는 즉시 닫는 관행을 장려합니다.이와 같이 비교적 적은 수의 접속으로 다수의 요구를 처리할 수 있습니다.이를 멀티플렉싱이라고도 합니다.
한편 클라이언트/서버 아키텍처에서는 서버 상태를 관리할 수 있도록 영속적인 접속이 일반적으로 사용됩니다.이 "상태"에는 서버 측 커서, 임시 제품, 연결별 기능 설정 등이 포함됩니다.
연결 풀이 오버플로우하면 응용 프로그램 장애가 발생합니다.이 문제는 응용 프로그램이 연결을 요청할 때 풀의 모든 연결이 사용 중인 경우에 발생할 수 있습니다.예를 들어, 너무 많은 클라이언트가 웹 사이트에 액세스를 시도하거나 하나 이상의 작업이 차단되거나 단순히 비효율적인 경우 응용 프로그램에서 연결을 너무 오래 사용할 수 있습니다.
「 」를 참조해 주세요.
레퍼런스
- MSDN의 IDbConnection 인터페이스
- 관리 및 모니터링.NET Connections 화이트 페이퍼
- 접속의 확립과 유지에 관한 화이트 페이퍼.
- Hitchhiker's Guide to Visual Studio and SQL Server (7판)애디슨 웨슬리, 윌리엄 본, ISBN978-0321243621
