Spec-Zone .ru
спецификации, руководства, описания, API

5.7.1.4. Зонды Парсинга запроса

Зонды парсинга запроса инициированы прежде, чем исходный SQL-оператор анализируется и когда парсинг оператора и определение модели выполнения, требуемой обработать оператор, были завершены:

query-parse-start(query)query-parse-done(status)

Например, Вы могли контролировать время выполнения для того, чтобы проанализировать данный запрос, используя следующий сценарий D:

#!/usr/sbin/dtrace -s#pragma D option quietmysql*:::query-parse-start{   self->parsestart = timestamp;   self->parsequery = copyinstr(arg0);}mysql*:::query-parse-done/arg0 == 0/{   printf("Parsing %s: %d microseconds\n", self->parsequery,((timestamp - self->parsestart)/1000));}mysql*:::query-parse-done/arg0 != 0/{   printf("Error parsing %s: %d microseconds\n", self->parsequery,((timestamp - self->parsestart)/1000));}

В вышеупомянутом сценарии предикат используется на query-parse-done так, чтобы различный вывод был сгенерирован основанный на значении состояния зонда.

Выполняя сценарий и контролируя выполнение:

shell> ./query-parsing.dError parsing select from t1 join (t2) on (t1.i = t2.i) order by t1.s,t1.i limit 10: 36 msParsing select * from t1 join (t2) on (t1.i = t2.i) order by t1.s,t1.i limit 10: 176 ms