Jump to content
과거의 기술자료(읽기 전용): https://tech.devgear.co.kr ×
과거의 기술자료(읽기 전용): https://tech.devgear.co.kr

[DocWiki 번역] FireDAC.Stan.Option.TFDFetchOptions.CursorKind


Recommended Posts

Docwiki에 있는 "FireDAC.Stan.Option.TFDFetchOptions.CursorKind"를 번역한 글: 번역일: 2022년 3월 29일)

위로 가기: [DocWiki 번역] TFDFetchOptions

(이 글은 "설명" 부분만 번역했음. 클래스 선언, 부모, 메소드, 프로퍼티, 프로퍼티, 유닛 정보 등등은 CursorKind 원문에 정리된 것을 볼것)

 

설명 (Description)

사용할 커서(Cursor) 유형을 FireDAC 명령(command) 또는 데이터셋(DataSet)에 아래와 같이 지정한다.

담아올 결과 세트(Result Set)를 오픈할 때, FireDAC 명령(command) 또는 데이터셋(DataSet)에서 사용할 커서의 유형을 CursorKind에 지정한다. CursorKind는 반드시 FireDAC 명령 또는 데이터셋을 준비(prepare)하기 전에 미리 지정해야 한다.

이미 데이터셋에서 사용하고 있는 CursorKind를 바꾸려면, 먼저 Disconnect 메소드를 호출해야 한다.

CusrorKind로부터 영향을 받는 것들:

  • 첫 레코드를 반환(return)하거나 또는 결과 세트를 오픈(open)하는데 걸리는 시간
  • 결과 세트 전체를 반환하는데 걸리는 시간
  • 오픈 커서를 여러개 사용 능력
  • 커서 안정성
  • 사용되는 DBMS 리소스
  • TFDTable 모드

 

옵션 설명
ckAutomatic 커서 유형을 드라이버가 자동으로 선택한다. 선택 기준은 다른 Fetch Options와 결과 세트의 구조이다. 
ckDefault 드라이버는 클라이언트 측 기본(default) 커서를 사용한다. 기본 커서는 쿼리가 실행될 당시의 레코드를 스냅샷하여 제공한다. 데이터 가져오기 성능 면에서 가장 좋을 수 있다. 하지만, 첫번째 레코드 반환 시간은 좀 더 오래 걸린다. 그 이유는 Open이 호출되면 클라이언트 쪽으로 결과 세트가 모두 전달되어야 하기 때문이다. 일부 DBMS에서는 연결 당 활성 기본 커서를 하나만 허용한다. 
ckDynamic 드라이버는 서버 측 동적(dynamic) 커서를 사용한다. 동적 커서 행(Row)은  커서가 활성화되어 있는 중에도, 해당 쿼리 테이블에서 발생되는 업데이트에 의해 영향을 받을 수 있다. 첫 레코드를 반환하는 시간은 덜 걸릴 수 있지만, 전체 레코드를 반환하는 데 걸리는 시간은 더 오래 걸릴 수 있다.
ckStatic 드라이버는 서버 측 정적(static) 커서를 사용한다. 정적 커서는 쿼리가 실행될 당시의 레코드를 스냅샷하여 제공한다. 데이터 가져오기 성능은 동적 커서와 유사하다.
ckForwardOnly  드라이버는 서버 측 앞으로만 가는 (Forward Only) 커서를 사용한다. FireDAC에서 앞으로만 가는 커서는 동적 또는 정적 커서와 유사하다. FireDAC 데이터셋을 스크롤하는 능력을 제어하려면 Unidirectional 프로퍼티를 사용한다.

기본값은 ckAutomatic 이다.

FireDAC 드라이버 대부분은 몇가지 커서 유형을 지원하거나, 또는 이 옵션을 전혀 지원하지 않는다. 자세한 내용은 해당 DBMS의 도움말을 참고한다. CursorKind= ckAutomatic인 경우, FireDAC이 선택하는 실제 커서는 다음과 같다.

DBMS 조건 실제 커서 유형
MS SQL Server  MS-SQL 서버 2005버전 또는 그 이상인 경우.
또는,  ModefmExactRecsMax 또는 fmAll인 경우.
또는, DirectExecuteTrue로 지정된 경우.
Default 커서
  기타 경우 Static 커서
IBM DB2  -- Forward Only 커서
Sybase SQL Anywhere,
Microsoft Access 
결과 세트에 BLOB 필드가 있는 경우 Dynamic 커서
  기타 경우 Default 커서
PostgreSQL ModefmExactRecsMax 또는 fmAll인 경우. Default 커서
  기타 경우 Static 커서
기타 -- Default 커서

TFDTable에서, ckAutomatic 옵션은 고유 식별 필드가 있으면, 라이브 데이터 창(live data window) 모드를 활성화 한다. ckDynamic 옵션은 무조건 라이브 데이터 창 모드를 활성화 하고, 이때 DB 테이블에 고유(unique) 키가 없으면 예외를 발생시킨다. 다른 옵션 유형은 라이브 데이터 창 모드를 비활성화하고, TFDQuery처럼 작동하는 TFDTable에서는, 해당 TFDTable을 표준 모드로 지정한다.

 

기타 자료 (See Also)

이 댓글 링크
다른 사이트에 공유하기

이 토의에 참여하세요

지금 바로 의견을 남길 수 있습니다. 그리고 나서 가입해도 됩니다. 이미 회원이라면, 지금 로그인하고 본인 계정으로 의견을 남기세요.

Guest
이 토픽(기고/질문)에 답하기

×   서식있는 텍스트로 붙여넣기.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   이전에 작성한 콘텐츠가 복원되었습니다..   편집창 비우기

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

중요한 정보

이용약관 개인정보보호정책 이용규칙 이 사이트가 더 잘 작동하기 위해 방문자의 컴퓨터에 쿠키가 배치됩니다. 쿠키 설정 변경에서 원하는 설정을 할 수 있습니다. 변경하지 않으면 쿠키를 허용하는 것으로 이해합니다.