You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

47 lines
1.1 KiB

  1. #!/usr/sbin/dtrace -s
  2. #
  3. # Show the time taken for a query, including the time taken to
  4. # sort the results using filesort
  5. #pragma D option quiet
  6. dtrace:::BEGIN
  7. {
  8. printf("%-2s %-10s %-10s %9s %18s %-s \n",
  9. "St", "Who", "DB", "ConnID", "Dur microsec", "Query");
  10. }
  11. mysql*:::query-start
  12. {
  13. self->query = copyinstr(arg0);
  14. self->who = strjoin(copyinstr(arg3),strjoin("@",copyinstr(arg4)));
  15. self->db = copyinstr(arg2);
  16. self->connid = arg1;
  17. self->querystart = timestamp;
  18. self->filesort = 0;
  19. self->fsdb = "";
  20. self->fstable = "";
  21. }
  22. mysql*:::filesort-start
  23. {
  24. self->filesort = timestamp;
  25. self->fsdb = copyinstr(arg0);
  26. self->fstable = copyinstr(arg1);
  27. }
  28. mysql*:::filesort-done
  29. {
  30. this->elapsed = (timestamp - self->filesort) /1000;
  31. printf("%2d %-10s %-10s %9d %18d Filesort on %s\n",
  32. arg0, self->who, self->fsdb,
  33. self->connid, this->elapsed, self->fstable);
  34. }
  35. mysql*:::query-done
  36. {
  37. this->elapsed = (timestamp - self->querystart) /1000;
  38. printf("%2d %-10s %-10s %9d %18d %s\n",
  39. arg0, self->who, self->db,
  40. self->connid, this->elapsed, self->query);
  41. }