ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [조각모음-미완성] 뮤텍스와 세마포어 및 프로세스와스레드, ORM N+1문제
    기타 2021. 4. 6. 01:44

    *참고*
    critical Section이란 여러 프로세스들이 동시에 동일한 자원을 동시에 접근처리하는 코드의 영역

    Requirements(동기화 문제에 해결을 위한 기본조건)

    • Mutual Exclusion(상호 배제)
      프로세스 P1 이 Critical Section 에서 실행중이라면, 다른 프로세스들은 그들이 가진 Critical Section 에서 실행될 수 없다.
    • Progress(진행)
      Critical Section 에서 실행중인 프로세스가 없고, 별도의 동작이 없는 프로세스들만 Critical Section 진입 후보로서 참여될 수 있다.
    • Bounded Waiting(한정된 대기)
      P1  Critical Section  진입 신청  부터 받아들여질 때가지, 다른 프로세스들이 Critical Section  진입하는 횟수는 제한이 있어야 한다.

     

     

    여러 프로세스들이 동시에 동일한 자원을 동시에 접근하려고하면 동기화 문제가 발생된다.  

     

     

    공유된 자원 중 하나의 데이터는 하나의 프로세스만 접근할 수 있도록 제한해두어야하는데 그 역할을 하는 것이 세마포어이다.

     

     

    세마포어(Semaphore) : 공유된 자원들을 여러 프로세스가 접근하는 것을 막는 것 

    뮤텍스(Mutex) : 공유된 자원의 데이터들을 여러 쓰레드가 접근하는 것 을 막는 것 


    (동작방식에 대하여 추후 작성)

     

     

     

    시스템 자원은 한정적이다. 

    어떤 것을 (멀티)프로세스에 두고 어떤 것을 (멀티)쓰레드로 둘것인가...? 

     

     

    ORM N+1문제

    시퀄라이즈는 레이지 로딩방식으로 동작을 하며 n+1 문제가 발생한다. 
    예를들어 특정 테이블간 연관관계가 있을 때 특정 테이블에 대하여 결과가 10개의 데이터가 나왔다면 10개의 데이터들은 내부적으로 특정테이블을 참조하기위하여 각각 해당 테이블을 조회한다.(서브쿼리를 수행) 

    해결하기 위하여  join fetch를 이용할 수 있는데 join fetct가 마냥 좋은 것은 아니다. 

     

     

     

     

    '기타' 카테고리의 다른 글

    [ 조각모음 ] - squelize의 장단점과 package-lock.json  (0) 2020.12.16
    [CSS] - SVG 이미지 사용 방법  (0) 2020.11.25
Designed by Tistory.