2012-01-16 2 views
2

Bold for Delphi 개체 지속성 프레임 워크를 사용하는 응용 프로그램의 데이터베이스에 대한 유지 관리 작업을하고 있습니다. 이 데이터베이스는 수년간 생산되어 왔으며 여러 테이블이 상당히 커졌습니다. 그 중 하나는 Bold의 트랜잭션 관리와 관련이있는 BOLD_CLOCKLOG입니다.트리밍 BOLD_CLOCKLOG 테이블

이 테이블을 자르고 싶습니다 (최대 1.2GB, 2006 년 1 월의 항목 포함).

누구나 시스템에서이 오래된 정보가 필요하지 않음을 확인할 수 있습니까? bolds 문서에서

+0

백업을 수행 한 다음 압축 할 수 없습니까? :-) –

+1

그게 그 계획이지만 시험은 없으니 잠시 동안 괜찮아 보이는 상태로 놓고 싶지는 않아요. 그리고 몇 주 후에 드물게 작동하는 폭탄을 터뜨렸습니다. – DaveK

+0

1 년 전의 것들을 누설하는 것은 꽤 안전해야합니다. 트랜잭션 로그에 "키 프레임"이 없다는 것을 믿기가 어렵습니다. 즉, 로그 읽기의 길이가 무한대로 확장되면 굵은 체의 성능은 하한이 없으며 무제한 수준까지 느려질 수 있습니다 .:-) –

답변

1

Bold_ClockLog는 선택적 테이블이며 정수 시간 소인과 해당 DateTime 값 사이의 맵핑을 저장하는 것이 목적입니다.

이렇게하면 임의의 개체에 대한 마지막 수정 날짜를 찾을 수 있습니다.

이 기능이 필요하지 않은 경우 테이블을 비우면 아무런 문제가 발생하지 않습니다.

Bold_ClockLog 외에도 Bold_XFiles는 커지는 경향이있는 또 하나의 선택적 테이블입니다. 그러나 Bold_ClockLog와 달리 Bold_XFiles는 비울 수 없습니다.

두 테이블 모두 모델 태그 값에서 켜거나 끌 수 있습니다.

2

:

BOLD_CLOCKLOG

가 해당하는 실제 시간으로 타임 스탬프 열에서 사용되는 트랜잭션 번호를 매핑 할 수 있도록 (예 : 2001-01-01 12시 34분) persistence mapper는 타임 스탬프와 시간을 가진 로그를 저장합니다. 일반적으로이 로그는 각 데이터베이스 작업마다 작성되지만 데이터베이스 트래픽이 매우 많은 경우 ClockLogGranularity 속성을 설정하여이 로그 작성 빈도를 제한 할 수 있습니다. OnGetCurrentTime 이벤트는 모든 클라이언트가 동일한 시간을 갖도록 구현되어야합니다.이 테이블의 사용은 태그 값으로 제어 할 수 있습니다. Model.UseClockLog

이렇게 Boldobjects를 버전 지정하는 데 사용됩니다. 개체 참조 확장 기능 버전 번호을 굵게 표시합니다. 응용 프로그램에이 기능이 필요하지 않은 경우이 항목을 데이터베이스에 삭제할 수 있습니다.

대담한 애플리케이션에서는이 기능을 사용하지 않습니다. 왜 모델에서 Bold_ClockLog를 끄고 큰 테이블을 떨어 뜨려 응용 프로그램을 사용하려고하는지 간단히 테스트하지 마십시오. 나는 틀린 무엇이 틀린 경우에 그것을 이렇게 즉시 말한다.

나는 또한 우리 자신의 사용자 정의 objecthistoy가 있다고 말할 수 있습니다. ObjectHistory 클래스의 Time, user 및 작업에 대한 메모가있는 큰 문자열 (TStringList.DelimetedText)입니다. 이것은 볼드가 objecthistory를 내장 한 우리의 필요에 더 잘 맞습니다. 단점은 물론 히스토리에 대한 로깅이 완료되면 코드에 호출을 추가해야한다는 것입니다.