mysql 느린 쿼리 로그 내에서 "잠금 시간"을 어떻게 해석해야합니까?


12

MySQL 느린 쿼리 로그에 표시되는 쿼리의 잠금 시간을 가장 잘 해석하는 방법을 이해하려고합니다.

예를 들어 UPDATE 쿼리에 10 초의 잠금 시간이있는 경우 업데이트 쿼리가 잠금을 얻은 후 총 시간이라고 가정합니다. 이전 선택 쿼리가 완료되기를 기다리고 있지만 UPDATE 동작 자체를 실행하지 않더라도 UPDATE 쿼리 이후에 정렬 된 모든 SELECT 쿼리를 잠그기 때문에 시계가 작동해야합니다.

그리고 SELECT 쿼리 잠금은 어떻습니까? 일부 쿼리에는 잠금 시간이 어떻게됩니까? 후속 업데이트 테이블이 있기 때문에 테이블을 함께 잠그고 있기 때문입니다.

답변:


19

lock_time슬로우 쿼리 로그에 실제로 쿼리가 실행하는 데 필요한 잠금을 획득하기 위해 대기하는 시간의 양입니다. 예를 들어, UPDATES쿼리에는 쓰기 잠금이 필요합니다.

잠금은 또한 테이블에서 사용중인 스토리지 엔진에 따라 다릅니다. 작성할 때 InnoDB는 행 수준 잠금을 사용하고 변경중인 행만 잠급니다. MyISAM은 업데이트 / 삽입 / 삭제가 완료 될 때까지 전체 테이블을 잠급니다.

MyISAM에 대한 전체 테이블 잠금은 SELECT쿼리가 느린 쿼리 로그에 lock_time을 갖는 큰 이유 입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.