>일반적인 문제 >분산 트랜잭션은 무엇을 의미하나요?

분산 트랜잭션은 무엇을 의미하나요?

hzc
hzc원래의
2020-06-29 13:08:283816검색

분산 트랜잭션은 트랜잭션 참여자, 트랜잭션 지원 서버, 리소스 서버 및 트랜잭션 관리자가 서로 다른 분산 시스템의 서로 다른 노드에 위치하는 것을 의미합니다.

분산 트랜잭션은 무엇을 의미하나요?

분산 트랜잭션을 구현하려면 아래에 소개된 2단계 커밋 프로토콜을 사용해야 합니다. * 1단계: 트랜잭션과 관련된 모든 리소스에 사전 커밋 정보 전송을 시작합니다. 이때 해당 트랜잭션에 참여한 리소스는 트랜잭션을 비정상적으로 종료할 수 있는 마지막 기회를 갖게 됩니다. 어떤 리소스라도 트랜잭션을 비정상적으로 종료하기로 결정하면 전체 트랜잭션이 취소되고 리소스가 업데이트되지 않습니다. 그렇지 않으면 치명적인 오류가 발생하지 않는 한 트랜잭션이 정상적으로 실행됩니다. 심각한 오류를 방지하기 위해 모든 리소스 업데이트가 로그에 기록됩니다. 이러한 로그는 지속적이므로 오류가 발생해도 유지되며 모든 리소스에 대해 다시 업데이트될 수 있습니다. * 2단계 : 1단계가 비정상적으로 종료되지 않는 경우에만 발생합니다. 이 시점에서 위치를 파악하고 개별적으로 제어할 수 있는 모든 리소스 관리자는 실제 데이터 업데이트를 수행하기 시작합니다. 분산 트랜잭션 2단계 커밋 프로토콜에는 분산 트랜잭션 코디네이터 역할을 담당하는 기본 트랜잭션 관리자가 있습니다. 트랜잭션 코디네이터는 전체 트랜잭션을 담당하며 네트워크의 다른 트랜잭션 관리자와 협력하도록 만듭니다. 분산 트랜잭션을 구현하려면 분산 트랜잭션의 다양한 참가자 간에 트랜잭션 컨텍스트 정보를 전송하는 프로토콜을 사용해야 합니다. IIOP가 그러한 프로토콜입니다. 이를 위해서는 서로 다른 개발자가 개발한 트랜잭션 참가자가 분산 트랜잭션을 달성하기 위해 표준 프로토콜을 지원해야 합니다.

Transact-SQL에서 시작된 분산 트랜잭션의 구조는 비교적 간단합니다.

1. Transact-SQL 스크립트 또는 응용 프로그램 연결은 분산 트랜잭션을 시작하는 Transact-SQL 문을 실행합니다.

2. 명령문을 실행하는 Microsoft® SQL Server™가 트랜잭션의 마스터 서버가 됩니다.

3. 그런 다음 스크립트나 애플리케이션은 연결된 서버에 대해 분산 쿼리를 수행하거나 원격 서버에 대해 원격 저장 프로시저를 수행합니다.

4. 분산 쿼리 또는 원격 프로시저 호출이 실행되면 마스터 서버는 자동으로 MS DTC를 호출하여 연결된 서버와 원격 서버를 분산 트랜잭션에 등록합니다.

5. 스크립트나 애플리케이션이 COMMIT 또는 ROLLBACK 문을 실행하면 마스터 SQL Server는 MS DTC를 호출하여 2단계 커밋 프로세스를 관리하거나 연결된 서버 및 원격 서버에 트랜잭션을 롤백하도록 알립니다.

대부분의 작업이 Microsoft® SQL Server™ 및 MS DTC에 의해 내부적으로 수행되므로 분산 트랜잭션을 제어하는 ​​Transact-SQL 문은 거의 없습니다. Transact-SQL 스크립트 또는 응용 프로그램에 필요한 유일한 Transact-SQL 문은 다음과 같습니다.

●분산 트랜잭션을 시작합니다.

●연결된 서버에 대해 분산 쿼리를 수행하거나 원격 서버에 대해 원격 프로시저 호출을 수행합니다.

●표준 Transact-SQL COMMIT TRANSACTION, COMMIT WORK, ROLLBACK TRANSACTION 또는 ROLLBACK WORK 문을 호출하여 트랜잭션을 완료합니다.

● Transact-SQL 분산 트랜잭션의 경우 Transact-SQL 스크립트 또는 연결을 처리하는 SQL Server는 자동으로 MS DTC를 호출하여 트랜잭션의 커밋 또는 롤백을 조정합니다.

REMOTE_PROC_TRANSACTIONS 옵션은 sp_addserver를 사용하여 정의된 원격 서버에 대한 원격 저장 프로시저 호출에만 영향을 미치는 호환성 옵션입니다. 원격 저장 프로시저에 대한 자세한 내용은 원격 저장 프로시저 아키텍처를 참조하세요. 이 옵션은 sp_addlinkedserver를 사용하여 정의된 연결된 서버에서 저장 프로시저를 실행하는 분산 쿼리에는 적용되지 않습니다. 분산 쿼리에 대한 자세한 내용은 분산 쿼리를 참조하세요.

위 내용은 분산 트랜잭션은 무엇을 의미하나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.