Greenplum에서 SQL 트랜잭션을 실행하려고 할 때. 이 오류가 발생했습니다. 그것은이 작동 SQL 서버에서Greenplum - 교착 상태 처리 방법
그러나 우리는
Transaction A
RETRY: -- Label RETRY
BEGIN TRANSACTION
BEGIN TRY
truncate table tablename
WAITFOR DELAY '00:00:05' -- Wait for 5 ms
Insert into tablename
COMMIT TRANSACTION
END TRY
BEGIN CATCH
PRINT 'Rollback Transaction'
ROLLBACK TRANSACTION
IF ERROR_NUMBER() = 1205 -- Deadlock Error Number
BEGIN
WAITFOR DELAY '00:00:00.05' -- Wait for 5 ms
GOTO RETRY -- Go to Label RETRY
END
END CATCH
OUTPUT은 그린 플럼 (Greenplum)에 동일한 트랜잭션을 쓰고 싶다 :
Transaction (Process ID 52) was deadlocked on lock resources with
another process and has been chosen as the deadlock victim.
Rerun the transaction.
우리는 시도
IT는
을 포함합니다greenplum 구문에서 언급 된 sql 트랜잭션 (retry 및 try/catch) 블록을 변환합니다.
프로세스 ID가 계속 변경되면 트랜잭션으로 전달할 때 하드 코드 값을 피하고 싶습니다.
3.이 오류는 우리가 greenplum에서 작성한 SQL SERVER OR 트랜잭션에 속한다는 것을 이해하려고합니다. talend에서
데이터 흐름은 다음과 같습니다
**Read from MS SQL SERVER >> write into hdfs >> load into greenplum**
이 거기에 어떤 도움이 많이을 감상 할 수있다?
을 시작합니다. 나는 당신이 왜 그 기다림을하는지 이해하지 못합니다. –
나는 같은 테이블에 데이터를 잘라내어 삽입하는 동일한 코드를 실행하는 여러 세션을 실행하고 있다고 생각합니다. 그 맞습니까? 그렇다면 왜? –