2016-10-30 3 views
0

Я хочу проверить время выполнения запроса (не использовать .timer on)
Я хочу измерить каждое время выполнения SQL-запроса.
Я думаю, что могу использовать функцию Gettimeofday.
Но я не знаю, что такое точка начала и конца каждого SQL-запроса.Как измерить время выполнения каждого запроса SQL-запроса в SQLite

В трусах,
- Что такое начало/конечная точка во время выполнения запроса
- Как я могу измерить каждый раз, когда выполнение запроса? (Не использовать параметр .timer)

+0

Доступ к базе данных из командной строки 'sqlite3' или вашей собственной программы? –

ответ

2

Если вы используете OS X, я рекомендую вам использовать время (используя командную строку в терминале) для измерения времени выполнения запроса. Это, безусловно, самый простой способ:

time printf "<your query>;" | sqlite3 databaseFile.db > /dev/null 

Пример:

time printf "select * from blame;" | sqlite3 mydata.db > /dev/null 

real 0m1.603s 
user 0m1.167s 
sys  0m0.112s 

команда также работает под управлением Linux. Мы выводим вывод на/dev/null, чтобы избежать потери времени из-за сохранения/печати вывода.

Есть некоторые накладные расходы, связанные с открытием соединения с базой данных и загрузкой исполняемого файла, но это даст вам хорошую идею с точки зрения того, насколько дорого (с точки зрения времени) ваш запрос.

Вы можете получить представление о том, что накладные расходы, делая что-то вроде этого:

time printf ".schema" | sqlite3 mydata.db > /dev/null 

Если вы хотите, чтобы получить лучшее понимание того, что происходит, я рекомендую вам посмотреть в команду объяснить. В sqlite3 сделать:

explain select * from table; 

и вы получите полное объяснение SQLite операций рассчитывает сделать для вычисления запроса.