InnoDB 직렬 화 격 리 단계 구현 방법

서열 화 된 실현
이 노 DB 는 서열 화 된 실현 방식 에 대해 두 가지 방식 으로 이 뤄 진다.
첫 번 째,SELECT 문 구 는 명시 적 인 사무 블록 에 있 을 때 표 11-9 의 번호 가 1 인 경우 LOCK 를 가 합 니 다.S 자물쇠,표 11-6(기록 자물쇠 사무 자물쇠 호환성 표)에 따라 알 수 있 듯 이 LOCKS 자 물 쇠 는 자 물 쇠 를 거부 하기 때문에 직렬 화 격 리 단계 에서 동시 읽 기 동작 만 허용 되 고 동시 쓰기 가 금지 되 어 직렬 화 할 수 있 습 니 다.
해당 코드 는 다음 과 같 습 니 다.

ha_innobase::external_lock(...)

{...

 if (lock_type != F_UNLCK) {

 /* MySQL is setting a new table lock */

...

 if (trx->isolation_level == TRX_ISO_SERIALIZABLE //       

  && m_prebuilt->select_lock_type == LOCK_NONE

  && thd_test_options(thd, OPTION_NOT_AUTOCOMMIT | OPTION_BEGIN)) { //           

 

  /* To get serializable execution, we let InnoDB conceptually add 'LOCK IN SHARE MODE' to all SELECTs

  which otherwise would have been consistent reads. An exception is consistent reads in the AUTOCOMMIT=1 mode:

  we know that they are read-only transactions, and they can be serialized also if performed as consistent reads. */

  m_prebuilt->select_lock_type = LOCK_S; //   ,  'LOCK IN SHARE MODE'

  m_prebuilt->stored_select_lock_type = LOCK_S;

 } //  ,   (       )

...

 } else {

 TrxInInnoDB::end_stmt(trx);

 DEBUG_SYNC_C("ha_innobase_end_statement");

 }

...}
두 번 째,SELECT 문 구 는 명시 적 인 트 랜 잭 션 블록 에 없 으 면 최신 스냅 샷(트 랜 잭 션 이 시 작 될 때)을 가 져 와 데 이 터 를 읽 습 니 다.이때 스냅 샷 의 일치 성 을 바탕 으로 읽 을 때 자 물 쇠 를 추가 할 필요 가 없 기 때문에 자 물 쇠 를 추가 하 는 상황 은 표 11-9 의 번호 2 에 대응 하 는 상황 에 대응 된다. 
표 11-9 직렬 화 격 리 단계 잠 금 상황
 
설명:
    S0: SELECT * FROM bluesea WHERE c1=2;    //홈 키 인덱스 로 WHERE 조건 만 들 기
또한 FLUSH...WITH READ LOCK 문 구 는 직렬 화 격 리 단계 에서 도 잠 금 LOCK 을 읽 어야 합 니 다.S
코드 는 다음 과 같 습 니 다:

ha_innobase::store_lock(

...

 /* Check for FLUSH TABLES ... WITH READ LOCK */

 if (trx->isolation_level == TRX_ISO_SERIALIZABLE) {

  m_prebuilt->select_lock_type = LOCK_S;

  m_prebuilt->stored_select_lock_type = LOCK_S;

 } else {

  m_prebuilt->select_lock_type = LOCK_NONE;

  m_prebuilt->stored_select_lock_type = LOCK_NONE;

 } 

...

} 
직렬 화 와 관련 된 것 은innobase_query_caching_of_table_permitted()함수 도 있 고 직렬 화 격 리 단 계 는 버퍼 조 회 를 허용 하지 않 습 니 다.
총결산
이상 은 이 글 의 전체 내용 입 니 다.본 논문 의 내용 이 여러분 의 학습 이나 업무 에 어느 정도 도움 이 되 기 를 바 랍 니 다.궁금 한 점 이 있 으 시 면 댓 글 을 남 겨 주 셔 서 저희 에 대한 지지 에 감 사 드 립 니 다.

좋은 웹페이지 즐겨찾기