protected override void WriteIndexUtilizationInfo(IndexUtilizationInfo indexUtilizationInfo)
        {
            QueryMetricsTextWriter.AppendHeaderToStringBuilder(this.stringBuilder, QueryMetricsTextWriter.UtilizedIndexes, indentLevel: 1);

            foreach (IndexUtilizationData indexUtilizationData in indexUtilizationInfo.UtilizedIndexes)
            {
                WriteIndexUtilizationData(indexUtilizationData);
            }

            QueryMetricsTextWriter.AppendHeaderToStringBuilder(this.stringBuilder, QueryMetricsTextWriter.PotentialIndexes, indentLevel: 1);

            foreach (IndexUtilizationData indexUtilizationData in indexUtilizationInfo.PotentialIndexes)
            {
                WriteIndexUtilizationData(indexUtilizationData);
            }

            void WriteIndexUtilizationData(IndexUtilizationData indexUtilizationData)
            {
                QueryMetricsTextWriter.AppendHeaderToStringBuilder(this.stringBuilder, $"{QueryMetricsTextWriter.FilterExpression}: {indexUtilizationData.FilterExpression}", indentLevel: 2);
                QueryMetricsTextWriter.AppendHeaderToStringBuilder(this.stringBuilder, $"{QueryMetricsTextWriter.IndexExpression}: {indexUtilizationData.IndexDocumentExpression}", indentLevel: 2);
                QueryMetricsTextWriter.AppendHeaderToStringBuilder(this.stringBuilder, $"{QueryMetricsTextWriter.FilterExpressionPrecision}: {indexUtilizationData.FilterExpressionPrecision}", indentLevel: 2);
                //QueryMetricsTextWriter.AppendHeaderToStringBuilder(stringBuilder, $"{QueryMetricsTextWriter.IndexPlanFullFidelity}: {indexUtilizationData.IndexPlanFullFidelity}", indentLevel: 2); //currently not exposed to the users
                QueryMetricsTextWriter.AppendHeaderToStringBuilder(this.stringBuilder, IndexUtilizationSeparator, indentLevel: 2);
            }
        }
Exemple #2
0
        private string ToTextString()
        {
            StringBuilder          stringBuilder          = new StringBuilder();
            QueryMetricsTextWriter queryMetricsTextWriter = new QueryMetricsTextWriter(stringBuilder);

            queryMetricsTextWriter.WriteQueryMetrics(this);
            return(stringBuilder.ToString());
        }
        protected override void WriteBeforePartitionExecutionTimeline()
        {
            QueryMetricsTextWriter.AppendNewlineToStringBuilder(this.stringBuilder);

            // Building the table for fetch execution ranges
            QueryMetricsTextWriter.AppendHeaderToStringBuilder(this.stringBuilder, QueryMetricsTextWriter.FetchExecutionRanges, indentLevel: 1);
            QueryMetricsTextWriter.AppendHeaderToStringBuilder(this.stringBuilder, PartitionExecutionTimelineTable.TopLine, indentLevel: 1);
            QueryMetricsTextWriter.AppendHeaderToStringBuilder(this.stringBuilder, PartitionExecutionTimelineTable.Header, indentLevel: 1);
            QueryMetricsTextWriter.AppendHeaderToStringBuilder(this.stringBuilder, PartitionExecutionTimelineTable.MiddleLine, indentLevel: 1);
        }
        protected override void WriteBeforeSchedulingMetrics()
        {
            QueryMetricsTextWriter.AppendNewlineToStringBuilder(this.stringBuilder);

            // Building the table for scheduling metrics
            QueryMetricsTextWriter.AppendHeaderToStringBuilder(this.stringBuilder, QueryMetricsTextWriter.SchedulingMetrics, indentLevel: 1);
            QueryMetricsTextWriter.AppendHeaderToStringBuilder(this.stringBuilder, SchedulingMetricsTable.TopLine, indentLevel: 1);
            QueryMetricsTextWriter.AppendHeaderToStringBuilder(this.stringBuilder, SchedulingMetricsTable.Header, indentLevel: 1);
            QueryMetricsTextWriter.AppendHeaderToStringBuilder(this.stringBuilder, SchedulingMetricsTable.MiddleLine, indentLevel: 1);
        }
        private static void AppendBytesToStringBuilder(StringBuilder stringBuilder, string property, long bytes, int indentLevel)
        {
            const string BytesFormatString = "{0:n0}";
            const string BytesUnitString   = "bytes";

            QueryMetricsTextWriter.AppendToStringBuilder(
                stringBuilder,
                property,
                string.Format(CultureInfo.InvariantCulture, BytesFormatString, bytes),
                BytesUnitString,
                indentLevel);
        }
        private static void AppendCountToStringBuilder(StringBuilder stringBuilder, string property, long count, int indentLevel)
        {
            const string CountFormatString = "{0:n0}";
            const string CountUnitString   = "";

            QueryMetricsTextWriter.AppendToStringBuilder(
                stringBuilder,
                property,
                string.Format(CultureInfo.InvariantCulture, CountFormatString, count),
                CountUnitString,
                indentLevel);
        }
        private static void AppendPercentageToStringBuilder(StringBuilder stringBuilder, string property, double percentage, int indentLevel)
        {
            const string PercentageFormatString = "{0:n2}";
            const string PercentageUnitString   = "%";

            QueryMetricsTextWriter.AppendToStringBuilder(
                stringBuilder,
                property,
                string.Format(CultureInfo.InvariantCulture, PercentageFormatString, percentage * 100),
                PercentageUnitString,
                indentLevel);
        }
        private static void AppendTimeSpanToStringBuilder(StringBuilder stringBuilder, string property, TimeSpan timeSpan, int indentLevel)
        {
            const string MillisecondsFormatString = "{0:n2}";
            const string MillisecondsUnitString   = "milliseconds";

            QueryMetricsTextWriter.AppendToStringBuilder(
                stringBuilder,
                property,
                string.Format(CultureInfo.InvariantCulture, MillisecondsFormatString, timeSpan.TotalMilliseconds),
                MillisecondsUnitString,
                indentLevel);
        }
        private static void AppendRUToStringBuilder(StringBuilder stringBuilder, string property, double requestCharge, int indentLevel)
        {
            const string RequestChargeFormatString = "{0:n2}";
            const string RequestChargeUnitString   = "RUs";

            QueryMetricsTextWriter.AppendToStringBuilder(
                stringBuilder,
                property,
                string.Format(CultureInfo.InvariantCulture, RequestChargeFormatString, requestCharge),
                RequestChargeUnitString,
                indentLevel);
        }
 protected override void WriteAfterPartitionSchedulingTimeSpan()
 {
     QueryMetricsTextWriter.AppendHeaderToStringBuilder(
         this.stringBuilder,
         SchedulingMetricsTable.GetRow(
             this.lastSchedulingPartitionId,
             this.lastResponseTime.TotalMilliseconds.ToString("0.00"),
             this.lastRunTime.TotalMilliseconds.ToString("0.00"),
             this.lastWaitTime.TotalMilliseconds.ToString("0.00"),
             this.lastTurnaroundTime.TotalMilliseconds.ToString("0.00"),
             this.lastNumberOfPreemptions),
         indentLevel: 1);
 }
 protected override void WriteAfterFetchExecutionRange()
 {
     QueryMetricsTextWriter.AppendHeaderToStringBuilder(
         this.stringBuilder,
         PartitionExecutionTimelineTable.GetRow(
             this.lastFetchPartitionId,
             this.lastActivityId,
             this.lastStartTime.ToUniversalTime().ToString(DateTimeFormat),
             this.lastEndTime.ToUniversalTime().ToString(DateTimeFormat),
             (this.lastEndTime - this.lastStartTime).TotalMilliseconds.ToString("0.00"),
             this.lastFetchDocumentCount,
             this.lastFetchRetryCount),
         indentLevel: 1);
 }
 protected override void WriteBeforeRuntimeExecutionTimes()
 {
     QueryMetricsTextWriter.AppendHeaderToStringBuilder(this.stringBuilder, QueryMetricsTextWriter.RuntimeExecutionTimes, indentLevel: 1);
 }
 protected override void WriteIndexLookupTime(TimeSpan indexLookupTime)
 {
     QueryMetricsTextWriter.AppendTimeSpanToStringBuilder(this.stringBuilder, QueryMetricsTextWriter.IndexLookupTime, indexLookupTime, indentLevel: 1);
 }
 protected override void WriteIndexHitRatio(double indexHitRatio)
 {
     QueryMetricsTextWriter.AppendPercentageToStringBuilder(this.stringBuilder, QueryMetricsTextWriter.IndexUtilization, indexHitRatio, indentLevel: 0);
 }
 protected override void WriteQueryEngineExecutionTime(TimeSpan queryEngineExecutionTime)
 {
     QueryMetricsTextWriter.AppendTimeSpanToStringBuilder(this.stringBuilder, QueryMetricsTextWriter.QueryEngineTimes, queryEngineExecutionTime, 2);
 }
 protected override void WriteAfterSchedulingMetrics()
 {
     QueryMetricsTextWriter.AppendHeaderToStringBuilder(this.stringBuilder, SchedulingMetricsTable.BottomLine, indentLevel: 1);
 }
 protected override void WriteBeforeIndexUtilizationInfo()
 {
     QueryMetricsTextWriter.AppendHeaderToStringBuilder(this.stringBuilder, QueryMetricsTextWriter.IndexUtilizationInfo, indentLevel: 0);
 }
 protected override void WriteUserDefinedFunctionExecutionTime(TimeSpan userDefinedFunctionExecutionTime)
 {
     QueryMetricsTextWriter.AppendTimeSpanToStringBuilder(this.stringBuilder, QueryMetricsTextWriter.UserDefinedFunctionExecutionTime, userDefinedFunctionExecutionTime, 2);
 }
 protected override void WriteBeforeClientSideMetrics()
 {
     QueryMetricsTextWriter.AppendHeaderToStringBuilder(this.stringBuilder, QueryMetricsTextWriter.ClientSideQueryMetrics, indentLevel: 0);
 }
 protected override void WritePhysicalPlanBuildTime(TimeSpan physicalPlanBuildTime)
 {
     QueryMetricsTextWriter.AppendTimeSpanToStringBuilder(this.stringBuilder, QueryMetricsTextWriter.PhysicalPlanBuildTime, physicalPlanBuildTime, 2);
 }
 protected override void WriteAfterPartitionExecutionTimeline()
 {
     QueryMetricsTextWriter.AppendHeaderToStringBuilder(this.stringBuilder, PartitionExecutionTimelineTable.BottomLine, indentLevel: 1);
 }
 private static void AppendNewlineToStringBuilder(StringBuilder stringBuilder)
 {
     QueryMetricsTextWriter.AppendHeaderToStringBuilder(stringBuilder, string.Empty, 0);
 }
 protected override void WriteRequestCharge(double requestCharge)
 {
     QueryMetricsTextWriter.AppendRUToStringBuilder(this.stringBuilder, QueryMetricsTextWriter.RequestCharge, requestCharge, indentLevel: 1);
 }
 protected override void WriteRetries(long retries)
 {
     QueryMetricsTextWriter.AppendCountToStringBuilder(this.stringBuilder, QueryMetricsTextWriter.Retries, retries, indentLevel: 1);
 }
 protected override void WriteQueryOptimizationTime(TimeSpan queryOptimizationTime)
 {
     QueryMetricsTextWriter.AppendTimeSpanToStringBuilder(this.stringBuilder, QueryMetricsTextWriter.QueryOptimizationTime, queryOptimizationTime, 2);
 }
 protected override void WriteSystemFunctionExecutionTime(TimeSpan systemFunctionExecutionTime)
 {
     QueryMetricsTextWriter.AppendTimeSpanToStringBuilder(this.stringBuilder, QueryMetricsTextWriter.SystemFunctionExecuteTime, systemFunctionExecutionTime, 2);
 }
 protected override void WriteOutputDocumentSize(long outputDocumentSize)
 {
     QueryMetricsTextWriter.AppendBytesToStringBuilder(this.stringBuilder, QueryMetricsTextWriter.OutputDocumentSize, outputDocumentSize, indentLevel: 0);
 }
 protected override void WriteDocumentWriteTime(TimeSpan documentWriteTime)
 {
     QueryMetricsTextWriter.AppendTimeSpanToStringBuilder(this.stringBuilder, QueryMetricsTextWriter.DocumentWriteTime, documentWriteTime, indentLevel: 1);
 }
 protected override void WriteOutputDocumentCount(long outputDocumentCount)
 {
     QueryMetricsTextWriter.AppendCountToStringBuilder(this.stringBuilder, QueryMetricsTextWriter.OutputDocumentCount, outputDocumentCount, indentLevel: 0);
 }
 protected override void WriteTotalQueryExecutionTime(TimeSpan totalQueryExecutionTime)
 {
     QueryMetricsTextWriter.AppendTimeSpanToStringBuilder(this.stringBuilder, QueryMetricsTextWriter.TotalQueryExecutionTime, totalQueryExecutionTime, indentLevel: 0);
 }