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

5.7.1.3. Зонды запроса

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

query-start(query, connectionid, database, user, host)query-done(status)

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

#!/usr/sbin/dtrace -s#pragma D option quietdtrace:::BEGIN{   printf("%-20s %-20s %-40s %-9s\n", "Who", "Database", "Query", "Time(ms)");}mysql*:::query-start{   self->query = copyinstr(arg0);   self->connid = arg1;   self->db    = copyinstr(arg2);   self->who   = strjoin(copyinstr(arg3),strjoin("@",copyinstr(arg4)));   self->querystart = timestamp;}mysql*:::query-done{   printf("%-20s %-20s %-40s %-9d\n",self->who,self->db,self->query,          (timestamp - self->querystart) / 1000000);}

Выполняя вышеупомянутый сценарий следует получить общее представление о времени выполнения Ваших запросов:

shell> ./query.dWho                  Database             Query                                    Time(ms)root@localhost       test                 select * from t1 order by i limit 10     0root@localhost       test                 set global query_cache_size=0            0root@localhost       test                 select * from t1 order by i limit 10     776root@localhost       test                 select * from t1 order by i limit 10     773root@localhost       test                 select * from t1 order by i desc limit 10 795