Spec-Zone .ru
спецификации, руководства, описания, API
|
Зонды кэша запроса запускаются, выполняя любой запрос. query-cache-hit
запрос
инициирован, когда запрос существует в кэше запроса и может использоваться, чтобы возвратить информацию о кэше
запроса. Параметры содержат исходный текст запроса и число строк, возвращенных из кэша запроса для запроса. Если
запрос не в пределах кэша запроса, или кэш запроса не включается, то query-cache-miss
зонд инициирован вместо этого.
query-cache-hit(query, rows)query-cache-miss(query)
query-cache-hit
: Инициированный, когда запрос был
найден в пределах кэша запроса. Первый параметр, query
, содержит
оригинальный текст запроса. Второй параметр, rows
, целое число, содержащее
число строк в кэшируемом запросе.
query-cache-miss
: Инициированный, когда запрос не
находится в пределах кэша запроса. Первый параметр, query
, содержит
оригинальный текст запроса.
Зонды кэша запроса лучше всего объединяются с зондом на основном запросе так, чтобы можно было определить различия во времена между использованием или не использованием кэша запроса для указанных запросов. Например, в следующем сценарии D, информация о кэше запроса и запроса объединяется в вывод информации во время контроля:
#!/usr/sbin/dtrace -s#pragma D option quietdtrace:::BEGIN{ printf("%-20s %-20s %-40s %2s %-9s\n", "Who", "Database", "Query", "QC", "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; self->qc = 0;}mysql*:::query-cache-hit{ self->qc = 1;}mysql*:::query-cache-miss{ self->qc = 0;}mysql*:::query-done{ printf("%-20s %-20s %-40s %-2s %-9d\n",self->who,self->db,self->query,(self->qc ? "Y" : "N"), (timestamp - self->querystart) / 1000000);}
Выполняя сценарий можно видеть эффекты кэша запроса. Первоначально кэш запроса отключается. Если Вы устанавливаете размер кэша запроса и затем выполняете запрос многократно, следует видеть, что кэш запроса используется, чтобы возвратить данные запроса:
shell> ./query-cache.droot@localhost test select * from t1 order by i limit 10 N 1072root@localhost set global query_cache_size=262144 N 0root@localhost test select * from t1 order by i limit 10 N 781root@localhost test select * from t1 order by i limit 10 Y 0