이 기사에서는 테이블 잠금에 대한 관련 구문 분석을 주로 소개하는 mysql에 대한 관련 지식을 제공합니다. MySQL을 사용하면 클라이언트 세션이 특정 기간 내에 다른 세션에 액세스하지 못하도록 명시적으로 테이블 잠금을 획득할 수 있습니다. 아래의 동일한 표가 모든 사람에게 도움이 되기를 바랍니다.
추천 학습: mysql 비디오 튜토리얼
잠금은 테이블과 관련된 플래그입니다. MySQL을 사용하면 클라이언트 세션이 명시적으로 테이블 잠금을 획득하여 다른 세션이 특정 기간 동안 동일한 테이블에 액세스하는 것을 방지할 수 있습니다. 클라이언트 세션은 자체 테이블 잠금만 획득하거나 해제할 수 있습니다. 다른 세션에 대한 테이블 잠금을 획득하거나 해제할 수 없습니다.
CREATE TABLE tbl ( id INT NOT NULL AUTO_INCREMENT, col INT NOT NULL, PRIMARY KEY (id)) Engine = InnoDB;
다음 문은 명시적으로 테이블 잠금을 획득합니다.
LOCK TABLES table_name [READ | WRITE]
테이블을 잠그려면 LOCK TABLES 키워드 뒤에 해당 이름을 지정합니다. 또한 READ 또는 WRITE 등의 잠금 유형을 지정할 수 있습니다.
테이블에 대한 잠금을 해제하려면 다음 명령문을 사용하세요.
UNLOCK TABLES;
READ 잠금의 특징은 다음과 같습니다.
예:
첫 번째 세션에서 먼저 mysqldemo 데이터베이스에 연결하고 아래와 같이 CONNECTION_ID() 함수를 사용하여 현재 연결 ID를 가져옵니다.
SELECT CONNECTION_ID();
그런 다음 tbl에 새 연결 ID를 삽입합니다. 테이블 괜찮아.
INSERT INTO tbl(col) VALUES(10);
다음으로 tbl 테이블의 데이터를 쿼리합니다.
SELECT * FROM tbl;
그런 다음 잠금을 얻으려면 LOCK TABLE 문을 사용하세요.
LOCK TABLE tbl READ;
마지막으로 동일한 세션 내에서 tbl 테이블에 새 행을 삽입하려고 하면 오류 메시지가 표시됩니다.
INSERT INTO tbl(col) VALUES(11);
따라서 READ가 잠금을 획득하면 동일한 세션의 테이블에 데이터를 쓸 수 없습니다.
다른 세션의 잠금을 확인하세요.
먼저 mysqldemo에 연결하고 연결 ID를 확인합니다:
SELECT CONNECTION_ID();
그런 다음 tbl 테이블에서 데이터를 검색합니다:
SELECT * FROM tbl;
다음으로 tbl 테이블에 새 행을 삽입합니다:
INSERT INTO tbl(col) VALUES(20);
second 첫 번째 세션 READ가 tbl 테이블에 대한 잠금을 획득했지만 아직 해제하지 않았기 때문에 각 세션의 삽입 작업은 대기 상태입니다.
자세한 내용은 SHOW PROCESSLIST에서 확인하실 수 있습니다.
SHOW PROCESSLIST;
이후 첫 번째 세션으로 돌아가서 UNLOCK TABLES 문을 사용하여 잠금을 해제합니다. READ가 첫 번째 세션에서 잠금을 해제한 후 INSERT는 두 번째 세션에서 작업을 수행합니다.
unlock tables;
마지막으로 tbl 테이블의 데이터를 확인하여 두 번째 세션의 INSERT 작업이 실제로 실행되는지 확인합니다.
SELECT * FROM tbl;
WRITE 잠금에는 다음과 같은 특징이 있습니다.
먼저 WRITE는 첫 번째 세션에서 잠금을 가져옵니다.
LOCK TABLE tbl WRITE;
그런 다음 tbl 테이블
INSERT INTO tbl(col) VALUES(11);
에 새 행을 삽입하면 작동합니다.
다음으로 tbl 테이블에서 데이터를 읽습니다.
SELECT * FROM tbl;
그것도 작동합니다.
이후 두 번째 세션부터 데이터 쓰기 및 읽기를 시도해 보세요.
INSERT INTO tbl(col) VALUES(21); SELECT * FROM tbl;
最后,从第一个会话中释放锁定。
UNLOCK TABLES;
看到第二个会话中的所有待处理操作都已执行,下图说明了结果:
推荐学习:mysql视频教程
위 내용은 MySQL 구문 분석 테이블 잠금의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!