일부 쿼리를 실행하고 mysqld 프로세스가 100 % CPU 성능을 사용하여 종료하지 않고 문제가 발생했습니다. 나는이 쿼리를 정확하게 지적하고자한다. 문제는 log/development.log에 완료된 쿼리 만 포함되어 있다는 것입니다. 어떤 생각?실행 전 쿼리 실행
2
A
답변
1
, SQL 쿼리를 고려
SHOW PROCESSLIST
또는 명령 줄에서
:mysqladmin processlist
다른 방법으로, 가장 강력한 방법의 '실행'메소드를 오버라이드 (override)하는 것입니다 ActiveRecord :: Base 연결 인스턴스. 당신은 application.rb에이 코드를 넣어
http://www.misuse.org/science/2006/12/12/sql-logging-in-rails/
:이 문서에서는 일반적인 접근 방식을 보여줍니다
# define SQL_LOG_FILE, SQL_LOG_MAX_LINES
connection = ActiveRecord::Base.connection
class << connection
alias :original_exec :execute
def execute(sql, *name)
# try to log sql command but ignore any errors that occur in this block
# we log before executing, in case the execution raises an error
begin
lines = if File::exists?(SQL_LOG_FILE) then IO::readlines(SQL_LOG_FILE) else [] end
log = File.new(SQL_LOG_FILE, "w+")
# keep the log to specified max lines
if lines.length > SQL_LOG_MAX_LINES
lines.slice!(0..(lines.length-SQL_LOG_MAX_LINES))
end
lines << Time.now.strftime("%x %I:%M:%S %p")+": "+sql+"n"
log.write(lines)
log.close
$sql_log = sql
rescue Exception => e
;
end
# execute original statement
original_exec(sql, *name)
end # def execute
end # class <<
2
당신은
show processlist;
명령을 통해 실행/미완성 문장을 살펴 수 있습니다.
5
몇 가지 옵션이 있다고 생각합니다. 첫 번째는 실제로 당신의 development.log를보고 어떤 행동이 그것을 일으키는지를보고 있습니다. 레일을 달아달라고 요청한 검색어를 살펴보고 해당 검색어를 정확히 찾아보십시오. 시간이 오래 걸리면 아마도 n + 1 개의 검색어를 반환하거나 색인이 누락되거나 다른 성능이 저하되는 것처럼 보일 수 있습니다.
dev 로그에는 완료된 쿼리 만 있다고합니다. 다음 질의가 실행될 작업을 결정할 수 없습니까?
mysqld --log[=file_name] --log-slow-queries[=file_name]
MySQL의 내부에서 PROCESSLIST를 사용하여 현재 문 목록보기 :
show processlist;
을
귀하의 다른 옵션은 로그 (내가 이들 중 일부의 이름이 변경된 생각)으로 mysqld를 시작 것을 포함
이런 일이 다시 일어나지 않도록하려면 New Relic (http://www.newrelic.com/)의 RPM과 같은 레일 성능 모니터를 살펴볼 시간이 필요합니다.
도움이 되었기를 바랍니다. 당신이 MySQL로 평가하는 경우
관련 문제
- 1. 라이센스 실행 전 확인
- 2. 리디렉션 전 작업 실행
- 3. 양식 제출 전 ASP.NET 실행
- 4. 쿼리 실행
- 5. 쿼리 실행 SSIS 패키지 실행 일정을 찾으십시오
- 6. MySQL 쿼리 실행, 임시 값 저장, 다른 쿼리 실행
- 7. Oracle 쿼리 실행 문제
- 8. 쿼리 실행 시간
- 9. Activerecord - 복잡한 쿼리 실행
- 10. DAO를 사용하여 쿼리 실행
- 11. Elixir로 SQL 쿼리 실행
- 12. SQL Plus에서 쿼리 실행
- 13. 쿼리 실행 속도가 느리다
- 14. SQLCE - 쿼리 실행 무시
- 15. 쿼리 실행 오류,
- 16. 실행 쿼리 소스
- 17. pyscopg2에서 쿼리 실행 취소
- 18. MsTest - 어셈블리의 각 테스트 전 메서드 실행
- 19. 변수가 선언되기 전/후에 스크립트 실행 중입니까?
- 20. 시스템 시작 전 응용 프로그램 실행
- 21. Windows 부팅시 프로그램 실행 (로그인 전)
- 22. trigger @ 실행 계획 .. 카디 전 곱
- 23. SQL 병합 쿼리 - 추가 쿼리 실행
- 24. 특정 시간에 SQL 쿼리 실행
- 25. UUID에 대한 Jackrabbit 실행 쿼리
- 26. NHibernate 추가 UPDATE 쿼리 실행
- 27. 쿼리 실행 계획 도구 - Java
- 28. 쿼리 문자열에서 실행 계획을 가져
- 29. 쿼리 실행 중 "IN"문제
- 30. Drupal 노드에서 SPARQL 쿼리 실행
합의 - dev에보고하는 경우, 당신이 호출 된 제어 방법을 볼 수 있습니다 로그인 보고 싶은 모델을 알려주세요. 이 시점에서 필요할 경우 로깅을 추가하여 실행할 쿼리를 알려줄 수 있습니다. –