|
YUKI 님이 쓰신 글 :
: BDE에 대한 BLOB SIZE,BLOB TO CACHE에 대한 설명을 부탁드립니다.
안녕하세요. 정진후라고 합니다.
질문하신 두가지의 파라미터를 오라클DB에 대하며 설명하겠습니다.
참고로 인터베이스(볼란드의 DB)에서는 BLOB TO CACHE라는 파라미터는
참조되지 않습니다.
우선 BLOB SIZE에 대해 설명드리면,
DB의 BLOB field에 값을 넣고 참조하는 데에 빌더를 이용하는 경우, 저장 되는 값의 크기를
지정하여 주는 파라미터 입니다.
디폴트 값은 32인데 이것은 32K라는 뜻으로, TBlobStream이나 TBlobField의 메서드를 이용하여
BLOB필드에 그래픽 이미지를 올릴 경우 32K까지 올릴 수 있습니다(하나의 레코드 당)
이 말은 반대로 32K를 넘는 이미지는 32K까지 표현 할 수 있다는 말입니다.
예를 들어 50K의 이미지를 BDE의 디폴트 세팅으로 DB에 올린다음 다시 내리면
내려진 파일의 사이즈는 50K가 아닌 32768(32 * 1024)바이트가 되는 것입니다.
그러니 DB에 올릴 이미지의 최대치를 계산하여 적절한 값으로 세팅해 둘 필요가 있겠지요.
(최대치는 1000입니다)
다음으로 BLOB TO CACHE항목은 간단히 얘기해서 한번에 셀렉트(페치) 가능한 BLOB 필드의
수를 나타냅니다.(디폴트는 64)
예를들어 다음과 같은 테이블이 있다고 가정해 봅시다.
CREATE TABLE 1_HAKNYON
(
BAN NUMBER(2) not null.
BUNHO NUMBER(3) not null.
NAME VARCHAR2(20) null,
SAJIN blob null
)
/
위의 테이블은 어느 학교의 1학년 학생들의 사진을 넣어 둔 테이블입니다.
편의상 한 반에 60명이라고 생각하겠습니다.
그런데 여기서 TTable이자 TQuery를 이용해서 한반을 전부 셀렉트 해 보면
아무 문제 없이 셀렉트가 됩니다. (64 > 60)
그러나 1반부터 5반까지 한번에 셀렉하는 다음의 쿼리를 작성하면,
select * from 1_HAKNYON where BAN <= 5;
물론 300건의 데이터를 잘 셀렉하겠지요. BLOB필드가 없다면...
그러나 여기에서는 셀렉이 실패를 하던가("Invalid BLOB Handle...")
제대로 결과셋을 갖지 못합니다.(64건 이하만을 가진다)
그러므로 BLOB TO CACHE를 적절히 조절할 수 도 있고(최대치는 65535)
셀렉트해서 돌아 올 결과셋의 수를 판단해서 셀렉을 하는 두가지의 방법으로
잘못된 동작을 방지할 수 있습니다.
결론적으로 BLOB SIZE,BLOB TO CACHE는 BLOB 필드로 작업을 할 때
BDE어플리케이션의 동작을 규정하는 파라메터로서 자신의 어플리케이션이
다룰 BLOB필드의 크기와 수량을 어느 정도 파악해서 세팅을 해주어야
하겠지요.
그럼, 참고가 되기를 바랍니다.
|