선택한 문에 트랜잭션을 사용하시겠습니까?
저장 프로시저를 자주 사용하지 않으며 선택한 쿼리를 트랜잭션으로 묶는 것이 타당한지 궁금합니다.
내 절차에는 세 개의 단순 선택 쿼리가 있으며, 그 중 두 개는 첫 번째 쿼리의 반환된 값을 사용합니다.
매우 동시적인 애플리케이션에서는 첫 번째 선택에서 읽은 데이터가 다른 선택이 실행되기 전에 수정될 수 있습니다.
응용프로그램에서 발생할 수 있는 상황인 경우 트랜잭션을 사용하여 선택한 항목을 래핑해야 합니다.모든 트랜잭션 유형이 일관된 읽기를 보장하는 것은 아니지만 올바른 분리 수준을 선택해야 합니다.
업데이트 : 동시 업데이트/삽입 솔루션(업데이트라고도 함)에 대한 이 기사도 흥미로울 수 있습니다.선택한 문과 다음 문 사이에 데이터가 수정되지 않도록 보장하는 몇 가지 일반적인 방법을 테스트에 적용합니다.결과는 충격적입니다.
트랜잭션은 일반적으로 다음과 같은 경우에 사용됩니다.CREATE
,UPDATE
또는DELETE
모든 것을 확약하거나 아무것도 확약하지 않는 원자적인 행동을 하고 싶어하는 진술입니다.
그러나 다음에 대한 트랜잭션을 사용할 수 있습니다.READ
문 선택 대상:
선택한 쿼리가 실행되는 동안 다른 사용자가 관심 테이블을 업데이트할 수 없는지 확인합니다.
이 msdn 게시물을 보세요.
대부분의 데이터베이스는 지정되지 않은 경우에도 트랜잭션의 모든 단일 쿼리를 실행합니다.여기에는 select 문이 포함됩니다.
PostgreSQL은 실제로 모든 SQL 문을 트랜잭션 내에서 실행되는 것으로 처리합니다.BEGIN 명령을 실행하지 않으면 각 개별 명령문에는 암묵적인 BEGIN 및 (성공한 경우) COMMIT가 둘러져 있습니다.BEGIN 및 COMMIT로 둘러싸인 문 그룹을 트랜잭션 블록이라고도 합니다.
https://www.postgresql.org/docs/current/tutorial-transactions.html
언급URL : https://stackoverflow.com/questions/5982517/use-transactions-for-select-statements
'programing' 카테고리의 다른 글
TS2339: '포함' 속성이 '문자열' 유형에 없습니다. (0) | 2023.06.22 |
---|---|
@ControllerAdvision(및 @RestControllerAdvision) 클래스가 있는 Spring의 내장 REST Response JSON 본문을 어떻게 유지합니까? (0) | 2023.06.22 |
다른 도메인의 다른 페이지에 PHP 페이지의 div 로드 (0) | 2023.06.22 |
스프링 데이터레스트 - 지원되는 작동을 제한할 수 있는 방법이 있습니까? (0) | 2023.06.22 |
JSON 시리즈화 Mongodb (0) | 2023.06.22 |