Difference between revisions of "Top MySQL Slow Queries from log"

From James Dooley's Wiki
Jump to: navigation, search
(Script)
(Display 2 lines before/after Query_time)
Line 5: Line 5:
 
===Display 2 lines before/after Query_time===
 
===Display 2 lines before/after Query_time===
 
<code>[bash,n]
 
<code>[bash,n]
for i in $(grep -n Query_time /home/mysql/slow.log | sort -k3 -nr | head | cut -d: -f1); do line=`sed -n \`echo $i\`p /home/mysql/slow.log`; grep -B2 -A2 "$line" /home/mysql/slow.log;done
+
slowlog=`grep log-slow-queries /etc/my.cnf | cut -d'=' -f2`; \
 +
if [ -e "$slowlog" ]; then \
 +
for i in $(grep -n Query_time $slowlog | sort -k3 -nr | head | cut -d: -f1); do line=`sed -n \`echo $i\`p $slowlog`; grep -B2 -A2 "$line" $slowlog;done; \
 +
fi
 
</code>
 
</code>
  

Revision as of 14:34, 15 September 2011

Overview

Sort the slow query log based on the query time and display the lines after it

Script

Display 2 lines before/after Query_time

[bash,n] slowlog=`grep log-slow-queries /etc/my.cnf | cut -d'=' -f2`; \ if [ -e "$slowlog" ]; then \ for i in $(grep -n Query_time $slowlog | sort -k3 -nr | head | cut -d: -f1); do line=`sed -n \`echo $i\`p $slowlog`; grep -B2 -A2 "$line" $slowlog;done; \ fi

Display 2 lines before and 3 lines after Query_time | less

[bash,n] for i in $(grep -n Query_time /home/mysql/slow.log | sort -k3 -nr | head | cut -d: -f1); do line=`sed -n \`echo $i\`p /home/mysql/slow.log`; grep -B2 -A3 "$line" /home/mysql/slow.log;done | less