DB에 액세스하는 윈도우 응용 프로그램을 작성할 수 있도록 해주는 COM 컴포넌트이다.
✔ COM (Component Object Model : 컴포넌트 객체 모델)
: 상호 대화성을 갖춘 컴포넌트를 만들기 위해 제정한 플랫폼 독립적인 객체지향 시스템
COM 객체의 인터페이스가 가지는 특성에 따라 COM 객체를 생성하거나 상호작용할 수 있도록 한다.
커서 = 결과 집합(레코드)의 현재 위치
DB는 내부 테이블을 기반으로 결과 집합을 반환한다.
결과 집합 = SELECT문에 의해 반환된 전체 행 집합.
커서의 위치는 현재 레코드에 대한 포인터라고 이해할 수 있다.
다양한 커서 타입이 존재하며,
커서 타입을 어떤 것으로 결정하는 지에 따라서 처리 속도에 영향을 줄 수 있다.
커서 서비스를 사용하지 않는다.
로컬 커서 라이브러리에서 제공하는 클라이언트 커서를 사용.
드라이버 제공 서버에서 사용할 수 없는 다양한 기능들(PageCount 등..)을 사용할 수 있다.
adUseClientBatch
와 동일한 속성
필요한 모든 데이터를 클라이언트로 전송하고, 클라이언트 커서를 사용해서 클라이언트 버퍼 메모리에 있는 데이터를 레코드 별로 조회한다.
데이터 제공자 커서나 드라이버 제공 커서를 사용
기본값
모든 데이터는 SQL 서버에 두고, 해당 데이터가 필요한 시점에 순서에 따라 각 레코드를 조회한다.
쿼리의 결과값 중 일부분만 표시하거나 사용해야 하면 adUseServer를 사용하는 것이 효율적이다.
adUseClient로 클라이언트 커서를 사용하는 경우, 전체 레코드를 전송하므로 결과값이 사용자에게 나타나는 시간이 지연되고, 반환되는 레코드 수가 너무 많은 경우 성능이 저하될 수 있음.
상황에 따라 적절히 사용하는 것이 좋음.
두 사용자가 동시에 동일한 열을 한 행에 업데이트 할 수 없도록 해준다.
데이터 무결성을 유지하는데 필요한 경우에만 사용해야 함
adLockBatchOptimistic
- 낙관적 일괄 업데이트
- 한 번에 여러 행을 가져온 뒤 일괄처리
- 클라이언트 전용 -> 비연결성 락
adLockOptimistic
- 낙관적 잠금
- Update 메소드를 호출할 때만 레코드를 잠금
- 충돌 가능성이 낮거나 충돌을 쉽게 해결할 수 있는 경우에 사용
- 작업할 때가 아니라 실제 저장할 때 락을 걸어줌 (긍정적 락)
adLockPessimistic
- 비관적 잠금
- 레코드 별 기록
- 잠금을 해제할 때까지 다른 사용자는 해당 레코드를 사용할 수 없음
- 메모리에 올리자 마자 미리 락을 걸어줌 (수동적 락)
adLockReadOnly
- 읽기 전용 레코드
- 데이터를 변경할 수 없음
- 가장 빠른 잠금 유형
adLockUnspecified
- 잠금 유형을 지정하지 않음
참고 링크
https://learn.microsoft.com/ko-kr/sql/ado/guide/ado-programmer-s-guide?view=sql-server-2017
https://learn.microsoft.com/ko-kr/sql/ado/guide/data/what-is-a-lock?view=sql-server-2017
https://rahxephon.tistory.com/616
https://blog.naver.com/mavis5/10081350324
https://gudle.net/174