#!/usr/sbin/dtrace -s #pragma D option quiet dtrace:::BEGIN { printf("start trace\n"); } mysql*:::connection-start { self->user = copyinstr(arg1); self->host = copyinstr(arg2); printf("connect %d, %s@%s\n", arg0, self->user, self->host); } mysql*:::connection-done { printf("disconnect %d status: %d\n", arg1, arg0); } 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; printf(" query-start\n"); } mysql*:::query-done { printf(" query-done:%s %s %s %d\n",self->query,self->who,self->db, (timestamp - self->querystart) / 1000000); } mysql*:::command-start { self->user = copyinstr(arg2); self->host = copyinstr(arg3); printf(" command %d, %s@%s with connid: %d\n", arg1, self->user, self->host, arg0); } mysql*:::command-done { printf(" command-end: status: %d\n", arg0); } mysql*:::query-parse-start { self->parsequery = copyinstr(arg0); printf(" parse %s\n", self->parsequery); } mysql*:::query-parse-done { printf(" parse-done: %d\n", arg0); } mysql*:::query-cache-hit { self->query= copyinstr(arg0); printf(" query-cache-hit for %s: %d\n", self->query, arg1); } mysql*:::query-cache-miss { self->query= copyinstr(arg0); printf(" query-cache-miss for %s\n", self->query); } mysql*:::query-exec-start { self->query = copyinstr(arg0); self->db = copyinstr(arg2); self->who = strjoin(copyinstr(arg3),strjoin("@",copyinstr(arg4))); printf(" query-exec-start: %s, connid: %d, %s, %s with exec-type %d\n", self->query, arg1, self->db, self->who, arg5); } mysql*:::query-exec-done { printf(" query-exec-done: %d\n", arg0); } mysql*:::insert-row-start { self->db = copyinstr(arg0); self->table = copyinstr(arg1); printf(" insert-row-start: db=%s, table=%s\n", self->db, self->table); } mysql*:::insert-row-done { printf(" insert-row-done: %d\n", arg0); } mysql*:::update-row-start { self->db = copyinstr(arg0); self->table = copyinstr(arg1); printf(" update-row-start: db=%s, table=%s\n", self->db, self->table); } mysql*:::update-row-done { printf(" update-row-done: %d\n", arg0); } mysql*:::delete-row-start { self->db = copyinstr(arg0); self->table = copyinstr(arg1); printf(" delete-row-start: db=%s, table=%s\n", self->db, self->table); } mysql*:::delete-row-done { printf(" delete-row-done: %d\n", arg0); } mysql*:::read-row-start { self->db = copyinstr(arg0); self->table = copyinstr(arg1); printf(" read-row-start: db=%s, table=%s table-scan(0=false,1=true)=%d\n", self->db, self->table, arg2); } mysql*:::read-row-done { printf(" read-row-done: %d\n", arg0); } mysql*:::index-read-row-start { self->db = copyinstr(arg0); self->table = copyinstr(arg1); printf(" index-read-row-start: db=%s, table=%s\n", self->db, self->table); } mysql*:::index-read-row-done { printf(" index-read-row-done: %d\n", arg0); } mysql*:::handler-rdlock-start { self->db = copyinstr(arg0); self->table = copyinstr(arg1); printf(" handler-rdlock-start: db=%s, table=%s\n", self->db, self->table); } mysql*:::handler-rdlock-done { printf(" handler-rdlock-done: %d\n", arg0); } mysql*:::handler-wrlock-start { self->db = copyinstr(arg0); self->table = copyinstr(arg1); printf(" handler-wrlock-start: db=%s, table=%s\n", self->db, self->table); } mysql*:::handler-wrlock-done { printf(" handler-wrlock-done: %d\n", arg0); } mysql*:::handler-rdlock-start { self->db = copyinstr(arg0); self->table = copyinstr(arg1); printf(" handler-unlock-start: db=%s, table=%s\n", self->db, self->table); } mysql*:::handler-unlock-done { printf(" handler-unlock-done: %d\n", arg0); } mysql*:::filesort-start { self->db = copyinstr(arg0); self->table = copyinstr(arg1); printf(" filesort-start: db=%s, table=%s\n", self->db, self->table); } mysql*:::filesort-done { printf(" filesort-done: Status %d, rows %d\n", arg0, arg1); } mysql*:::select-start { self->parsequery = copyinstr(arg0); printf(" select-start %s\n", self->parsequery); } mysql*:::select-done { printf(" select-done with status %d and %d rows\n", arg0, arg1); } mysql*:::insert-start { self->parsequery = copyinstr(arg0); printf(" insert-start %s\n", self->parsequery); } mysql*:::insert-done { printf(" insert-done with status %d and %d rows\n", arg0, arg1); } mysql*:::insert-select-start { self->parsequery = copyinstr(arg0); printf(" insert-select-start %s\n", self->parsequery); } mysql*:::insert-select-done { printf(" insert-select-done with status %d and %d rows\n", arg0, arg1); } mysql*:::update-start { self->parsequery = copyinstr(arg0); printf(" update-start %s\n", self->parsequery); } mysql*:::update-done { printf(" update-done with status %d and %d rows matched/%d rows changed\n", arg0, arg1, arg2); } mysql*:::multi-update-start { self->parsequery = copyinstr(arg0); printf(" multi-update-start %s\n", self->parsequery); } mysql*:::multi-update-done { printf(" multi-update-done with status %d and %d rows matched/%d rows changed\n", arg0, arg1, arg2); } mysql*:::delete-start { self->parsequery = copyinstr(arg0); printf(" delete-start %s\n", self->parsequery); } mysql*:::delete-done { printf(" delete-done with status %d and %d rows\n", arg0, arg1); } mysql*:::multi-delete-start { self->parsequery = copyinstr(arg0); printf(" multi-delete-start %s\n", self->parsequery); } mysql*:::multi-delete-done { printf(" multi-delete-done with status %d and %d rows\n", arg0, arg1); } mysql*:::net-read-start { printf(" net-read-start\n"); } mysql*:::net-read-done { printf(" net-read-done with %d bytes, status %d\n", arg1, arg0); } mysql*:::net-write-start { printf(" net-write-start writing %d bytes\n", arg0); } mysql*:::net-write-done { printf(" net-write-done with status %d\n", arg0); } mysql*:::keycache-read-start { self->filepath= copyinstr(arg0); printf (" keycache-read-start: filepath:%s, bytes: %d, mem_used: %d, mem_free: %d\n", self->filepath, arg1, arg2, arg3); } mysql*:::keycache-read-block { printf (" keycache-read-block: %d bytes\n", arg0); } mysql*:::keycache-read-hit { printf (" keycache-read-hit\n"); } mysql*:::keycache-read-miss { printf (" keycache-read-miss\n"); } mysql*:::keycache-read-done { printf (" keycache-read-done: mem_used: %d, mem_free: %d\n", arg0, arg1); } mysql*:::keycache-write-start { self->filepath= copyinstr(arg0); printf (" keycache-write-start: filepath:%s, bytes: %d, mem_used: %d, mem_free: %d\n", self->filepath, arg1, arg2, arg3); } mysql*:::keycache-write-block { printf (" keycache-write-block: %d bytes\n", arg0); } mysql*:::keycache-write-done { printf (" keycache-write-done: mem_used: %d, mem_free: %d\n", arg0, arg1); }