MARS (Multiple Active Result Sets)의 단점은 무엇입니까?


86

MARS (Multiple Active Result Sets)의 단점을 아는 사람이 있습니까? 커서가 MARS보다 더 유용한 경우처럼 MARS 사용을 피해야하는 이유를 아는 사람이 있습니까?

답변:


61

(이 (1) 팀 블로그 에서) 적어도 두 가지 알려진 (잠재적 인) 단점이 있습니다 .

  1. 분명히 이것은 MARS 지원 설계에 대해 실행되도록 설계되지 않은 레거시 시스템에 잠재적 인 문제를 일으킬 수 있습니다. "MARS가 아닌 세계에서 실행되도록 최적화 된 기존 코드는 MARS로 수정하지 않고 실행하면 약간의 성능 저하를 보일 수 있습니다."

  2. “MARS를 사용하면 여러 개의 다중 문 배치를 서버로 보낼 수 있습니다. 서버는 이러한 일괄 처리 실행을 인터리브합니다. 즉, 일괄 처리가 SET 또는 USE 문을 통해 서버 상태를 변경하거나 TSQL 트랜잭션 관리 문 (BEGIN TRAN, COMMIT, ROLLBACK)을 사용하면 사용자와 서버가 혼동 될 수 있습니다. 당신의 실제 의도가 무엇인지에 대해.”

아직 MARS 지원 디자인을 시험해 보지는 않았지만 현재 프로젝트에서 거의 시도해 볼 것입니다. 경쟁하는 (때로는 종속 된) 쿼리 작업 (예 : 활성 레코드 집합이 실행중인 동일한 데이터베이스에서 구성 데이터를 지연로드하는 것과 같은)에 약간의 문제가 있습니다.

MSDN 사이트 (2) 에 대한 자세한 정보는 여기에 있습니다.

[(1) https://web.archive.org/web/20190911155929/https://blogs.msdn.microsoft.com/sqlnativeclient/2006/09/27/using-mars-with-sql-native-client/ ]
[(2) http://msdn.microsoft.com/en-us/library/ms131686.aspx ]


3
@RobS 훌륭한 솔루션을 적용하기 전에 다음 솔루션으로이 문제를 해결할 수 없음을 확인하기 위해 먼저이 기사를 읽었습니다. devproconnections.com/development/… 또는 DB 호출 끝에 .ToList ()를 추가합니다. 내 문제를 해결했습니다. Btw, 훌륭한 조언을 해주신 RobS에게 감사드립니다. MARS는 미래에 도움이 될 것입니다. :)
Termato 2014-08-21

6
  • 한 번에 하나의 연결을 수행하는 것보다 약간 더 많은 서버 리소스가 필요합니다.
  • SQL Server 2005 이상을 실행해야합니다. 따라서 레거시 (ack!) 환경에서 문제가 될 수 있습니다.

당신은 SqlTransaction을 잘 사용할 수 있습니다.
Mladen Prajdic

18
"약간 더 많은 서버 리소스"는 얼마입니까? 메모리 또는 CPU 측면에서 추정치를 입력 할 수 있습니까? 주로 리소스가 서버 비용에 비례하는 Azure 환경에 있기 때문에 관심이 있습니다.
Mathias Lykkegaard Lorenzen 2014 년

1
@MathiasLykkegaardLorenzen 질문에 대한 답을 찾았습니까?
Sinjai

4

무엇에 따라? 실제 단점은 없습니다.

트랜잭션 저장 점을 지원하지 않습니다. 하지만 저는 이것이 단점이라고 생각하지 않습니다.

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