2012-02-16 3 views
2

코드에서 메모리 누수를 찾으려고합니다. 소프트웨어가 실행되면서 메모리 사용량이 점점 커지고 있음을 알 수 있습니다. 각 작업은 데이터베이스에 레코드를 추가합니다.데이터베이스 : 커밋 이전에 데이터는 어디로 이동합니까?

그런 다음 변경 사항을 적용하기 전에 INSERT 명령의 데이터는 실제로 어디로 갈까요? 데이터가 실제 데이터베이스 파일에 추가되고 "요청 된 경우 롤백"플래그가 붙습니까? 또는 내부 메모리에만 저장되고 커밋 요청이 완료되면 덤프됩니까?

도움이된다면 지금은 Access를 사용하고 있습니다.

+0

메모리 누수가 트랜잭션과 관련이 있는지 의심 스럽습니다. 트랜잭션은 로컬 테이블에 저장됩니다. 그러나 양식을 사용하는 정규 버전의 데이터의 경우 액세스 트랜잭션을 사용하지 않으므로 여기에서는 일반 작업이 적용되지 않습니다. –

+0

아니요, 아니요, 저는 메모리 누수와 관련하여 트랜잭션을 범인으로 간주하지는 않습니다. SQL 명령 (예 : INSERT, UPDATE, DELETE 등)이 어디에서 작동하는지 궁금합니다. –

답변

1

"거래 시작"의 일부로 "데이터"는 어디에도 가지 않거나 어떤 방식 으로든 변경되지 않고 발급 된 명령 목록을 기록합니다. 그런 다음 "롤백"으로 트랜잭션을 취소하면 지시 사항이 삭제되고 변경 사항이 적용되지 않습니다. 그렇지 않으면 "확약"이 발행 된 경우 저장된 명령이 올바른 순서로 실행됩니다.

지침이 로컬 테이블에 저장되어 있으므로 (Albert가 언급 한 것처럼) 로컬 파일이 메모리 전체에서 열리면 메모리가 증가하는 것을 볼 수 있습니다 (따라서 왜 우리는 프론트 엔드 데이터베이스와 백엔드 데이터베이스를 Access

또한 여러 SQL을 실행하는 경우 SQL 문을 저장하기 전에 구문 검사를 수행해야한다는 점에 유의할 가치가 있습니다. 중간 단계에서 실패하지 않고 의도하지 않은 상태로 데이터를 남겨 두게됩니다.

"지침"에 대한 사과 나는 평신도의 말로 알고 있지만 그것이 의미가 있기를 바랍니다.

관련 문제