2015-01-07 5 views
0

"TRANSACTION"및 "transaction isolation levels"에 대해 좋은 예를 들어 설명해 줄 수 있습니까? 내 응용 프로그램 내에서 이것을 사용하는 것은 대단히 혼란 스럽습니다. 저장 프로 시저 내에서 많은 삽입/업데이트/선택 트랜잭션을 수행하고 있으므로이 컨텍스트에서 설명하십시오 (자동 커밋 고려). 내 응용 프로그램 서버에서도 연결 풀링을 사용하고 있습니다.예제와 함께 mysql 트랜잭션 격리 수준

감사합니다.

답변

0

이들은 모두 서로 잘 어울리는 다른 개념입니다. 트랜잭션은 매일 사용하는 데이터베이스에서 매우 기본적이고 중요한 개념 중 하나입니다. 당신은 거래, 여기 ACID의 가장 중요한 속성에 대해 꽤 읽을 수 있습니다 http://en.wikipedia.org/wiki/ACID

하지만 내 자신의 단어가 포함 된 개요를 제공하려고합니다 :

거래는 함께 그룹화로 볼 수있다

명령 집합. 트랜잭션 내에서 데이터베이스의 내용을 변경/추가/삭제하는 경우 해당 트랜잭션 외부의 아무도없는 격리 수준에 따라 이러한 변경 사항을 볼 수 있습니다. 그리고 트랜잭션을 롤백하면 (예 : 오류가 발생한 경우) 데이터베이스에 변경 사항이 전혀 적용되지 않습니다. 트랜잭션을 커밋하기로 결정한 경우 거래 내에서 발생하는 모든 내용은 즉시 으로 실행됩니다. 따라서 좋은 습관으로 모든 논리적 조치를 하나의 트랜잭션으로 그룹화하는 것은 훌륭한 아이디어입니다.

자동 커밋은 반대입니다. 모든 업데이트/삽입/삭제는 트랜잭션으로 암시 적/직접 커미트됩니다. 따라서 트랜잭션으로 볼 수는 있지만 트랜잭션의 끝 부분에 명시 적 커밋을 생략하면됩니다.

연결 풀링은 트랜잭션에 하나의 연결 만 사용해야하는 경우에만 작동합니다. 그러나 일반적으로 당신은 먼저 당신의 진술을 실행하기 위해 수영장에서 연결을해야합니다, 그래서 이것은 아무런 문제가되지 않습니다.

준비된 문은 트랜잭션과 약간의 연결이 끊어져 있습니다. 물론 준비된 명령문 내에서 트랜잭션을 사용할 수 있으며 MySQL에서 중첩 트랜잭션이 가능하지 않기 때문에이를 고려해야합니다.