Mysql 쿼리가 의미하는 것은 무엇입니까?
SHOW PROCESSLIST;
상태 열에 “데이터 전송”을 반환합니까?
쿼리가 실행되었고 MySQL이 “결과”데이터를 클라이언트에 보내는 것을 의미한다고 생각하지만 시간이 너무 오래 걸리는 이유가 궁금합니다.
감사합니다.
답변
이것은 오해의 소지가 있습니다. “데이터 읽기 및 필터링”이라고합니다.
이것은 MySQL
아직 읽히지 않은 디스크 (또는 메모리)에 일부 데이터가 저장되어 있음을 의미합니다 . 테이블 자체, 인덱스, 임시 테이블, 정렬 된 출력 등일 수 있습니다.
하나의 레코드 만 필요한 1M 레코드 테이블 (인덱스 없음)이있는 경우 MySQL
아직 아무것도 전송하지 않았음에도 불구하고 테이블을 스캔하는 동안 상태를 “데이터 전송”으로 출력합니다.
답변
이 상태에서 :
스레드가 SELECT 문에 대한 행을 읽고 처리 하고 클라이언트에 데이터를 전송 중입니다.
이 상태에서 발생하는 작업이이 상태에서 대량의 디스크 액세스 (읽기) 를 수행하는 경향이
있습니다.
그렇기 때문에 완료하는 데 시간이 더 걸리고 지정된 쿼리 수명 동안 가장 오래 실행되는 상태 입니다.