> 데이터 베이스 > MySQL 튜토리얼 > MySql 유형 변환으로 인해 행 잠금이 테이블 잠금으로 업그레이드됩니다.

MySql 유형 변환으로 인해 행 잠금이 테이블 잠금으로 업그레이드됩니다.

php是最好的语言
풀어 주다: 2018-08-07 11:10:34
원래의
1873명이 탐색했습니다.

MySql의 write 문에서 테이블 열에 할당된 값이 테이블 유형과 일치하지 않으면 MySql의 기본 최적화 프로그램이 작동하여 강제 유형 변환을 수행합니다. 이때 작업은 정상일 수 있지만 행 잠금이 테이블 잠금으로 업그레이드됩니다. 예는 다음과 같습니다

학생 테이블을 예로 들어 보겠습니다. 테이블 필드 유형은 다음과 같습니다.
MySql 유형 변환으로 인해 행 잠금이 테이블 잠금으로 업그레이드됩니다.테이블 내용은 다음과 같습니다.
MySql 유형 변환으로 인해 행 잠금이 테이블 잠금으로 업그레이드됩니다.

두 개의 세션 창을 열고 두 세션 창에서 MySql의 자동 제출 모드를 변경합니다. 세션 창에서 수동 제출로

>set autocommit=false;
로그인 후 복사

MySql 유형 변환으로 인해 행 잠금이 테이블 잠금으로 업그레이드됩니다. 세션 창 1에서 업데이트 문을 실행하지만 트랜잭션을 커밋하지는 않습니다. age 열은 테이블 생성 시 문자열 '100'이 할당에 사용됩니다. MySql 최적화 프로그램은 자동으로 문자열 '100'을 정수 100으로 변환한 후 SQL 검색을 수행합니다. .

>update student set class=3 where age='100'
로그인 후 복사

그런 다음 세션 창에서 관련 없는 다른 데이터에 대해 업데이트 작업을 수행합니다. 2

>update student set age=28 where name='lzj';
로그인 후 복사

일반적인 상황에서는 두 SQL 문에서 작동하는 행 데이터가 다르므로 실행 시 서로 영향을 미치지 않습니다. 1이 실제로 차단되었습니다. 세션 2의 업데이트 작업이 수행되었습니다.
MySql 유형 변환으로 인해 행 잠금이 테이블 잠금으로 업그레이드됩니다.세션 1에서 업데이트 작업이 수행되었지만 트랜잭션 제출이 수행되지 않았으므로 트랜잭션의 격리 수준이 Read Committed이므로 세션 1의 업데이트 결과를 확인할 수 없습니다. 세션 2에서 볼 수 있습니다. 그러나 Session 2의 다른 행에 대한 데이터 업데이트 작업을 수행하는 동안 차단이 발생했습니다. 세션 1의 SQL 문 할당이 강제되어 세션 1의 행 잠금이 테이블 잠금으로 업그레이드되어 전체 학생 테이블이 잠기므로 세션 2의 SQL이 차단된 것을 볼 수 있습니다. 다음으로 세션 1의 업데이트 작업에 대한 트랜잭션 커밋을 수행한 다음 세션 2의 업데이트 작업이 계속 실행됩니다
MySql 유형 변환으로 인해 행 잠금이 테이블 잠금으로 업그레이드됩니다.세션 1의 업데이트 작업에 대한 commit을 실행합니다. 트랜잭션을 수동으로 제출한 후 , 세션 1 학생의 테이블 잠금을 해제하고 세션 2의 업데이트 작업을 계속할 수 있습니다. commit手动提交事务后,会话1释放掉student的表锁,会话2中的更新操作可以继续执行。
最后对会话2中的更新也执行commit마지막으로 세션 2의 업데이트를 위해 commit 트랜잭션도 실행됩니다. 두 SQL 문 모두 학생 테이블의 내용은 다음과 같습니다.
MySql 유형 변환으로 인해 행 잠금이 테이블 잠금으로 업그레이드됩니다.

위의 경우에서 SQL 문 할당 및 테이블 열 유형이 일치하지 않는 경우 MySql 최적화 프로그램은 강제로 일치하는 유형으로 변환되어 행 잠금이 테이블 잠금으로 업그레이드되는 것을 볼 수 있습니다. 따라서 행 잠금이 테이블 잠금으로 업그레이드되어 동시성 성능에 영향을 미치는 것을 방지하려면 개발 중에 유형 일치에 주의해야 합니다.

관련 권장 사항:

MySQL 행 수준 잠금, 테이블 수준 잠금 및 페이지 수준 잠금에 대한 자세한 소개

MySQL 잠금 사용 테이블 수준 잠금

위 내용은 MySql 유형 변환으로 인해 행 잠금이 테이블 잠금으로 업그레이드됩니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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