myslog

MySQL slow query log parser

Install

gem install myslog

Usage

myslog = MySlog.new

text = <<-EOF
# Time: 111003 14:17:38
# [email protected]: root[root] @ localhost []
# Query_time: 0.000270  Lock_time: 0.000097  Rows_sent: 1  Rows_examined: 0
SET timestamp=1317619058;
SELECT * FROM life;
# [email protected]: php[php] @  [192.168.10.235]
# Thread_id: 313  Schema: ename_bbs_dx15  Last_errno: 0  Killed: 0
# Query_time: 0.031467  Lock_time: 0.000197  Rows_sent: 0  Rows_examined: 0  Rows_affected: 0  Rows_read: 2
# Bytes_sent: 1243  Tmp_tables: 0  Tmp_disk_tables: 0  Tmp_table_sizes: 0
SET timestamp=1359008764;
SELECT * FROM pre_common_session WHERE sid='vWWzwC' AND CONCAT_WS('.', ip1,ip2,ip3,ip4)='192.168.200.57';
EOF

records = myslog.parse(text)

records is Array of Hash

records[0]
#=> {:time => 2011-10-03 14:17:38 +0900,
#=>  :user => "root[root]",
#=>  :host => "localhost",
#=>  :host_ip => "",
#=>  :query_time => 0.000270,
#=>  :lock_time => 9.7e-05,
#=>  :rows_sent => 1,
#=>  :rows_examined => 0,
#=>  :sql => "SET timestamp=1317619058; SELECT * FROM life;"}
records[1]
#=> {:user => "php[php]",
#=>  :host => "",
#=>  :host_ip => "192.168.10.235",
#=>  :query_time => 0.031467,
#=>  :lock_time => 0.000197,
#=>  :rows_sent => 0,
#=>  :rows_examined => 0,
#=>  :rows_affected => 0,
#=>  :rows_read => 2,
#=>  :thread_id => 313,
#=>  :schema => "ename_bbs_dx15",
#=>  :last_errno => 0,
#=>  :killed => 0,
#=>  :bytes_sent => 1243,
#=>  :tmp_tables => 0,
#=>  :tmp_disk_tables => 0,
#=>  :tmp_table_sizes => 0,
#=>  :sql => "SET timestamp=1359008764; SELECT * FROM pre_common_session WHERE sid='vWWzwC' AND CONCAT_WS('.', ip1,ip2,ip3,ip4)='192.168.200.57';"}