2011-05-02 3 views
4

실제로 행이 데이터베이스에 언제 삽입됩니까? "INSERT"문이 끝났습니까? 또는 "INSERT"문 다음에 "COMMIT"문이 끝났습니까?DB에 행이 실제로 삽입되는시기는 언제입니까?

+0

, 그것은 확인하고 다른 기능의 제품에 대기하지 될 때까지 행이 임시 테이블에 넣고/트리거 등. COMMIT가 호출되면 실제로 테이블에 기록됩니다. – Zach

답변

3

나중에 생각해보십시오. 여기에있는 원칙이 일반적으로 적용됩니다.

트랜잭션 로그의 전체 지점은 ACID이 INSERT가 완료된 것처럼 정전시에도 작동하는지 확인하는 것입니다. INSERT는 복구 단계의 일부로 롤 포워드되거나 롤백됩니다 (대부분의 RDBMS에서)

따라서 트랜잭션 로그 항목이 미디어에 저장된 것으로 확인되는 것이 중요합니다. 그러면 INSERT가 커밋 할 수 있습니다.

변경된 행을 포함하는 데이터 페이지는 디스크 으로 끝나고 최종적으로 (검사 점 등)이지만 성공적인 커밋 시점에는 필요하지 않습니다.

그러나 데이터 페이지는 메모리에 있으며 사용할 수 있습니다.

참고로 INSERT를 사용하면 페이지 분할, 색인이 업데이트되고, 트리거가 발생하여 초기화가 간단 해졌습니다.

그리고 데이터가 디스크에 끝나는 경우이 방법은 하나 또는 다른 문제가되지 않습니다 내가 데이터를 얻을 수있는만큼하고 정전, 말의 경우 여전히

명곡하지만 안전 SQL Server에 대한 관련 : SQL Server 2000 I/O Basics

그리고 제가 정리 한 것은 지금까지 내가 이해 Write Ahead Logging

3

트랜잭션 내부에서 실행중인 경우 트랜잭션이 커밋됩니다. 그렇지 않으면 즉시.

+1

동의 레벨에 따라 트랜잭션이 커밋되기 전에 데이터를 볼 수 있지만 http://en.wikipedia.org/wiki/Isolation_level – dsolimano

+0

ok. 여기서 IBM DB2를 사용하고 있습니다. 실제로 이것을 알아낼 수있는 방법이 있습니까? – ericbae

+0

다음은이를 알아내는 링크입니다. http://www-01.ibm.com/support/docview.wss?uid=swg21190874 – IAmTimCorey

0

데이터베이스/테이블 구현에 따라 다릅니다. 트랜잭션 로그와 메모리에 행이 삽입 될 때까지 트랜잭션 로그가 통합 된 경우에만 이 될 수 있습니다.

관련 문제