2010-07-08 4 views
42

SQLite 데이터베이스를 사용하고 있으며 인덱스를 사용하거나 완전히 재구성하여 쿼리 속도를 높이고 싶습니다.sqlite 쿼리를 프로파일 링하는 도구가 있습니까?

쿼리를 프로파일 링하는 도구가있어 상황이 느려지는 곳을 결정하는 데 도움이 될 수 있습니까?

나는 SQLite Administrator와 같은 도구에 쿼리를 입력 할 수 있다는 것을 알고 있지만, 그보다 조금 더 체계적인 것을 찾고 있습니다. 백그라운드에서 앉아서 모든 쿼리를 살펴볼 수 있습니다. 나는 어떤 병목이든 붕괴시킨 채 한시기를 입력했다.

+0

+1 좋은 질문입니다. 나는 그것들 중 하나를 원한다. 분명히 당신이 여기에서 묻기 전에봤을 때, 아마 그렇지 않을 수도 있습니다. SOurceForge & FreshMeat도 확인 했습니까? – Mawg

+1

구글에서 'sqlite profile'을 검색하면 다음과 같은 결과가 나옵니다 : http://katastrophos.net/andre/blog/2007/01/04/sqlite-simple-timing-profiler-patch/ 그러나 이것은 sqlite 쉘을위한 패치입니다. 나는 피하는 것을 더 좋아한다. 그리고 나는 그것이 내가 원하는 것을하지 않는다고 생각한다.Sourceforge/FM은 아무런 관심을 보이지 않았습니다. (원래의 질문을하기 전에 거기에서 체크 한 것이 아닙니다.) – bryn

답변

20

여기에 여러 가지 질문이 있습니다. 실행되는 쿼리와 각 쿼리의 소요 시간을 보려면 응용 프로그램이 해당 응용 프로그램에 연결되어있는 경우 sqlite3.dll을 수정하거나 자신의 응용 프로그램에 코드를 쉽게 작성할 수 있어야합니다 (우리는이 작업을 수행합니다. 쿼리, 트랜잭션, 타이밍 등).

개별 쿼리 분석의 경우 EXPLAIN을 사용할 수 있습니다. 쿼리 내에서 개별 단계의 타이밍을 알려주지는 않지만 쿼리가 실행 된 방식을 알려줍니다.

http://www.sqlite.org/lang_explain.html

SQL 문

는 "쿼리 계획을 EXPLAIN"키워드 "EXPLAIN"또는 문구가 선행 될 수있다. 두 수정 중 하나를 수행하면 SQL 문이 쿼리로 작동하고 EXPLAIN 키워드 또는 구가 생략 된 경우 SQL 문이 작동하는 방식에 대한 정보가 반환됩니다.

EXPLAIN 키워드가 단독으로 나타나면 EXPLAIN 키워드가 표시되지 않은 상태에서 명령어를 실행하는 데 사용한 가상 시스템 명령어의 시퀀스를 반환하는 쿼리로 작동합니다. EXPLAIN QUERY PLAN 구가 나타나면 명령문은 사용 된 색인에 대한 상위 레벨 정보를 리턴합니다.

EXPLAIN 및 EXPLAIN QUERY PLAN의 출력은 대화식 분석 및 문제 해결에만 사용됩니다. 출력 형식의 세부 사항은 SQLite의 한 릴리즈에서 다음 버전으로 변경 될 수 있습니다. 응용 프로그램은 정확한 동작이 문서화되지 않았거나 지정되지 않았으며 변수이므로 EXPLAIN 또는 EXPLAIN QUERY PLAN을 사용하면 안됩니다.

+0

내가 듣고 싶었던 대답이 아니지만 나는이 대답을 받아 들일 것이다. 나는 그 직업을위한 좀 더 높은 수준의 도구를 원했다. – bryn

+1

@ 브린, 나는 당신과 동의합니다, SQLite는 일반적으로 좋은 수준의 도구가 부족합니다. 실제로 그것이 얼마나 광범위하게 사용되는지를 고려하면 실제로는 놀랍습니다. 아마 그것의 대다수는 좋은 관리 또는 프로파일 링 툴을 필요로하지 않는 간단한 스키마로 작은 데이터베이스 (즉, 임베디드 디바이스)로 격리되어있을 것입니다. –

32

이 부분은 질문의 일부분에만 대답합니다 (불행히도 가장 도움이되지 않는 부분).

나는 시간 쿼리에 뭔가를 찾고 있었고 sqlite3 클라이언트에 타이머 메타 명령이 있기 때문에이를 검색해 보았습니다.

sqlite가>에 거기에서

에 .timer 모든 쿼리 결과가 추가 CPU 타이머 통계를해야합니다. 희망 사항이 조금이라도 도움이되기를 바랍니다.

+6

+1이 질문에 답하지는 않지만,이 페이지에 오는 사람들의 50 %가 – tjb

+1

을 찾고있는 것이 틀림 없습니다. 내가 여기에 온 것은 분명합니다. 감사! –

2

이제 SQLite는 실험 sqlite3_tracesqlite3_profile을가집니다 (자세한 내용은 https://www.sqlite.org/c3ref/profile.html 참조). 그들은 긴 테스트 동안 통계를 가지고/범인을 조사하는 데 도움이 될 수 있습니다.

관련 문제