문제

Firebird 2.0에서는 암시 적 명령으로 명령을 실행하는 것보다 선택 명령에서 명시 적 트랜잭션을 더 빨리 사용하고 있습니까?

도움이 되었습니까?

해결책

모든 SQL 명령 (선택, 삽입, 업데이트 등)은 일부 트랜잭션 내에서만 실행될 수 있습니다. 이전에 트랜잭션이 시작된 명령을 실행할 수 없습니다.

다른 팁

명시 적 및 암시 적 트랜잭션은 파이어 버드 자체의 기능이 아니라 데이터베이스에 액세스하는 데 사용하는 구성 요소 세트의 기능입니다. 앞에서 언급했듯이 Firebird 언제나 거래 내에서 모든 것을 수행합니다. 이것은 몇 가지 의미가 있습니다.

  • Firebird의 관점에서 트랜잭션이 트랜잭션이기 때문에 "명시 적"거래를 사용하는 "암시 적"트랜잭션을 사용하는 것이 더 빠를 수는 없습니다.
  • 최고의 성능을 얻으려면 때때로 "Commits"를 잘 제어해야합니다. "암시 적"트랜잭션은 "명시 적"트랜잭션보다 빠를 수는 없지만 STARTTRANSACTION 및 COMIT를 제어 할 수 있기 때문에 명시 적이 더 빠를 수 있습니다. 일반적으로 하나의 트랜잭션 내에서 데이터베이스에 대한 모든 업데이트를 원하지만 (따라서 세트로 성공하거나 실패) 때때로 운영을 여러 그룹으로 분할하려는 경우가 있습니다. 1000 개의 레코드마다 하나를 커밋합니다.

Firebird는 거래없이 SQL 명령을 실행할 수 없습니다.

추신 : 트랜잭션을 롤링하지 않고 거래하면 최상의 성능 결과를 얻을 수 있습니다. 당신이 선택을 불렀고 아무것도 변경하지 않았더라도.

이미 말한 것 외에도 거래는 다음과 같습니다.

  • 읽기 쓰기
  • 읽기 전용

선택의 경우 읽기 전용 트랜잭션을 사용하는 것이 가장 좋습니다.

추신 : 다른 유형의 거래가 있지만이 두 가지는이 주제에 중요한 거래입니다.

일반적으로 트랜잭션은 약간의 오버 헤드를 추가합니다. 그러나 Firebird에 연결할 때 기본 트랜잭션이 시작되지 않으면 조심해야합니다.

내 경험상 암시 적 트랜잭션은 기본적으로 자동 커밋 보유를 유지하는 경향이 있으므로 느려져야합니다. 항상 기본 동작을 변경할 수 있습니다.

그러나 커밋 유지로 명시 적 거래를 사용하면 너무 많은 거래를 차단하면 더 많은 슬픔을 겪을 수 있습니다. 그렇다면 Firebird에 액세스하면 모든 보류/차단 된 트랜잭션을 통과하여 데이터의 올바른 값을 결정함에 따라 급격히 속도가 느려질 수 있습니다.

다음은 몇 가지 토론입니다

http://forums.devshed.com/firebird-sql-development-61/difference-active-transaction-863103.html

http://www.slideshare.net/ibsurgeon/3-how-transactionswork

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top