2016-12-23 54 views
-1

我想在mysql日志中有7或大于7秒的sloq查询。 mysql日志文件的大小大于500 Mb所以 我的脚本首先从mysql日志中选择按日期慢速查询,然后从中选择大于7秒的查询。日志输出如下。缓慢的查询大于或等于7秒从MySQL日志

# Time: 161223 12:40:42 
# [email protected]: root[root] @ [10.160.15.69] 
# Query_time: 5.307732 Lock_time: 0.000061 Rows_sent: 1 Rows_examined:30334028 

use Dbname; SET timestamp = 1482477042; SELECT PRR.pr_register_request_date BETWEEN STR_TO_DATE('2015-12-23','%Y-%m-%d')AND STR_TO_DATE('2016-12-23','%Y-%m-%d')EXISTS (SELECT item_master_id FROM item WHERE IM.item_master_item_code = PRR.pr_register_material_code);

回答

0

为什么不使用AWK?在命令行$ 3 =第三位(时间)

样本数据(的test.txt)

# Query_time: 9.353543 Lock_time: 0.000036 Rows_sent: 0 Rows_examined: 9091792 use Aarti_Engineering_Purchase; SET timestamp=1482477646; SELECT fieldvalue,I.InquiryID FROM FormMaster FM,FormDetail FD,Inquiry I,InquiryDetails I.InquiryID = ID.InquiryID AND AttributeValue IN ('ProjectCode'); 
# Query_time: 7.353543 Lock_time: 0.000036 Rows_sent: 0 Rows_examined: 9091792 use Aarti_Engineering_Purchase; SET timestamp=1482477646; SELECT fieldvalue,I.InquiryID FROM FormMaster FM,FormDetail FD,Inquiry I,InquiryDetails I.InquiryID = ID.InquiryID AND AttributeValue IN ('ProjectCode'); 
# Query_time: 9.353543 Lock_time: 0.000036 Rows_sent: 0 Rows_examined: 9091792 use Aarti_Engineering_Purchase; SET timestamp=1482477646; SELECT fieldvalue,I.InquiryID FROM FormMaster FM,FormDetail FD,Inquiry I,InquiryDetails I.InquiryID = ID.InquiryID AND AttributeValue IN ('ProjectCode'); 
# Query_time: 2.353543 Lock_time: 0.000036 Rows_sent: 0 Rows_examined: 9091792 use Aarti_Engineering_Purchase; SET timestamp=1482477646; SELECT fieldvalue,I.InquiryID FROM FormMaster FM,FormDetail FD,Inquiry I,InquiryDetails I.InquiryID = ID.InquiryID AND AttributeValue IN ('ProjectCode'); 
# Query_time: 28.353543 Lock_time: 0.000036 Rows_sent: 0 Rows_examined: 9091792 use Aarti_Engineering_Purchase; SET timestamp=1482477646; SELECT fieldvalue,I.InquiryID FROM FormMaster FM,FormDetail FD,Inquiry I,InquiryDetails I.InquiryID = ID.InquiryID AND AttributeValue IN ('ProjectCode'); 

和简单:

awk '$3 < 7' ./test.txt 

或更换7你想要的任何时间......和它们存储在文件

awk '$3 > 7.5' ./test.txt >> ./long_query.txt 
+0

在查询其他参数也有像...#时间:161223 12点50分46秒 #用户名@主持人:根[根] @ [10.160.15.69]在这awk无法正常工作 –

0

你可以使用grep

grep 'Query_time: [7-9]' file 

随着sed

sed -n '/Query_time: [7-9]/p' file 
+0

非常奇怪的事情发生在我身上。我有它的大文件我尾巴像尾-500文件> file1和尾-2000文件> file2你的查询工作,如果我有这里有500行filew文件,但如果我有2000行与file2然后3, 4,5秒查询时间也显示在输出中!非常奇怪和奇怪的是我理解这一点。 –

+0

@nirajvara,请更新/编辑您的问题与您的输入文件是如何看起来像。 – sat

+0

我有更新我的问题没有附件选项,否则附加文件,但它只是一个正常的MySQL日志。 –