>  Q&A  >  본문

mysql 내장 함수 get_lock을 사용할 수 있나요?

배치 작업이 있습니다. 그리고 작업을 처리할 수 있는 여러 서버가 있습니다. 특정 시간 동안 많은 서버 중 하나에서만 작업을 선택하고 처리하기를 원합니다.

이 목적을 달성하기 위해 전역 잠금 메커니즘을 조사하던 중 mysql의 get_lock 함수를 발견했습니다.

그리고 이미 mysql에 의존하고 있기 때문에 이 기능도 쓸 수 있을 것 같아요.

그러나 사람들을 의심하게 만드는 것은 전역 잠금 메커니즘을 찾을 때 대부분 redis 등을 사용하며 get_lock을 사용하는 사례를 찾기가 어렵다는 것입니다.

그래서 mysql의 get_lock에 단점이 있는지 의심스럽습니다.

현재 상황은 이미 mysql을 사용하고 있지만 redis는 사용하고 있지 않습니다.

그럼 전역 잠금에 mysql의 get_lock을 사용할 수 있나요? 아니면 mysql의 get_lock에 단점이 있나요?

P粉875565683P粉875565683370일 전586

모든 응답(1)나는 대답할 것이다

  • P粉156532706

    P粉1565327062023-09-16 12:58:12

    이 질문은 종료되었지만 몇 가지 제안 사항이 도움이 될 수 있습니다.

    내가 이해한 바에 따르면 동일한 데이터 세트를 처리하는 여러 대의 기계가 있습니다. 즉, 데이터 항목의 독점성을 보장하려고 합니다. 데이터 소비자가 잠금을 찾은 다음 데이터를 사용하기 전에 잠금을 생성해야 하는 권고 잠금 메커니즘을 고려하고 있는 것 같습니다. 권고 잠금은 최후의 수단으로만 사용해야 합니다.

    • 데이터 클라이언트는 잠금 메커니즘을 명시적으로 선택해야 합니다. 시스템이 더욱 복잡해짐에 따라 누군가가 다른 모든 것과 마찬가지로 잠금 메커니즘을 사용하지 못하는 일부 코드를 작성했을 가능성이 점점 더 커지고 있습니다. 그러면 문제가 생길 거예요
    • 권고 잠금으로 인해 상태가 대체됩니다. 잠금 상태는 잠금이 필요한 작업과 다른 위치에 저장됩니다. 당신은 이제 CAP 정리의 영역에 있습니다

    정의되지 않은 문제에 대한 적합한 솔루션인지 묻는 대신 데이터 싱크와 데이터 소스, 사용 가능한 리소스에 대한 세부 정보를 다시 게시해 보세요.

    회신하다
    0
  • 취소회신하다