MySQL 시리즈 의 10 MySQL 사무 격 리 병행 제어 실현

1.동시 접속 제어
실 현 된 동시 방문 제어 기술 은 자물쇠 에 기초 한 것 이다.
자 물 쇠 는 표 급 자물쇠 와 행 급 자물쇠 로 나 뉘 는데 MyISAM 저장 엔진 은 행 급 자 물 쇠 를 지원 하지 않 습 니 다.InnoDB 는 표 급 자물쇠 와 행 급 자 물 쇠 를 지원 합 니 다.
자물쇠 의 분 류 는 읽 기 자물쇠 와 쓰기 자물쇠 가 있 고 읽 기 자 물 쇠 는 공유 자물쇠 라 고도 부 르 며 자 물 쇠 를 읽 을 때 다른 사람 이 읽 을 수 있다.자 물 쇠 를 쓰 는 것 도 독점 자물쇠 나 자물쇠 라 고 하 는데,자 물 쇠 를 쓰 는 것 은 다른 읽 기와 쓰기 동작 을 막 을 수 있다.
자 물 쇠 는 암시 적 자물쇠 와 명시 적 자물쇠 로 나 뉘 는데 암시 적 자 물 쇠 는 저장 엔진 이 스스로 관리 하고 명시 적 자 물 쇠 는 사용자 가 수 동 으로 자 물 쇠 를 추가 하 는 것 이다.
잠 금 정책:잠 금 입도 및 데이터 안전성 에 대한 균형 메커니즘.
현식 자물쇠 사용 방법:LOCK TABLES tblname READ|WRITE

MariaDB [school]> LOCK TABLES students READ;  #   

MariaDB [school]> UNLOCK TABLES;  #  
읽 기 자물쇠:아무 도 쓸 수 없습니다.
자물쇠 쓰기:스스로 읽 고 쓸 수 있 지만 다른 사람 은 읽 고 쓸 수 없습니다.
FLUSH TABLES tb_name:열 려 있 는 시 계 를 닫 습 니 다(검색 캐 시 지우 기).백업 전에 전역 읽 기 자 물 쇠 를 추가 합 니 다.
SELECT clause[FOR UPDATE|LOCK IN SHARE MODE]조회 시 자 물 쇠 를 추가 하거나 읽 습 니 다.
2.사무 거래
원자 적 인 SQL 문장 이나 독립 된 작업 단원
1.사 무 는 ACID 원칙 에 따른다.
A:atomicity 원자 성;전체 트 랜 잭 션 의 모든 작업 이 성공 적 으로 실행 되 거나 모두 실패 한 후 스크롤 백 합 니 다C:consistency 일치 성;데이터 베 이 스 는 항상 하나의 일치 성 상태 에서 다른 일치 성 상태 로 전환 된다
  • I:격 리 성;한 사무소 가 한 조작 은 제출 하기 전에 다른 사무 소 를 위해 만 날 수 없다.격 리 는 여러 가지 격 리 단계 가 있 는데 병발 을 실현 한다
  • D:durability 지속 성;트 랜 잭 션 이 제출 되면 변경 사항 은 데이터베이스 에 영구적 으로 저 장 됩 니 다2.업무 의 생명주기

    명시 적 사무:명확 한 규정 사무의 시작
    암시 적 트 랜 잭 션:기본 값 은 암시 적 트 랜 잭 션 입 니 다.한 문장 을 실행 할 때마다 직접 제출 합 니 다.
    autocommt={OFF|ON}자동 제출 을 열거 나 닫 습 니 다.'자동 제출'기능 대신 명시 적 요청 과 제출 을 사용 하 는 것 을 권장 합 니 다.
    시작 사무:START TRANSACTION;탭 삽입:ROLLBACK TO ##;지정 한 탭 취소:ROLLBACK TO ##;모두 취소:ROLLBACK;제출 사무:COMMIT;태그 삭제:RELEASE SAVEPOINT;
    
    MariaDB [school]> START TRANSACTION;  #          
    MariaDB [school]> INSERT students(StuID,Name,Age,Gender) VALUES (26,'Tom',22,'M');  #      
    MariaDB [school]> SAVEPOINT sp26;  #      
    MariaDB [school]> INSERT students(StuID,Name,Age,Gender) VALUES (27,'Maria',12,'F');  #       
    MariaDB [school]> SELECT * FROM students WHERE stuid IN (26,27);  #    ,           
    +-------+-------+-----+--------+---------+-----------+
    | StuID | Name  | Age | Gender | ClassID | TeacherID |
    +-------+-------+-----+--------+---------+-----------+
    |    26 | Tom   |  22 | M      |    NULL |      NULL |
    |    27 | Maria |  12 | F      |    NULL |      NULL |
    +-------+-------+-----+--------+---------+-----------+
    MariaDB [school]> ROLLBACK TO sp26;  #   sp26       
    MariaDB [school]> SELECT * FROM students WHERE stuid IN (26,27);  #    ,  maria       
    +-------+------+-----+--------+---------+-----------+
    | StuID | Name | Age | Gender | ClassID | TeacherID |
    +-------+------+-----+--------+---------+-----------+
    |    26 | Tom  |  22 | M      |    NULL |      NULL |
    +-------+------+-----+--------+---------+-----------+
    MariaDB [school]> COMMIT;  #    
    MariaDB [school]> SELECT * FROM students WHERE stuid IN (26,27);  #     
    +-------+------+-----+--------+---------+-----------+
    | StuID | Name | Age | Gender | ClassID | TeacherID |
    +-------+------+-----+--------+---------+-----------+
    |    26 | Tom  |  22 | M      |    NULL |      NULL |
    +-------+------+-----+--------+---------+-----------+
    3.업무 의 격 리 단계
  • READ UNCOMMITTED 기타 사 무 는 제출 되 지 않 은 더러 운 데 이 터 를 볼 수 있 고 더러 운 읽 기 가 발생 합 니 다
  • READ COMMITTED 제출 후 다른 업 무 는 수 정 된 데 이 터 를 볼 수 있 고 읽 을 때마다 데이터 가 일치 하지 않 을 수 있 으 며 중복 읽 을 수 없습니다
  • REPEATABLE READ 는 반복 적 으로 읽 을 수 있 고 볼 때마다 데이터 가 일치 하 며 데이터 가 수정 되면 최신 데 이 터 를 볼 수 없 으 며 환 독(기본 설정)이 발생 합 니 다
  • SETIALIZABILE 가 제출 하지 않 은 읽 기 트 랜 잭 션 차단 수정 트 랜 잭 션,직렬 실행,동시성 차이
  • MVCC:다 중 버 전 병행 제어,사무 등급 관련

    트 랜 잭 션 격 리 단계 수정:서버 변수 txisolation 지정,기본 값 REPEATABLE-READ,GLOBAL 과 SESSION 레벨 에서 설정 가능tx_isolation
  • Description: The transaction isolation level . See also SET TRANSACTION ISOLATION LEVEL.
  • Commandline: --transaction-isolation=name
  • Scope: Global, Session
  • Dynamic: Yes
  • Type: enumeration
  • Default Value: REPEATABLE-READ
  • Valid Values: READ-UNCOMMITTED , READ-COMMITTED , REPEATABLE-READ , SERIALIZABLE
  • 
    MariaDB [school]> SELECT @@tx_isolation;   #         
    +-----------------+
    | @@tx_isolation  |
    +-----------------+
    | REPEATABLE-READ |
    +-----------------+
    MariaDB [school]> SET tx_isolation='READ-UNCOMMITTED';
    MariaDB [school]> set tx_isolation='READ-COMMITTED';
    MariaDB [school]> set tx_isolation='REPEATABLE-READ';
    MariaDB [school]> set tx_isolation='SERIALIZABLE';
    4.자물쇠
    두 개 이상 의 업무 가 같은 자원 에서 서로 점용 되 고 상대방 이 점용 하 는 자원 의 잠 금 을 요청 하 는 상태 에서 잠 금 이 발생 합 니 다.
    A 사무 가 t1 표 의 세 번 째 줄 을 수정 하고 B 사무 가 t2 표 의 두 번 째 줄 을 수정 할 때;이때 A 사 무 는 t2 표 의 두 번 째 줄 을 수정 하 러 갔 는데 이때 A 사 무 를 막 았 다.그리고 B 사 무 는 t1 표를 수정 하 는 세 번 째 줄 이 있 었 다.이때 B 사무 도 막 혔 고 이때 자물쇠 가 생 겼 다.
    두 사 무 는 동시에 상대방 이 수정 한 시 계 를 바 꾸 고 서로 막는다.시스템 은 자 물 쇠 를 발견 하고 대가 가 적은 일 을 자동 으로 희생 하여 자 물 쇠 를 풀 것 이다.
    ERROR 1213 (40001): Deadlock found when trying to get lock; try restarting transaction
    프로 세 스 목록 보기:MariaDB [school]> SHOW PROCESSLIST;처치 프로 세 스:MariaDB [school]> KILL 5;MySQL 시리즈 의 10 MySQL 트 랜 잭 션 격 리 와 병행 제어 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 my sql 병행 제어 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 많은 응원 바 랍 니 다!
    MySQL 시리즈 의 10 MySQL 트 랜 잭 션 격 리 와 병행 제어 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 my sql 병행 제어 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 많은 응원 바 랍 니 다!

    좋은 웹페이지 즐겨찾기