update the slowSqlView function

This commit is contained in:
zhouhaibin
2012-08-10 09:58:18 +08:00
parent c918a306fc
commit e5365eae94
3 changed files with 39 additions and 13 deletions
@@ -1,6 +1,8 @@
package com.alibaba.druid.support.http;
import java.io.IOException;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.List;
import javax.servlet.ServletException;
@@ -35,6 +37,7 @@ public class StatViewServlet extends HttpServlet {
private static JSONDruidStatService jsonDruidStatService = JSONDruidStatService.getInstance();
public String templatePage;
private static DateFormat format = new SimpleDateFormat("yyyy/MM/dd hh:mm:ss:SSS");
public void init() throws ServletException {
try {
@@ -131,7 +134,22 @@ public class StatViewServlet extends HttpServlet {
content.append("</textarea><br />");
content.append("<p>API:com.alibaba.druid.sql.SQLUtils.format(sql,DBType);</p>");
content.append("<br />");
if (sqlStat.getLastSlowParameters() != null && sqlStat.getLastSlowParameters().trim().length() > 0) {
content.append("<h2>LastSlow SQL View:</h2>");
content.append("<table cellpadding='5' cellspacing='1' width='99%'>");
content.append("<tr>");
content.append("<td class='td_lable' width='130'>MaxTimespanOccurTime</td>");
content.append("<td>" + format.format(sqlStat.getExecuteNanoSpanMaxOccurTime()) + "</td>");
content.append("</tr>");
content.append("<tr>");
content.append("<td class='td_lable' width='130'>LastSlowParameters</td>");
content.append("<td>" + sqlStat.getLastSlowParameters() + "</td>");
content.append("</tr>");
content.append("</table>");
content.append("<br />");
}
List<SQLStatement> statementList = SQLUtils.parseStatements(sqlStat.getSql(), sqlStat.getDbType());
if (!statementList.isEmpty()) {
content.append("<h2>Parse View:</h2>");
@@ -94,6 +94,7 @@ function ajaxResponseForDataSourceSqlStatInfo() {
for ( var i = 0; i < sqlStatList.length; i++) {
var sqlStat = sqlStatList[i];
var newRow = sqlStatTable.insertRow(-1);
newRow.insertCell(-1).innerHTML = i+1;
newRow.insertCell(-1).innerHTML = '<a target="_blank" href="sql-' + sqlStat.ID + '.html">' + subSqlString(sqlStat.SQL, 25) + '</a>';
// if (sqlStat.File)
// newRow.insertCell(-1).innerHTML = sqlStat.File;
@@ -105,7 +106,12 @@ function ajaxResponseForDataSourceSqlStatInfo() {
// newRow.insertCell(-1).innerHTML = '';
newRow.insertCell(-1).innerHTML = sqlStat.ExecuteCount;
newRow.insertCell(-1).innerHTML = sqlStat.TotalTime;
newRow.insertCell(-1).innerHTML = sqlStat.MaxTimespan;
//显示执行的时间比配置的均值时间慢的SQL链接
var lastSlowHtml = sqlStat.MaxTimespan;
if(sqlStat.LastSlowParameters!=null&&sqlStat.LastSlowParameters.length>0){
lastSlowHtml ='<a target="_blank" style="color:red" href="sql-' + sqlStat.ID + '.html">'+sqlStat.MaxTimespan+'</a>';
}
newRow.insertCell(-1).innerHTML = lastSlowHtml;
newRow.insertCell(-1).innerHTML = sqlStat.InTransactionCount;
newRow.insertCell(-1).innerHTML = sqlStat.ErrorCount;
newRow.insertCell(-1).innerHTML = sqlStat.EffectedRowCount;
@@ -120,8 +126,8 @@ function ajaxResponseForDataSourceSqlStatInfo() {
// hiHtml += '<a href="#' + sqlStat.ExecuteAndResultHoldTimeHistogram +
// '">ExecAndRsHold</a>';
newRow.insertCell(-1).innerHTML = '[' + sqlStat.Histogram + ']';
newRow.insertCell(-1).innerHTML = '[' + sqlStat.ExecuteAndResultHoldTimeHistogram + ']';
newRow.insertCell(-1).innerHTML = '[' + sqlStat.FetchRowCountHistogram + ']';
newRow.insertCell(-1).innerHTML = '[' + sqlStat.EffectedRowCountHistogram + ']';
newRow.insertCell(-1).innerHTML = '[' + sqlStat.ExecuteAndResultHoldTimeHistogram + ']';
}
}
@@ -24,6 +24,7 @@
<table cellspacing="1" cellpadding="5" id="SqlStatTable" width="99%">
<thead>
<tr>
<th class="td_lable">N--</th>
<th class="td_lable"><a id="th-SQL" href="javascript:void(0)" onclick="setOrderBy('SQL');">SQL</a></th>
<th class="td_lable" width="50"><a id="th-ExecuteCount" href="javascript:void(0)" onclick="setOrderBy('ExecuteCount');">Execute Count</a></th>
<th class="td_lable" width="50"><a id="th-TotalTime" href="javascript:void(0)" onclick="setOrderBy('TotalTime');">Execute Millis Total</a></th>
@@ -44,6 +45,16 @@
<a id="th-Histogram[6]" title="count of '100-1000 s'" href="javascript:void(0)" onclick="setOrderBy('Histogram[6]');">-</a>
<a id="th-Histogram[7]" title="count of '> 1000 s'" href="javascript:void(0)" onclick="setOrderBy('Histogram[7]');">-</a> ]
</th>
<th id="th-ExecuteAndResultHoldTimeHistogram" class="td_lable" align="left" width="100">ExecAndRsHold <br />[
<a id="th-ExecuteAndResultHoldTimeHistogram[0]" title="count of '0-1 ms'" href="javascript:void(0)" onclick="setOrderBy('ExecuteAndResultHoldTimeHistogram[0]');">-</a>
<a id="th-ExecuteAndResultHoldTimeHistogram[1]" title="count of '1-10 ms'" href="javascript:void(0)" onclick="setOrderBy('ExecuteAndResultHoldTimeHistogram[1]');">-</a>
<a id="th-ExecuteAndResultHoldTimeHistogram[2]" title="count of '10-100 ms'" href="javascript:void(0)" onclick="setOrderBy('ExecuteAndResultHoldTimeHistogram[2]');">-</a>
<a id="th-ExecuteAndResultHoldTimeHistogram[3]" title="count of '100ms-1s'" href="javascript:void(0)" onclick="setOrderBy('ExecuteAndResultHoldTimeHistogram[3]');">-</a>
<a id="th-ExecuteAndResultHoldTimeHistogram[4]" title="count of '1-10 s'" href="javascript:void(0)" onclick="setOrderBy('ExecuteAndResultHoldTimeHistogram[4]');">-</a>
<a id="th-ExecuteAndResultHoldTimeHistogram[5]" title="count of '10-100 s'" href="javascript:void(0)" onclick="setOrderBy('ExecuteAndResultHoldTimeHistogram[5]');">-</a>
<a id="th-ExecuteAndResultHoldTimeHistogram[6]" title="count of '100-1000 s'" href="javascript:void(0)" onclick="setOrderBy('ExecuteAndResultHoldTimeHistogram[6]');">-</a>
<a id="th-ExecuteAndResultHoldTimeHistogram[7]" title="count of '> 1000 s'" href="javascript:void(0)" onclick="setOrderBy('ExecuteAndResultHoldTimeHistogram[7]');">-</a> ]
</th>
<th id="th-FetchRowCountHistogram" class="td_lable" align="left" width="100">FetchRow <br />[
<a id="th-FetchRowCountHistogram[0]" title="count of '0 FetchRow'" href="javascript:void(0)" onclick="setOrderBy('FetchRowCountHistogram[0]');">-</a>
<a id="th-FetchRowCountHistogram[1]" title="count of '1-9 FetchRow'" href="javascript:void(0)" onclick="setOrderBy('FetchRowCountHistogram[1]');">-</a>
@@ -60,16 +71,7 @@
<a id="th-EffectedRowCountHistogram[4]" title="count of '1000-9999 UpdateCount'" href="javascript:void(0)" onclick="setOrderBy('EffectedRowCountHistogram[4]');">-</a>
<a id="th-EffectedRowCountHistogram[5]" title="count of '> 9999 UpdateCount'" href="javascript:void(0)" onclick="setOrderBy('EffectedRowCountHistogram[5]');">-</a> ]
</th>
<th id="th-ExecuteAndResultHoldTimeHistogram" class="td_lable" align="left" width="100">ExecAndRsHold <br />[
<a id="th-ExecuteAndResultHoldTimeHistogram[0]" title="count of '0-1 ms'" href="javascript:void(0)" onclick="setOrderBy('ExecuteAndResultHoldTimeHistogram[0]');">-</a>
<a id="th-ExecuteAndResultHoldTimeHistogram[1]" title="count of '1-10 ms'" href="javascript:void(0)" onclick="setOrderBy('ExecuteAndResultHoldTimeHistogram[1]');">-</a>
<a id="th-ExecuteAndResultHoldTimeHistogram[2]" title="count of '10-100 ms'" href="javascript:void(0)" onclick="setOrderBy('ExecuteAndResultHoldTimeHistogram[2]');">-</a>
<a id="th-ExecuteAndResultHoldTimeHistogram[3]" title="count of '100ms-1s'" href="javascript:void(0)" onclick="setOrderBy('ExecuteAndResultHoldTimeHistogram[3]');">-</a>
<a id="th-ExecuteAndResultHoldTimeHistogram[4]" title="count of '1-10 s'" href="javascript:void(0)" onclick="setOrderBy('ExecuteAndResultHoldTimeHistogram[4]');">-</a>
<a id="th-ExecuteAndResultHoldTimeHistogram[5]" title="count of '10-100 s'" href="javascript:void(0)" onclick="setOrderBy('ExecuteAndResultHoldTimeHistogram[5]');">-</a>
<a id="th-ExecuteAndResultHoldTimeHistogram[6]" title="count of '100-1000 s'" href="javascript:void(0)" onclick="setOrderBy('ExecuteAndResultHoldTimeHistogram[6]');">-</a>
<a id="th-ExecuteAndResultHoldTimeHistogram[7]" title="count of '> 1000 s'" href="javascript:void(0)" onclick="setOrderBy('ExecuteAndResultHoldTimeHistogram[7]');">-</a> ]
</th>
</tr>
</thead>
</table>