FireBird Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
파이어버드 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
IBPhoenix
FireBird Main site
볼랜드포럼 광고 모집

FireBird Q&A
[404] Sweeping을 해야 합니다.
김백일 [cedar] 3559 읽음    2002-08-21 19:37
재원군 님이 쓰신 글 :
: : : : : : :
델파이로 재고관리 프로그램을 만들었는데..
:
몇달동안 사용하다보니 GDB파일의 용량이
:
너무 커져서 DELETE를 사용해서 이전달의
:
레코드들을 삭제하는 메뉴를 추가시켰습니다.
:
 
:
그렇구 나서 파일의 용량을 보니..
:
용량이 하나도 줄지 않았습니다.
:
 
:
DELTET문을 말고 다른 명령어가 있는지,
:
아니면 다른 방법이 있는건지 찾을수가
:
없어서 이렇게 글을 올립니다.
:
 
:
안녕히 게세요,...
: :

데이터베이스에서 DELETE 명령을 내리면, 논리적으로 레코드가 삭제될 뿐,
물리적인 GDB 파일의 용량이 바로 줄어들지는 않습니다.
(SQL 규약에서 이런 것까지는 규정하지 않았죠.)
매번 DELETE를 할 때마다 GDB파일이 줄어든다면 엄청난 성능의 저하가 따를 겁니다.

물리적으로 GDB 파일을 줄이기 위해서는 Sweeping을 실행해야 합니다.
(이런 개념은 물론 다른 DBMS에도 있습니다. 심지어 M$ Access도 있지요.)
미리 지정된 Sweeping Interval만큼 트랜잭션을 수행한 후에 자동으로 Sweeping이 일어나도록 설정되어 있습니다.

Sweeping Interval 설정 방법은 다음과 같습니다.
1) IBConsole로 관리하신다면, [Database]-[Properties...]에서 [Sweeping Interval]값을 바꾸세요.
Default로 20000번 트랜잭션 수행 후, 스위핑하도록 되어 있습니다.
2) Command line tools를 쓰신다면, (n번 트랜잭션 수행후 스위핑하려면) 명령 프롬프트에서
gfix -h n db_name
3) IBX에서 설정하는 방법
IBConfigService1->SetSweepInterval(n);

님의 경우와 같이, 간혹 수동으로 스위핑해야 할 경우도 있습니다.
방법은 다음과 같습니다.
1) IBConsole로 관리하신다면, [Database]-[Maintenance]-[Sweep]을 선택하면 됩니다.
2) Command line tools를 쓰신다면, (DB 이름이 db_name일때) 명령 프롬프트에서
gfix -s db_name
을 입력하면 됩니다.
3) IBX의 경우
  [델파이]
  IBValidationService1.Options := [SweepDB];
  [C++빌더]
  IBValidationService1->Options = TValidateOption() << SweepDB;






+ -

관련 글 리스트
402 DELETE를 사용했는데 파일의 크기가 .GDB파일의 크기가 줄지 않습니다. 재원군 2230 2002/08/21
404     Sweeping을 해야 합니다. 김백일 3559 2002/08/21
405         Re:Sweeping을 해야 합니다. 재원군 2510 2002/08/22
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.