Пример #1
0
 private static void AppendNewlineToStringBuilder(StringBuilder stringBuilder)
 {
     QueryMetricsTextWriter.AppendHeaderToStringBuilder(
         stringBuilder,
         string.Empty,
         indentLevel: 0);
 }
Пример #2
0
 protected override void WriteBeforeIndexUtilizationInfo()
 {
     QueryMetricsTextWriter.AppendHeaderToStringBuilder(
         this.stringBuilder,
         QueryMetricsTextWriter.IndexUtilizationInfo,
         indentLevel: 0);
 }
Пример #3
0
 protected override void WriteAfterPartitionExecutionTimeline()
 {
     QueryMetricsTextWriter.AppendHeaderToStringBuilder(
         this.stringBuilder,
         PartitionExecutionTimelineTable.BottomLine,
         indentLevel: 1);
 }
Пример #4
0
 protected override void WriteAfterSchedulingMetrics()
 {
     QueryMetricsTextWriter.AppendHeaderToStringBuilder(
         this.stringBuilder,
         SchedulingMetricsTable.BottomLine,
         indentLevel: 1);
 }
Пример #5
0
 protected override void WriteBeforeClientSideMetrics()
 {
     QueryMetricsTextWriter.AppendHeaderToStringBuilder(
         this.stringBuilder,
         QueryMetricsTextWriter.ClientSideQueryMetrics,
         indentLevel: 0);
 }
Пример #6
0
 protected override void WriteBeforeRuntimeExecutionTimes()
 {
     QueryMetricsTextWriter.AppendHeaderToStringBuilder(
         this.stringBuilder,
         QueryMetricsTextWriter.RuntimeExecutionTimes,
         indentLevel: 1);
 }
Пример #7
0
        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);
            }
        }
Пример #8
0
        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);
        }
Пример #9
0
        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);
        }
Пример #10
0
 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);
 }
Пример #11
0
 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);
 }
Пример #12
0
        protected override void WriteIndexUtilizationInfo(IndexUtilizationInfo indexUtilizationInfo)
        {
            QueryMetricsTextWriter.AppendHeaderToStringBuilder(this.stringBuilder, QueryMetricsTextWriter.UtilizedSingleIndexes, indentLevel: 1);

            foreach (SingleIndexUtilizationEntity indexUtilizationEntity in indexUtilizationInfo.UtilizedSingleIndexes)
            {
                WriteSingleIndexUtilizationEntity(indexUtilizationEntity);
            }

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

            foreach (SingleIndexUtilizationEntity indexUtilizationEntity in indexUtilizationInfo.PotentialSingleIndexes)
            {
                WriteSingleIndexUtilizationEntity(indexUtilizationEntity);
            }

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

            foreach (CompositeIndexUtilizationEntity indexUtilizationEntity in indexUtilizationInfo.UtilizedCompositeIndexes)
            {
                WriteCompositeIndexUtilizationEntity(indexUtilizationEntity);
            }

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

            foreach (CompositeIndexUtilizationEntity indexUtilizationEntity in indexUtilizationInfo.PotentialCompositeIndexes)
            {
                WriteCompositeIndexUtilizationEntity(indexUtilizationEntity);
            }

            void WriteSingleIndexUtilizationEntity(SingleIndexUtilizationEntity indexUtilizationEntity)
            {
                QueryMetricsTextWriter.AppendHeaderToStringBuilder(this.stringBuilder, $"{QueryMetricsTextWriter.FilterExpression}: {indexUtilizationEntity.FilterExpression}", indentLevel: 2);
                QueryMetricsTextWriter.AppendHeaderToStringBuilder(this.stringBuilder, $"{QueryMetricsTextWriter.IndexExpression}: {indexUtilizationEntity.IndexDocumentExpression}", indentLevel: 2);
                QueryMetricsTextWriter.AppendHeaderToStringBuilder(this.stringBuilder, $"{QueryMetricsTextWriter.IndexImpactScore}: {indexUtilizationEntity.IndexImpactScore}", indentLevel: 2);
                QueryMetricsTextWriter.AppendHeaderToStringBuilder(this.stringBuilder, IndexUtilizationSeparator, indentLevel: 2);
            }

            void WriteCompositeIndexUtilizationEntity(CompositeIndexUtilizationEntity indexUtilizationEntity)
            {
                QueryMetricsTextWriter.AppendHeaderToStringBuilder(this.stringBuilder, $"{QueryMetricsTextWriter.IndexExpression}: {String.Join(", ", indexUtilizationEntity.IndexDocumentExpressions)}", indentLevel: 2);
                QueryMetricsTextWriter.AppendHeaderToStringBuilder(this.stringBuilder, $"{QueryMetricsTextWriter.IndexImpactScore}: {indexUtilizationEntity.IndexImpactScore}", indentLevel: 2);
                QueryMetricsTextWriter.AppendHeaderToStringBuilder(this.stringBuilder, IndexUtilizationSeparator, indentLevel: 2);
            }
        }