53 votes

Existe-t-il un outil permettant de profiler les requêtes sqlite ?

J'utilise une base de données SQLite et j'aimerais accélérer mes requêtes, peut-être avec des index ou en les restructurant complètement.

Existe-t-il un outil permettant de profiler les requêtes, qui pourrait m'aider à déterminer où les choses ralentissent ?

Je sais que je pourrais simplement entrer des requêtes dans un outil comme SQLite Administrator pour les chronométrer, mais je cherche quelque chose d'un peu plus systématique que cela - peut-être quelque chose qui reste en arrière-plan et examine toutes les requêtes que j'entre sur une période, en donnant une ventilation des goulots d'étranglement.

45voto

Rohan Nicholls Points 221

Cela ne répondra qu'à une partie de la question (la plus inutile, malheureusement).

J'ai fait une recherche sur Google parce que je cherchais quelque chose pour chronométrer les requêtes et le client sqlite3 a une méta commande de chronométrage.

sqlite> .timer on

à partir de là, tous les résultats des requêtes seront accompagnés de statistiques sur le temps cpu. J'espère que cela vous aidera au moins un peu.

26voto

Samuel Neff Points 35554

Vous avez un mélange de questions ici. Pour voir quelles requêtes sont exécutées et combien de temps chacune d'entre elles prend, vous devrez soit modifier sqlite3.dll si une application est liée à cette dernière, soit, s'il s'agit de votre propre application, l'écrire plus facilement dans votre code (nous le faisons et enregistrons toutes les requêtes, transactions, durées, etc.)

Pour l'analyse des requêtes individuelles, vous pouvez utiliser EXPLAIN . Il ne vous indiquera pas la chronologie des étapes individuelles d'une requête, mais il vous dira comment la requête a été exécutée.

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

Une instruction SQL peut être précédée du mot clé "EXPLAIN" ou de l'expression "EXPLAIN QUERY PLAN". L'une ou l'autre de ces modifications fait que l'instruction SQL se comporte comme une requête et renvoie des informations sur la façon dont l'instruction SQL aurait fonctionné si le mot-clé ou la phrase EXPLAIN avait été omis.

Lorsque le mot clé EXPLAIN apparaît seul, l'instruction se comporte comme une requête qui renvoie la séquence d'instructions de la machine virtuelle qu'elle aurait utilisée pour exécuter la commande si le mot clé EXPLAIN n'avait pas été présent. Lorsque la phrase EXPLAIN QUERY PLAN apparaît, l'instruction renvoie des informations de haut niveau sur les indices qui auraient été utilisés.

La sortie de EXPLAIN et EXPLAIN QUERY PLAN est destinée à l'analyse interactive et au dépannage uniquement. Les détails du format de sortie sont susceptibles de changer d'une version de SQLite à l'autre. Les applications ne devraient pas utiliser EXPLAIN ou EXPLAIN QUERY PLAN car leur comportement exact est non documenté, non spécifié et variable.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X