> 데이터 베이스 > MySQL 튜토리얼 > mysql에서 트랜잭션 격리 수준을 수정하는 방법

mysql에서 트랜잭션 격리 수준을 수정하는 방법

WBOY
풀어 주다: 2023-04-17 20:19:01
앞으로
5606명이 탐색했습니다.

수정 방법: 1. 명령 창에서 "set session transaction isolation level transaction level;" 문을 실행합니다. 2. "mysql.ini" 파일을 열고 "transaction-isolation=transaction level" 문을 추가합니다. .

이 튜토리얼의 운영 환경: windows7 시스템, mysql8 버전, Dell G3 컴퓨터.

mysql 트랜잭션 격리 수준

트랜잭션의 격리 수준은 커밋되지 않은 읽기(커밋되지 않은 읽기), 커밋된 읽기(커밋된 읽기), 반복 읽기(반복 읽기), 직렬화 가능(직렬화 가능)으로 나뉩니다.

  • Read Uncommitted(커밋되지 않은 콘텐츠 읽기)

    이 격리 수준에서는 모든 트랜잭션이 커밋되지 않은 다른 트랜잭션의 실행 결과를 볼 수 있습니다. 이 격리 수준은 성능이 다른 수준보다 그다지 좋지 않기 때문에 실제 응용 프로그램에서는 거의 사용되지 않습니다. 커밋되지 않은 데이터를 읽는 것을 더티 읽기(dirty read)라고도 합니다.

  • Read Committed(커밋 내용 읽기)

    이것은 대부분의 데이터베이스 시스템의 기본 격리 수준입니다(MySQL 기본값은 아님). 이는 격리의 간단한 정의를 충족합니다. 트랜잭션은 커밋된 트랜잭션에 의해 변경된 내용만 볼 수 있습니다. 이 격리 수준은 소위 반복 불가능한 읽기도 지원합니다. 동일한 트랜잭션의 다른 인스턴스가 인스턴스 처리 중에 새로운 커밋을 가질 수 있으므로 동일한 선택이 다른 결과를 반환할 수 있기 때문입니다.

  • 반복 읽기(반복 가능)

    이는 MySQL의 기본 트랜잭션 격리 수준으로, 동시에 데이터를 읽을 때 동일한 트랜잭션의 여러 인스턴스가 동일한 데이터 행을 볼 수 있도록 합니다. 그러나 이론적으로 이는 팬텀 읽기(phantom read)라는 또 다른 까다로운 문제로 이어질 수 있습니다. 간단히 말해서, 팬텀 읽기는 사용자가 특정 범위의 데이터 행을 읽을 때 다른 트랜잭션이 해당 범위에 새 행을 삽입하는 것을 의미합니다. 사용자가 해당 범위의 데이터 행을 읽으면 새로운 "팬텀"이 있음을 알게 됩니다. . InnoDB와 Falcon 스토리지 엔진은 MVCC(Multiversion Concurrency Control) 메커니즘을 통해 이 문제를 해결합니다.

  • 직렬화 가능

    이것은 가장 높은 격리 수준으로 트랜잭션이 서로 충돌하지 않도록 강제로 주문하여 팬텀 읽기 문제를 해결합니다. 즉, 읽은 각 데이터 행에 공유 잠금을 추가합니다. 이 수준에서는 시간 초과와 잠금 경합이 많이 발생할 수 있습니다.

mysql 트랜잭션 격리 수준 수정

방법 1: 수정 명령 실행

//查看当前事物级别:
SELECT @@tx_isolation;
로그인 후 복사

mysql에서 트랜잭션 격리 수준을 수정하는 방법

//设置mysql的隔离级别:
set session transaction isolation level 需要设置的事务隔离级别
로그인 후 복사


//设置read uncommitted级别:
set session transaction isolation level read uncommitted;

//设置read committed级别:
set session transaction isolation level read committed;

//设置repeatable read级别:
set session transaction isolation level repeatable read;

//设置serializable级别:
set session transaction isolation level serializable;
로그인 후 복사

방법 2: mysql.ini 구성 수정

mysql.ini 열기 구성 파일에

#可选参数有:READ-UNCOMMITTED, READ-COMMITTED, REPEATABLE-READ, SERIALIZABLE.
[mysqld]
transaction-isolation = REPEATABLE-READ
로그인 후 복사

를 추가하세요. 여기서 전역 기본값은 REPEATABLE-READ입니다. 실제로 MySQL도 이 수준을 기본값으로 합니다

.

위 내용은 mysql에서 트랜잭션 격리 수준을 수정하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:yisu.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿