Существует ли инструмент для профилирования запросов sqlite?

Я использую базу данных SQLite и хотел бы ускорить свои запросы, возможно, с индексами или путем реструктуризации их в целом.

Существует ли инструмент для профилирования запросов, которые могли бы помочь мне решить, где вещи замедляются?

Я знаю, что мог просто ввести запросы в инструмент как Администратор SQLite ко времени их, но я ищу что-то немного более систематическое, чем это - возможно, что-то, что находится в фоновом режиме и смотрит на все запросы, которые я ввожу за период, давая разбивку любых горлышек бутылки.

46
задан bryn 8 July 2010 в 00:04
поделиться

1 ответ

У вас есть несколько вопросов. Чтобы просмотреть, какие запросы выполняются и сколько времени каждый занимает, вам нужно либо изменить sqlite3.dll, если приложение ссылается на него, либо, если это ваше собственное приложение, вы можете проще записать его в свой код (мы делаем это и долго все запросы, транзакции, тайминги и т. д.).

Для анализа отдельного запроса вы можете использовать EXPLAIN . Он не сообщит вам время выполнения отдельных шагов в запросе, но сообщит вам, как запрос был выполнен.

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

Оператору SQL может предшествовать ключевое слово «EXPLAIN» или фраза «EXPLAIN QUERY PLAN». Любая модификация приводит к тому, что оператор SQL ведет себя как запрос и возвращает информацию о том, как оператор SQL работал бы, если бы ключевое слово или фраза EXPLAIN были опущены.

Когда ключевое слово EXPLAIN появляется само по себе, оно приводит к тому, что оператор ведет себя как запрос, который возвращает последовательность инструкций виртуальной машины, которые он использовал бы для выполнения команды, если бы ключевое слово EXPLAIN не присутствовало. Когда появляется фраза EXPLAIN QUERY PLAN, оператор возвращает высокоуровневую информацию о том, какие индексы использовались бы.

Вывод EXPLAIN и EXPLAIN QUERY PLAN предназначен только для интерактивного анализа и устранения неполадок. Детали формата вывода могут изменяться от одного выпуска SQLite к другому. Приложения не должны использовать EXPLAIN или EXPLAIN QUERY PLAN, поскольку их точное поведение не задокументировано, не определено и варьируется.

23
ответ дан 26 November 2019 в 20:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: