Spec-Zone .ru
спецификации, руководства, описания, API
|
query-start
и query-done
зонды инициированы, когда
определенный запрос получается сервером и когда запрос был завершен, и информация была успешно отправлена
клиенту.
query-start(query, connectionid, database, user, host)query-done(status)
query-start
: Инициированный после того, как строка
запроса была получена от клиента. Параметры:
query
: Полный текст представленного
запроса.
connectionid
: ID соединения клиента,
который представил запрос. ID соединения равняется ID соединения, возвращенному, когда
клиент сначала соединяется и Id
значение в выводе от SHOW
PROCESSLIST
.
database
: Имя базы данных, на котором
выполняется запрос.
user
: Имя пользователя, используемое, чтобы
соединиться с сервером.
host
: Имя узла клиента.
query-done
: Инициированный, как только запрос был
выполнен, и информация была возвращена клиенту. Зонд включает единственный параметр, status
, который возвращается 0, когда запрос успешно выполняется и 1,
если была ошибка.
Можно получить простой отчет времени выполнения для каждого запроса, используя следующий сценарий 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