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); } }
protected override void WriteBeforeClientSideMetrics() { QueryMetricsTextWriter.AppendHeaderToStringBuilder( this.stringBuilder, QueryMetricsTextWriter.ClientSideQueryMetrics, indentLevel: 0); }
protected override void WriteAfterPartitionExecutionTimeline() { QueryMetricsTextWriter.AppendHeaderToStringBuilder( this.stringBuilder, PartitionExecutionTimelineTable.BottomLine, indentLevel: 1); }
protected override void WriteAfterSchedulingMetrics() { QueryMetricsTextWriter.AppendHeaderToStringBuilder( this.stringBuilder, SchedulingMetricsTable.BottomLine, indentLevel: 1); }
private static void AppendNewlineToStringBuilder(StringBuilder stringBuilder) { QueryMetricsTextWriter.AppendHeaderToStringBuilder( stringBuilder, string.Empty, indentLevel: 0); }
protected override void WriteBeforeRuntimeExecutionTimes() { QueryMetricsTextWriter.AppendHeaderToStringBuilder( this.stringBuilder, QueryMetricsTextWriter.RuntimeExecutionTimes, indentLevel: 1); }
protected override void WriteBeforeIndexUtilizationInfo() { QueryMetricsTextWriter.AppendHeaderToStringBuilder( this.stringBuilder, QueryMetricsTextWriter.IndexUtilizationInfo, indentLevel: 0); }
protected override void WriteTotalQueryExecutionTime(TimeSpan totalQueryExecutionTime) { QueryMetricsTextWriter.AppendTimeSpanToStringBuilder( this.stringBuilder, QueryMetricsTextWriter.TotalQueryExecutionTime, totalQueryExecutionTime, indentLevel: 0); }
protected override void WriteUserDefinedFunctionExecutionTime(TimeSpan userDefinedFunctionExecutionTime) { QueryMetricsTextWriter.AppendTimeSpanToStringBuilder( this.stringBuilder, QueryMetricsTextWriter.UserDefinedFunctionExecutionTime, userDefinedFunctionExecutionTime, indentLevel: 2); }
protected override void WriteSystemFunctionExecutionTime(TimeSpan systemFunctionExecutionTime) { QueryMetricsTextWriter.AppendTimeSpanToStringBuilder( this.stringBuilder, QueryMetricsTextWriter.SystemFunctionExecuteTime, systemFunctionExecutionTime, indentLevel: 2); }
protected override void WriteQueryEngineExecutionTime(TimeSpan queryEngineExecutionTime) { QueryMetricsTextWriter.AppendTimeSpanToStringBuilder( this.stringBuilder, QueryMetricsTextWriter.QueryEngineTimes, queryEngineExecutionTime, indentLevel: 2); }
protected override void WriteRetries(long retries) { QueryMetricsTextWriter.AppendCountToStringBuilder( this.stringBuilder, QueryMetricsTextWriter.Retries, retries, indentLevel: 1); }
protected override void WriteIndexHitRatio(double indexHitRatio) { QueryMetricsTextWriter.AppendPercentageToStringBuilder( this.stringBuilder, QueryMetricsTextWriter.IndexUtilization, indexHitRatio, indentLevel: 0); }
protected override void WriteOutputDocumentSize(long outputDocumentSize) { QueryMetricsTextWriter.AppendBytesToStringBuilder( this.stringBuilder, QueryMetricsTextWriter.OutputDocumentSize, outputDocumentSize, indentLevel: 0); }
protected override void WriteOutputDocumentCount(long outputDocumentCount) { QueryMetricsTextWriter.AppendCountToStringBuilder( this.stringBuilder, QueryMetricsTextWriter.OutputDocumentCount, outputDocumentCount, indentLevel: 0); }
protected override void WriteRetrievedDocumentSize(long retrievedDocumentSize) { QueryMetricsTextWriter.AppendBytesToStringBuilder( this.stringBuilder, QueryMetricsTextWriter.RetrievedDocumentSize, retrievedDocumentSize, indentLevel: 0); }
protected override void WriteRetrievedDocumentCount(long retrievedDocumentCount) { QueryMetricsTextWriter.AppendCountToStringBuilder( this.stringBuilder, QueryMetricsTextWriter.RetrievedDocumentCount, retrievedDocumentCount, indentLevel: 0); }
protected override void WriteRequestCharge(double requestCharge) { QueryMetricsTextWriter.AppendRUToStringBuilder( this.stringBuilder, QueryMetricsTextWriter.RequestCharge, requestCharge, indentLevel: 1); }
protected override void WritePhysicalPlanBuildTime(TimeSpan physicalPlanBuildTime) { QueryMetricsTextWriter.AppendTimeSpanToStringBuilder( this.stringBuilder, QueryMetricsTextWriter.PhysicalPlanBuildTime, physicalPlanBuildTime, indentLevel: 2); }
protected override void WriteIndexLookupTime(TimeSpan indexLookupTime) { QueryMetricsTextWriter.AppendTimeSpanToStringBuilder( this.stringBuilder, QueryMetricsTextWriter.IndexLookupTime, indexLookupTime, indentLevel: 1); }
protected override void WriteDocumentWriteTime(TimeSpan documentWriteTime) { QueryMetricsTextWriter.AppendTimeSpanToStringBuilder( this.stringBuilder, QueryMetricsTextWriter.DocumentWriteTime, documentWriteTime, indentLevel: 1); }
private string ToTextString() { StringBuilder stringBuilder = new StringBuilder(); QueryMetricsTextWriter queryMetricsTextWriter = new QueryMetricsTextWriter(stringBuilder); queryMetricsTextWriter.WriteQueryMetrics(this); return(stringBuilder.ToString()); }
protected override void WriteRuntimeExecutionTime(RuntimeExecutionTimes runtimeExecutionTimes) { QueryMetricsTextWriter.AppendTimeSpanToStringBuilder( this.stringBuilder, QueryMetricsTextWriter.RuntimeExecutionTime, runtimeExecutionTimes.SystemFunctionExecutionTime + runtimeExecutionTimes.UserDefinedFunctionExecutionTime, indentLevel: 1); }
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); }
protected override void WriteQueryPreparationTime(QueryPreparationTimes queryPreparationTimes) { QueryMetricsTextWriter.AppendTimeSpanToStringBuilder( this.stringBuilder, QueryMetricsTextWriter.QueryPreparationTime, queryPreparationTimes.LogicalPlanBuildTime + queryPreparationTimes.PhysicalPlanBuildTime + queryPreparationTimes.QueryCompilationTime + queryPreparationTimes.QueryOptimizationTime, indentLevel: 1); }
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); }
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 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 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); }