mysql에서 인위적으로 느린 쿼리를 어떻게 만들 수 있습니까?


15

몇 주 안에 프레젠테이션을 진행할 예정입니다. 이 데모의 일부는 느린 쿼리 로그 사용을 포함한 기본적인 MySQL 문제 해결을위한 것입니다. 데이터베이스를 생성하고 앱을 설치했지만 깨끗한 데이터베이스를 설치했기 때문에 충분한 문제를 생성하기가 어렵습니다.

느린 쿼리 로그에서 쿼리를 얻으려면 다음을 시도했습니다.

느린 쿼리 시간을 1 초로 설정하십시오.

여러 인덱스를 삭제했습니다.

시스템을 강조했다 :

stress --cpu 100 --io 100 --vm 2 --vm-bytes 128M --timeout 1m

wget을 사용하여 일부 기본 웹 페이지 호출을 스크립팅했습니다.

이 중 어느 것도 느린 쿼리를 생성하지 않았습니다. 데이터베이스를 인위적으로 강조하여 문제를 발생시키는 다른 방법이 있습니까? 복잡한 Jmeter 또는 다른로드 생성기를 작성할 수있는 기술이 부족합니다. 나는 아마도 mysql 또는 다른 리눅스 트릭에 내장 된 것을 원할 것입니다.


1
+1 느린 쿼리를 요구합니다. 실제 경우에만 이런 식으로 주위에 있었다면 : D
red

답변:


5

체크 아웃 mysqlslap . --query를 사용하여 webapp의 쿼리 중 하나를 전달하고 --concurrency를 사용하여 동시 클라이언트를 지정할 수 있습니다.


이것은 가장 효과적이었습니다 ...이 기능과 데이터베이스 튜닝 해제 조합을 사용하십시오.
그레이 레이스

34

완전히 인공적이지만 sleep()기능을 사용할 수 있습니다 .

select sleep(10);

로그에서 :

Time                 Id Command    Argument
# Time: 110629 16:19:13
# User@Host: mysql[mysql] @ localhost []
# Query_time: 10.000218  Lock_time: 0.000000 Rows_sent: 1  Rows_examined: 0
SET timestamp=1309389553;
select sleep(10);

제안 주셔서 감사합니다 ... 로그가 커지지 만 앱에 대한 합법적 인 쿼리가되도록하고 싶습니다. 이 방법으로 설명 및 기타 진단 도구를 시연 할 수 있습니다.
그레이 레이스

:) 흠 ... 아마도 전략적으로 효과 LOCK TABLES가있을 것입니다. 너무 클러 지 일 수도 있습니다.
Mark Wagner

1
일반적으로 * from ((select * from database) x)를 선택하고 점점 더 강렬 해지고 나에게 속임수가 있습니다.
alexyorke

DO SLEEP(10);쿼리에서 SLEEP 결과를 원하지 않는 경우 사용하십시오 .
Rasmus Friis Kjeldsen

1

아마도 데이터베이스를 튜닝 해제하는 것이 도움이 될 수 있습니까? 예를 들어 key_buffers 크기를 줄이겠습니까?

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