>데이터 베이스 >MySQL 튜토리얼 >MYSQL의 테이블 잠금 해제 및 잠금에 대한 자세한 예

MYSQL의 테이블 잠금 해제 및 잠금에 대한 자세한 예

Y2J
Y2J원래의
2017-05-22 14:20:181994검색

다른 데이터베이스에 비해 MySQL의 잠금 메커니즘은 상대적으로 간단합니다. 가장 중요한 특징은 다양한 스토리지 엔진이 다양한 잠금 메커니즘을 지원한다는 것입니다.

MySQL 잠금 개요

비교 다른 데이터베이스의 경우 MySQL의 잠금 메커니즘은 비교적 간단합니다. 가장 중요한 특징은 다양한 스토리지 엔진이 다양한 잠금 메커니즘을 지원한다는 것입니다. 예를 들어 MyISAM 및 MEMORY 스토리지 엔진은 테이블 수준 잠금(테이블 수준 잠금)을 사용하지만 BDB 스토리지 엔진은 페이지 수준 잠금(페이지 수준 잠금)을 사용하지만 InnoDB 스토리지 엔진도 지원합니다. 행 수준 잠금(행 수준 잠금)과 테이블 수준 잠금도 모두 지원되지만 기본적으로 행 수준 잠금이 사용됩니다.

MySQL의 세 가지 잠금의 특징은 대략 다음과 같이 요약할 수 있습니다.

오버헤드, 잠금 속도, 교착 상태, 세분성, 동시성 성능

l 테이블 수준 잠금: 낮은 오버헤드, 빠른 잠금, 큰 잠금 세분성, 잠금 충돌 발생 가능성이 가장 높음 동시성이 가장 낮습니다.
l                                                                                              교착 상태가 발생할 수 있습니다. 잠금 세분성은 가장 작고, 잠금 충돌 가능성도 가장 낮으며, 동시성 수준도 가장 높습니다.
l 페이지 잠금: 오버헤드와 잠금 시간은 테이블 잠금과 행 잠금 사이에 있습니다. 교착 상태는 테이블 잠금과 행 잠금 사이에 발생하며 동시성은 평균입니다.

MyISAM 테이블 잠금

MyISAM 스토리지 엔진은 MySQL의 처음 몇 버전에서 지원되는 유일한 잠금 유형이기도 한 테이블 잠금만 지원합니다. 트랜잭션 무결성 및 동시성에 대한 애플리케이션 요구 사항이 지속적으로 개선됨에 따라 MySQL은 트랜잭션 기반 스토리지 엔진을 개발하기 시작했습니다. 이후 페이지 잠금을 지원하는 BDB 스토리지 엔진과 행 잠금을 지원하는 InnoDB 스토리지 엔진이 등장했습니다. 실제로 InnoDB는 별도의 스토리지 엔진입니다. 현재 Oracle에 인수된 회사). 그러나 MyISAM의 테이블 잠금은 여전히 ​​가장 널리 사용되는 잠금 유형입니다. 이 섹션에서는 MyISAM 테이블 잠금의 사용을 자세히 소개합니다.
쿼리테이블 수준 잠금 경합

시스템의 테이블 잠금 경합은 table_locks_waited 및 table_locks_immediate상태변수를 확인하여 분석할 수 있습니다.
mysql> 'table%'와 같은 상태 표시;
+-------------------------------- -+-------+
| 변수_이름 값 |
+------------+---- ---+
| Table_locks_immediate |
| Table_locks_waited | 0 |
+----------+-- -----+
세트의 2개 행(0.00초))
Table_locks_waited 값이 상대적으로 높으면 심각한 테이블 수준 잠금 경합이 있음을 나타냅니다.

InnoDB 행 잠금 경합 가져오기

InnoDB_row_lock 상태 변수를 확인하여 시스템의 행 잠금 경합을 분석할 수 있습니다.
mysql> show status like 'innodb_row_lock%';
+----------------------+---------+
| 변수_이름                                        |
+---------+---------+
| InnoDB_row_lock_current_waits | 0 |
| InnoDB_row_lock_time_max | - -------+---------+
5행 세트(0.01초)
잠금 경합이 발견된 경우 InnoDB_row_lock_waits 및 InnoDB_row_lock_time_avg의 값이 상대적으로 높은 것과 같이 진지하게 말하면




첫 번째 유형show processlist;

잠금 프로세스 찾기, ID 삭제;

두 번째 유형

mysql>UNLOCK TABLES;

테이블 잠금

데이터 테이블 잠금을 피하기 위해 데이터 테이블 잠금 백업 프로세스 중에 테이블이

업데이트

mysql>LOCK TABLES tbl_name READ;

테이블에 쓰기 잠금 추가:

mysql>LOCK TABLES tbl_name WRITE;

[관련 권장 사항]

1.Mysql 무료 동영상 튜토리얼

2.

수백만 개의 항목에 대한 데이터베이스 쿼리 속도를 향상시키는 방법

3.

5가지 일반적인 데이터베이스 설계 실수

4.

Mysql의 원본 내용을 그대로 유지하고 나중에 내용을 추가하는 sql 문에 대한 자세한 설명

5.

MySQL에서 자주 사용하는 SQL 문 작성 방법 요약

위 내용은 MYSQL의 테이블 잠금 해제 및 잠금에 대한 자세한 예의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.