portable - sqlite studio
¿Hay alguna herramienta para perfilar las consultas de sqlite? (3)
Estoy usando una base de datos SQLite y me gustaría acelerar mis consultas, quizás con índices o reestructurando por completo.
¿Existe alguna herramienta para las consultas de perfil que pueda ayudarme a decidir dónde se ralentizan las cosas?
Sé que podría simplemente ingresar consultas en una herramienta como Administrador SQLite para cronometrarlas, pero estoy buscando algo un poco más sistemático que eso, tal vez algo que se sienta en segundo plano y vea todas las consultas que ingrese en un período, dando un desglose de los cuellos de botella.
Ahora, SQLite tiene experimental sqlite3_trace
y sqlite3_profile
(ver https://www.sqlite.org/c3ref/profile.html para más detalles). Pueden ser útiles para tener estadísticas / investigar culpable durante pruebas largas.
Esto solo responderá una parte de la pregunta (la parte más inútil, desafortunadamente).
Busqué en Google esto porque estaba buscando algo para las consultas de tiempo y el cliente sqlite3 tiene un comando de temporizador meta.
sqlite> .timer en
de allí en adelante, todos los resultados de la consulta tendrán las estadísticas del temporizador de la CPU anexadas. Espero que esto ayude al menos un poco.
Tienes una mezcla de preguntas aquí. Para ver qué consultas se ejecutan y cuánto tiempo tarda cada una, necesitará modificar sqlite3.dll si una aplicación está enlazando con eso o si es su propia aplicación, puede escribirla en su código más fácilmente (hacemos esto y luego todo consultas, transacciones, tiempos, etc.).
Para el análisis de consultas individuales, puede usar EXPLAIN
. No le dirá el tiempo de los pasos individuales dentro de una consulta, pero le indicará cómo se ejecutó la consulta.
http://www.sqlite.org/lang_explain.html
Una declaración SQL puede ir precedida por la palabra clave "EXPLICAR" o por la frase "EXPLICAR EL PLAN DE PREGUNTA". Cualquiera de las modificaciones hace que la instrucción SQL se comporte como una consulta y devuelva información sobre cómo habría funcionado la instrucción SQL si se hubiera omitido la palabra clave o frase EXPLAIN.
Cuando la palabra clave EXPLAIN aparece por sí misma, hace que la declaración se comporte como una consulta que devuelve la secuencia de instrucciones de la máquina virtual que habría utilizado para ejecutar el comando si la palabra clave EXPLAIN no estuviera presente. Cuando aparece la frase EXPLAIN QUERY PLAN, la declaración devuelve información de alto nivel sobre los índices que se habrían utilizado.
El resultado de EXPLAIN y EXPLAIN QUERY PLAN está destinado únicamente para el análisis interactivo y la resolución de problemas. Los detalles del formato de salida están sujetos a cambios de una versión de SQLite a la siguiente. Las aplicaciones no deben usar EXPLAIN o EXPLAIN QUERY PLAN ya que su comportamiento exacto es no documentado, no especificado y variable.