MySQL 서버에서 느린 쿼리 로그없이 느린 쿼리 식별
-
26-09-2020 - |
문제
느린 쿼리를 로깅하지 않고 느린 쿼리를 확인하는 다른 방법이 있습니다.바쁜 서버가 메모리와 I / O를 저장하기 위해 많이 로그를 할 여유가 없습니다.그런 다음 느린 쿼리가 있는지 확인할 수있는 다른 방법이 있습니까?우리는 쿼리의 프로파일 링을 수행 할 수 있지만 여전히 시간과 메모리의 대부분을 취하는 쿼리를 식별하기 위해 정확히 무엇을 할 수 있는지 확실하지 않습니다.
은 MySQL 관리를 시작하고이를 처리하는 방법을 확실하지 않습니다.어떤지도가 높이 평가 될 것입니다.
해결책
느린 쿼리 로그를 전혀 활성화하지 않으려면 제안이 있습니다
pt-query-digest < / a> 시간 간격 동안.
에서이 문제를 몇 번 제안했습니다.-
Nov 24, 2011
: MySQL 일반 쿼리 로그 성능 효과 -
Apr 24, 2012
: MySQL 처리량의 피크 조사 -
Jul 26, 2012
: 지금 무엇을 실행 중입니까? / li>
내 Nov 24, 2011
링크 , pt를 시작할 수있는 쉘 스크립트를 제공했습니다. - query-digest .
시도를주십시오 !!!
다른 팁
예를 들어 10 초마다 명령문을 트리거하는 스크립트의 루프에서 다음 명령문을 실행할 수 있습니다.
mysql -e 'SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST where time>10 and command<>"Sleep"'
사용자가 쿼리에 따라 더 많은 정보를 제공하도록 사용자 정의 할 수 있습니다.
mysql> desc INFORMATION_SCHEMA.PROCESSLIST;
+---------------+---------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+---------------+---------------------+------+-----+---------+-------+
| ID | bigint(21) unsigned | NO | | 0 | |
| USER | varchar(16) | NO | | | |
| HOST | varchar(64) | NO | | | |
| DB | varchar(64) | YES | | NULL | |
| COMMAND | varchar(16) | NO | | | |
| TIME | int(7) | NO | | 0 | |
| STATE | varchar(64) | YES | | NULL | |
| INFO | longtext | YES | | NULL | |
| TIME_MS | bigint(21) | NO | | 0 | |
| ROWS_SENT | bigint(21) unsigned | NO | | 0 | |
| ROWS_EXAMINED | bigint(21) unsigned | NO | | 0 | |
+---------------+---------------------+------+-----+---------+-------+
11 rows in set (0.00 sec)
.
동일한 쿼리를 여러 번 저장하지 않으려면 쿼리의 해시를 고유 키로 사용할 수 있습니다.
제휴하지 않습니다 dba.stackexchange