public void PublishNormalizedStatementStatistics(LogEntryStatementStatisticsData statementStatisticsData)
        {
            var key    = statementStatisticsData.NormalizedStatementFingerprint;
            var sample = new NormalizedStatementStatistics()
            {
                ApplicationName         = statementStatisticsData.ApplicationName,
                AvgDuration             = statementStatisticsData.Duration,
                AvgTotalCost            = statementStatisticsData.TotalCost,
                CreatedDate             = DateTime.Now,
                DatabaseID              = statementStatisticsData.DatabaseID,
                Date                    = statementStatisticsData.ExecutionDate,
                MaxDuration             = statementStatisticsData.Duration,
                MinDuration             = statementStatisticsData.Duration,
                RepresentativeStatement = statementStatisticsData.Statement,
                TotalDuration           = statementStatisticsData.Duration,
                TotalExecutionsCount    = 1,
                UserName                = statementStatisticsData.UserName,
                MinTotalCost            = statementStatisticsData.TotalCost,
                MaxTotalCost            = statementStatisticsData.TotalCost
            };

            lock (lockObject)
            {
                if (!statementStatistics.ContainsKey(key))
                {
                    statementStatistics.Add(key, new NormalizedStatementStatisticsSampler(dateTimeSelector, null));
                }
            }
            lock (String.Intern(key))
            {
                statementStatistics[key].AddSample(sample);
            }
        }
コード例 #2
0
        protected override void OnExecute()
        {
            var stats = new LogEntryStatementStatisticsData()
            {
                ApplicationName = context.Entry.ApplicationName,
                DatabaseID      = context.DatabaseID,
                Duration        = context.Entry.Duration,
                ExecutionDate   = context.Entry.Timestamp,
                NormalizedStatementFingerprint = context.StatementData.NormalizedStatementFingerprint,
                Statement = context.Entry.Statement,
                UserName  = context.Entry.UserName
            };

            stats.TotalCost = context.QueryPlans.Sum(x => x.TotalCost);
            statementDataAccumulator.PublishNormalizedStatementStatistics(stats);
        }