행을 잠그고 여러 트랜잭션에서 잠금을 사용하려면 어떻게해야합니까?

앤드류 윌리엄슨

다음을 수행해야하는 상황이 있습니다.

  1. 행의 값을 읽습니다.
  2. 일부 열의 값이 'X'이면 조치 A를 수행하고 그렇지 않으면 조치 B를 수행하십시오.
  3. 조치 A를 수행 한 경우 조치 결과로 열을 업데이트하십시오.

작업 A는 데이터베이스 작업이 아니며 실행하는 데 시간이 걸릴 수 있으며 되돌릴 수 없습니다. 작업 B는 데이터베이스 작업이 아니지만 실행 속도가 매우 빠릅니다. 시퀀스는 여러 서버에 걸쳐 여러 스레드에서 수행됩니다.

현재 우리는 잠금이 없기 때문에 때때로 A 조치가 여러 번 실행되는 것을 볼 수 있습니다. 여기서 내 유일한 해결책은 위의 시퀀스를 획득 잠금 단계와 잠금 해제 단계 로 어떻게 든 래핑 하는 것이라고 생각합니다. 어떻게해야할지 모르겠습니다.

비슷한 질문 을 보았습니다 . 대답은 '잠금'및 '수집 시간'열을 행에 추가하는 것입니다. 그러나 그 상황에서 OP는 자주 잠금을 다시 획득하는 것에 대해 걱정하지 않았습니다. 시퀀스를 실행하고 싶을 때마다 이전 잠금이 만료 될 때까지 회전 대기해야한다면 내 서버의 성능이 창 밖으로 나올 것입니다.

여기에서 사용할 수있는 SQL에 내장 된 것이 있습니까?

tpdi

"X"값을 "보류 중"으로 업데이트하십시오.

조치 A가 완료되면 "보류 중"을 무엇이든 업데이트하십시오.

잠금이 필요하지 않습니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

명령 줄에서 새 잠금 화면을 사용하여 화면을 잠 그려면 어떻게해야합니까?

분류에서Dev

ReadCommitted 트랜잭션을 사용하여 Progress OpenEdge OdbcCommand가 C #에서 잠금을보고하는 데 걸리는 시간을 줄이려면 어떻게해야합니까?

분류에서Dev

모델이 항상 트랜잭션과 잠금 (Rails에서)을 사용하도록하려면 어떻게해야합니까?

분류에서Dev

명령 줄에서 D-BUS를 사용하여 화면 보호기의 잠금 기능을 실행하려면 어떻게해야합니까?

분류에서Dev

Windows에서 정책 적용 화면 잠금을 방지하려면 어떻게해야합니까?

분류에서Dev

잠시 후 취소 버튼을 사용하여 명령을 실행하려면 어떻게해야합니까?

분류에서Dev

Entity Framework에서 트랜잭션 또는 잠금을 사용하여 적절한 작동 보장

분류에서Dev

'잠금'열을 사용하여 SQL에서 행 잠금 시도

분류에서Dev

X 분 후 자동 화면 잠금에서 Windows VM을 중지하려면 어떻게해야합니까?

분류에서Dev

Ubuntu 18.04에서 잠금 화면을 축소하려면 어떻게해야합니까?

분류에서Dev

한 트랜잭션에서 공유 잠금을 잠금 해제하는 것은 다른 트랜잭션에서 이후에 제공되는 공유 잠금에 따라 달라 집니까?

분류에서Dev

14.04에서 키보드에서 화면을 잠그고 비우려면 어떻게해야합니까?

분류에서Dev

Django에서 슬러그 URL을 올바르게 사용하려면 어떻게해야합니까?

분류에서Dev

쉘 또는 cmd에서 여러 jar 파일을 실행하고 모두 다른 프록시를 사용하도록하려면 어떻게해야합니까?

분류에서Dev

방화벽을 통과하지 않고 SSH 포트 변경, 지금 잠김-어떻게해야합니까?

분류에서Dev

프래그먼트를 사용하지 않고 여러 유형의 활동에서 동일한 drawerLayout을 얻으려면 어떻게해야합니까?

분류에서Dev

행 잠금을 해제하지 않고 트랜잭션을 커밋하고 새 트랜잭션을 시작할 수 있습니까?

분류에서Dev

Maven 플러그인을 사용하는 Gradle 빌드를 게시하기 위해 TeamCity에서 Gradle 게시를 수행하려면 어떻게해야합니까?

분류에서Dev

jQuery 용 TagIt을 사용하여 태그를 ID 값에 매핑하려면 어떻게해야합니까?

분류에서Dev

Windows 7에서 투명한 잠금 화면을 만들려면 어떻게해야합니까?

분류에서Dev

Clearcase보기가 다른 프로세스에 의해 잠겨 있습니다. ccrc에서 잠금을 해제하려면 어떻게해야합니까?

분류에서Dev

Jenkins 2.0 Pipeline에서 "Publish TAP Results"플러그인을 사용하려면 어떻게해야합니까?

분류에서Dev

Pandas를 사용하여 Excel 시트에서 동일한 그림에 여러 데이터 프레임을 플로팅하려면 어떻게해야합니까?

분류에서Dev

pdb를 사용하여 프로그램을 실행하고 오류가 발생한 지점에서 일시 중지하려면 어떻게해야합니까?

분류에서Dev

요청을 사용하여 ortex.com에 로그인하려면 어떻게해야합니까?

분류에서Dev

jQuery를 사용하여 입력 태그 내에 속성을 추가하려면 어떻게해야합니까?

분류에서Dev

프로그램을 .dll 파일로 바꾸고 rundll32.exe를 사용하여 cmd에서 실행하려면 어떻게해야합니까?

분류에서Dev

CMD를 사용하여 여러 텍스트 파일을 병합하고 줄 바꿈으로 구분하려면 어떻게해야합니까?

분류에서Dev

Ionic에서 Webintent 플러그인을 사용하여 Android 공유 확장에 대한 추가 텍스트를 표시하려면 어떻게해야합니까?

Related 관련 기사

  1. 1

    명령 줄에서 새 잠금 화면을 사용하여 화면을 잠 그려면 어떻게해야합니까?

  2. 2

    ReadCommitted 트랜잭션을 사용하여 Progress OpenEdge OdbcCommand가 C #에서 잠금을보고하는 데 걸리는 시간을 줄이려면 어떻게해야합니까?

  3. 3

    모델이 항상 트랜잭션과 잠금 (Rails에서)을 사용하도록하려면 어떻게해야합니까?

  4. 4

    명령 줄에서 D-BUS를 사용하여 화면 보호기의 잠금 기능을 실행하려면 어떻게해야합니까?

  5. 5

    Windows에서 정책 적용 화면 잠금을 방지하려면 어떻게해야합니까?

  6. 6

    잠시 후 취소 버튼을 사용하여 명령을 실행하려면 어떻게해야합니까?

  7. 7

    Entity Framework에서 트랜잭션 또는 잠금을 사용하여 적절한 작동 보장

  8. 8

    '잠금'열을 사용하여 SQL에서 행 잠금 시도

  9. 9

    X 분 후 자동 화면 잠금에서 Windows VM을 중지하려면 어떻게해야합니까?

  10. 10

    Ubuntu 18.04에서 잠금 화면을 축소하려면 어떻게해야합니까?

  11. 11

    한 트랜잭션에서 공유 잠금을 잠금 해제하는 것은 다른 트랜잭션에서 이후에 제공되는 공유 잠금에 따라 달라 집니까?

  12. 12

    14.04에서 키보드에서 화면을 잠그고 비우려면 어떻게해야합니까?

  13. 13

    Django에서 슬러그 URL을 올바르게 사용하려면 어떻게해야합니까?

  14. 14

    쉘 또는 cmd에서 여러 jar 파일을 실행하고 모두 다른 프록시를 사용하도록하려면 어떻게해야합니까?

  15. 15

    방화벽을 통과하지 않고 SSH 포트 변경, 지금 잠김-어떻게해야합니까?

  16. 16

    프래그먼트를 사용하지 않고 여러 유형의 활동에서 동일한 drawerLayout을 얻으려면 어떻게해야합니까?

  17. 17

    행 잠금을 해제하지 않고 트랜잭션을 커밋하고 새 트랜잭션을 시작할 수 있습니까?

  18. 18

    Maven 플러그인을 사용하는 Gradle 빌드를 게시하기 위해 TeamCity에서 Gradle 게시를 수행하려면 어떻게해야합니까?

  19. 19

    jQuery 용 TagIt을 사용하여 태그를 ID 값에 매핑하려면 어떻게해야합니까?

  20. 20

    Windows 7에서 투명한 잠금 화면을 만들려면 어떻게해야합니까?

  21. 21

    Clearcase보기가 다른 프로세스에 의해 잠겨 있습니다. ccrc에서 잠금을 해제하려면 어떻게해야합니까?

  22. 22

    Jenkins 2.0 Pipeline에서 "Publish TAP Results"플러그인을 사용하려면 어떻게해야합니까?

  23. 23

    Pandas를 사용하여 Excel 시트에서 동일한 그림에 여러 데이터 프레임을 플로팅하려면 어떻게해야합니까?

  24. 24

    pdb를 사용하여 프로그램을 실행하고 오류가 발생한 지점에서 일시 중지하려면 어떻게해야합니까?

  25. 25

    요청을 사용하여 ortex.com에 로그인하려면 어떻게해야합니까?

  26. 26

    jQuery를 사용하여 입력 태그 내에 속성을 추가하려면 어떻게해야합니까?

  27. 27

    프로그램을 .dll 파일로 바꾸고 rundll32.exe를 사용하여 cmd에서 실행하려면 어떻게해야합니까?

  28. 28

    CMD를 사용하여 여러 텍스트 파일을 병합하고 줄 바꿈으로 구분하려면 어떻게해야합니까?

  29. 29

    Ionic에서 Webintent 플러그인을 사용하여 Android 공유 확장에 대한 추가 텍스트를 표시하려면 어떻게해야합니까?

뜨겁다태그

보관