SQL Server : 명령문과 배치, 트랜잭션 및 연결


10

내 질문은 간단합니다 : 차이점 / 유사점 / 카디널리티는 무엇입니까

  • 업무
  • 배치
  • 연결 및
  • 진술

SQL Server에서?

내가 이해하는 한 연결은 SQL Server 인스턴스와 일괄 처리로 그룹화 된 명령문 모음이 실행되는 클라이언트 간의 단일 통신 채널입니다. 배치는 하나 이상의 트랜잭션에 암시 적으로 또는 명시 적으로 매핑됩니다. 이 올바른지?


답변:


4

거의 요

배치는 실행해야 할 배치 명령입니다. 트랜잭션은 전체적으로 성공 또는 실패를 보장하는 일련의 명령입니다 (즉, 명령의 절반을 완료하지 못하고 나머지는 실패 할 경우 실패합니다).

내가 아는 한 SQL Server는 연결 풀링을 사용하므로 클라이언트 아이디어 당 하나의 연결에 의존하지 않습니다.


1
배치와 트랜잭션의 카디널리티는 무엇입니까? 거래 당 여러 배치를 가질 수 있습니까? 어때요?

1
내가 아는 한 배치 당 여러 트랜잭션을 가질 수 있지만 트랜잭션 당 여러 배치를 가질 수는 없습니다.
Cromulent

6

트랜잭션과 배치는 두 가지 독립적 인 개념입니다. 둘 다 일대 다 구성으로 사용할 수 있습니다.

트랜잭션 블록은 단일 "작업 단위"로, 커밋 된 SQL은 완전히 작동하거나 전혀 작동하지 않아야한다는 개념입니다. 예를 들어 서로 연결된 두 테이블을 업데이트하는 경우 데이터 변경 사항을 커밋하려면 둘 다 성공해야합니다. [ https://msdn.microsoft.com/en-us/library/ms174377.aspx]

배치는 Microsoft 개념입니다. sqlcmd 및 osql과 같이 Microsoft에서 만든 도구를 사용하면 배치가 단일 실행 계획을 보장합니다. 예를 들어 변수를 만들어 배치 외부에서 사용하면 도구에서 오류가 발생합니다. [ https://msdn.microsoft.com/en-us/library/ms188037.aspx]

따라서 하나의 트랜잭션 블록 내에서 여러 테이블을 업데이트하는 여러 배치를 가질 수 있습니다. 그들이 개별 배치 실행 계획을 위반하지 않는 한.

또한 배치 내에서 여러 트랜잭션 블록을 가질 수 있으므로 테이블과 같은 데이터베이스 엔터티간에 데이터 무결성을 보장 할 수 있습니다.

연결은 단순히 서버에서 쿼리를 실행하도록 승인하는 통신 핸드 셰이크입니다.

문은 쿼리를 구성하는 개별 줄입니다. GO (T-Sql 배치 구분 기호)와 BEGIN TRANSACTION (새 트랜잭션 블록을 시작하기위한 ANSI SQL)은 모두 명령문입니다.


1

배치와 거래는 같은 수준으로 존재합니다. 배치는 다른 관련이없는 SQL 명령의 모음입니다. 트랜잭션은 (데이터베이스의 다른 모든 사용자와 관련이있는 한) 하나의 명령문으로 작동하는 SQL 명령의 모음입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.