>  기사  >  데이터 베이스  >  mysql 쿼리 잠긴 테이블에 대해 자세히 논의

mysql 쿼리 잠긴 테이블에 대해 자세히 논의

PHPz
PHPz원래의
2023-04-17 09:19:48979검색

MySQL은 관계형 데이터베이스 관리 시스템을 기반으로 하는 오픈 소스 소프트웨어입니다. 이는 애플리케이션에서 널리 사용되며 개발자에게 안정적인 데이터 저장 방법을 제공합니다. 그러나 MySQL은 대량의 데이터를 처리할 때 잠긴 테이블을 유지하는 데 문제가 있기 때문에 개발자는 잠긴 테이블을 쿼리하는 방법을 알아야 합니다.

MySQL을 사용하여 개발할 때 잠긴 테이블을 쿼리해야 하는 경우가 종종 있습니다. MySQL은 명령줄 도구 사용, 시스템 뷰 쿼리, 정보 스키마 테이블 쿼리 등 현재 잠긴 테이블을 쿼리하는 다양한 방법을 제공합니다. 각 쿼리 방법은 아래에 자세히 설명되어 있으며 몇 가지 예가 제공됩니다.

  1. 명령줄 도구를 사용하여 잠긴 테이블 쿼리
    명령줄에서 SHOW PROCESSLIST 명령을 사용하여 현재 실행 중인 프로세스와 스레드를 쿼리하세요. MySQL의 모든 테이블에는 이와 관련된 스레드 ID가 있으므로 이 명령을 사용하여 현재 잠겨 있는 테이블을 확인할 수 있습니다. 예를 들어, 다음 명령은 실행 중인 모든 쿼리를 쿼리하고 지정된 테이블을 잠그는 쿼리를 찾을 수 있습니다.
SHOW PROCESSLIST;

이 명령은 현재 실행 중인 모든 MySQL 스레드 목록을 표시합니다. 목록에서는 ID, 사용자, 호스트, 데이터베이스, 명령, 시간, 상태 등 유용한 정보를 볼 수 있습니다. 예를 들어 "table_name"이라는 테이블을 잠그는 스레드가 있는 경우 "Command" 열에서 "LOCK" 필드를 찾을 수 있습니다. 또한 "정보" 열에서는 쿼리에 의해 실행되는 SQL 문을 볼 수 있습니다.

  1. 시스템 뷰 쿼리 및 잠긴 테이블 확인
    MySQL은 또한 현재 실행 중인 스레드, 잠금 정보 및 뮤텍스, 세션 및 해당 속성, 데이터베이스 상태 등을 확인하기 위한 수많은 시스템 뷰를 제공합니다. 현재 잠긴 테이블을 확인하려면 다음 뷰를 쿼리하세요.
SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCKS WHERE LOCK_TABLE LIKE '%table_name%';

이 쿼리 문에서 "table_name"을 쿼리하려는 테이블 이름으로 바꿀 수 있습니다. 이 문은 현재 InnoDB 엔진에 의해 잠긴 모든 행과 테이블을 반환합니다. 또한 INFORMATION_SCHEMA.INNODB_LOCK_WAITS 뷰를 쿼리하여 잠금 리소스를 기다리는 스레드를 찾을 수 있습니다.

  1. 정보 스키마 테이블을 쿼리하여 잠긴 테이블 확인
    MySQL의 정보 스키마 테이블을 통해 사용자는 데이터베이스 서버에서 사용 중인 다양한 리소스를 검사할 수 있습니다. 여기에는 열린 테이블, 현재 스레드, 잠긴 행 및 테이블, 시간 등이 포함됩니다. 다음 테이블을 쿼리하여 현재 잠긴 테이블을 찾을 수 있습니다.
SELECT * FROM information_schema.TABLES WHERE ENGINE = 'InnoDB' AND TABLE_NAME = 'table_name';

위 쿼리에서 "table_name"을 쿼리하려는 테이블 이름으로 바꿀 수 있습니다. 이 쿼리는 지정된 테이블 서버 및 스토리지 엔진의 세부 정보를 반환하며, 테이블이 잠겨 있는 경우 LOCK_TYPE 필드에서 잠금 유형을 볼 수 있습니다.

요약:
잠긴 테이블에 대한 MySQL 쿼리는 다양한 방법으로 수행할 수 있습니다. 명령줄 도구를 사용하여 실행 중인 스레드를 쿼리하고 특정 테이블을 잠그는 스레드를 찾습니다. 시스템 뷰를 사용하여 진행 중인 작업, 대기 중인 작업 및 잠금을 획득하는 작업을 확인하기 위해 information_schema.TABLES 테이블을 쿼리하여 식별합니다. 실행 중인 쿼리가 잠금에 관한 것인지 아니면 다른 쿼리에 관한 것인지 여부. 그러나 변경하기 전에 공식 MySQL 문서를 주의 깊게 읽어 불필요한 손실을 피하기 위해 필요한 모든 지식과 권장 사항을 이해하십시오.

위 내용은 mysql 쿼리 잠긴 테이블에 대해 자세히 논의의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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