Q
CommandSubmission 서비스를 사용하여 동일한 submission에서 여러 명령을 제출하면 모든 명령의 이벤트가 포함된 단일 트랜잭션이 생성됩니까? 아니면 각 명령이 자체 트랜잭션으로 돌아올까요?
하나의 큰 트랜잭션에서 여러 명령을 제출할지 아니면 작은 트랜잭션으로 분리할지 결정할 때 성능 고려 사항이 있습니까?
A
단일 제출(submission)은 항상 단일 트랜잭션으로 이어집니다.
그리고 성능 고려 사항이 있습니다. 500개의 생성(create) 명령(command)을 사용하는 단일 제출은 각각 하나의 생성 명령을 사용하는 500 개의 제출보다 훨씬 빠릅니다. 동기화 및 합의를 포함한 원장 왕복은 비용이 많이 듭니다.
단일 트랜잭션이 실제로 훨씬 더 빠르기는 하지만 성능상의 이유로 대규모 트랜잭션을 구축하기 전에 유의해야 할 두 가지가 있습니다.
하나의 트랜잭션으로 번들링 하면 int 경합 문제를 더 쉽게 실행할 수 있습니다. 극단적인 예로서 각 작업이 단일 계약 키에서만 작동하는 여러 클라이언트를 고려하십시오. 개별 거래로 제출하면 거래가 충돌하지 않을 가능성이 큽니다. 그러나 이들 모두를 단일 트랜잭션으로 묶으면 서로 다른 클라이언트 간의 충돌 위험이 증가합니다.
트랜잭션이 충분히 커지면 결국 원장 시간 모델에 문제가 발생하고 스큐를 증가시켜야 합니다.
전체 거래 수준에서도 실패하지 않습니까? 그럼 단일 트랜잭션에서 100 개의 서로 다른 작업을 제출하고 # 98이 실패하면 전체가 롤백됩니까?
=> Right, I was assuming that ignoring contention issues the individual operations are expected to succeed. If you cannot guarantee that then this is definitely an issue.
원문 : Resulting transactions from multiple commands in a single submission
https://discuss.daml.com/t/resulting-transactions-from-multiple-commands-in-a-single-submission/1067
'포럼 번역' 카테고리의 다른 글
플랫 트랜잭션 스트림(flat transaction stream)에서 트랜잭션 내 이벤트 순서 지정 (0) | 2020.09.21 |
---|---|
DABL은 다른 배포 플랫폼과 어떻게 다릅니까? (0) | 2020.09.21 |
DAML에는 자체 상호 운용성 계층이 있습니까? 아니면 Canton DAML이 상호 운용성 계층입니까? (0) | 2020.09.21 |
명령 완료(completion service) 스트림에서 OK 해석 (0) | 2020.09.21 |
DAML 오라클 (0) | 2020.09.21 |