반응형
log_slow_queries = /var/log/mysql/mysql-slow.log
long_query_time = 1
Reading mysql slow query log from mysql-slow.log
Count: 1 Time=199.23s (199s) Lock=0.00s (0s) Rows=32513.0 (32513), ...
SELECT /*!N SQL_NO_CACHE */ * FROM `mytable`
...
원본 mysql-slow.log
를 보면 전체 쿼리는 다음과 같습니다.
SELECT /*!40001 SQL_NO_CACHE */ * FROM `mytable`;
따라서 mysqldumpslow
는 숫자를 N
으로 대체했습니다 (유사한 쿼리 집계를 지원하기 위해).
따라서 질문은 해당 쿼리의 출처와 / *! 40001 SQL_NO_CACHE * /
비트의 의미입니다.
내가 알 수있는 한, 백업을 수행하던 mysqldump
명령 (따라서 캐시 된 데이터를 원하지 않음)에서 온 것일 수 있습니다. 그렇다면 32,000 행만 읽었으므로 왜 199 초가 걸렸을까요?
100 개, 50 개, 더 합리적인 3 개까지 다른 테이블에 대해 더 유사한 쿼리가 많이 있습니다. 대부분의 행은 약 10 ~ 20,000 개이며 가장 큰 행은 450,000 개입니다.
해결 방법
클라이언트 (백업 시스템)가 테이블의 모든 행을 읽어야하기 때문에 쿼리는 아마도 '느린'것입니다. 199 초가 소요됩니다.
다음과 같은 작업을 한 경우에 유의하십시오.
SELECT * FROM table LIMIT 100;
// read 50 rows
// sleep for 5 minutes
// read last 50 rows
위의 쿼리는 느린 로그에 나타납니다. 처음 시작할 때부터 끝날 수있을 때까지 (마지막 요청 된 행을 전송하여) 5 분이 걸렸기 때문입니다.
참조 페이지 https://stackoverflow.com/questions/8282788
반응형
'MySql' 카테고리의 다른 글
MySQL * 대신 Sequelize (NodeJS)로 특정 필드 지정 (0) | 2020.09.28 |
---|---|
MySQL Mysqldump : 삽입하려는 테이블의 이름을 변경할 수 있습니까? (0) | 2020.09.28 |
MySQL mysql에서 여러 행을 하나의 행과 여러 열로 병합 (0) | 2020.09.27 |
MySQL MySql 워크 벤치에서 테이블을 조인하는 방법은 무엇입니까? (0) | 2020.09.27 |
MySQL group_concat MYSQL 새 줄 (0) | 2020.09.27 |
댓글