Documentation ¶
Index ¶
- Constants
- func ChildSpanFromContxt(ctx context.Context, opName string) (opentracing.Span, context.Context)
- func CodecPlanName(tp string, id int) string
- func ContextWithTraceInfo(ctx context.Context, info *model.TraceInfo) context.Context
- func NewRecordedTrace(opName string, callback func(sp basictracer.RawSpan)) opentracing.Span
- func SpanFromContext(ctx context.Context) (sp opentracing.Span)
- func TraceInfoFromContext(ctx context.Context) *model.TraceInfo
- type CETraceRecord
- type CallbackRecorder
- type CandidatePlanTrace
- type LogicalOptimizeTracer
- type LogicalRuleOptimizeTraceStep
- type LogicalRuleOptimizeTracer
- type OptimizeTracer
- type PhysicalOptimizeTracer
- type PhysicalPlanCostDetail
- type PhysicalPlanCostParam
- type PlanTrace
- type Region
Constants ¶
const TiDBTrace = "tr"
TiDBTrace is set as Baggage on traces which are used for tidb tracing.
Variables ¶
This section is empty.
Functions ¶
func ChildSpanFromContxt ¶
ChildSpanFromContxt return a non-nil span. If span can be got from ctx, then returned span is a child of such span. Otherwise, returned span is a noop span.
func CodecPlanName ¶
CodecPlanName returns tp_id of plan.
func ContextWithTraceInfo ¶
ContextWithTraceInfo creates a new `model.TraceInfo` for context
func NewRecordedTrace ¶
func NewRecordedTrace(opName string, callback func(sp basictracer.RawSpan)) opentracing.Span
NewRecordedTrace returns a Span which records directly via the specified callback.
func SpanFromContext ¶
SpanFromContext returns the span obtained from the context or, if none is found, a new one started through tracer.
Types ¶
type CETraceRecord ¶
type CETraceRecord struct { TableName string `json:"table_name"` Type string `json:"type"` Expr string `json:"expr"` TableID int64 `json:"-"` RowCount uint64 `json:"row_count"` }
CETraceRecord records an expression and related cardinality estimation result.
func DedupCETrace ¶
func DedupCETrace(records []*CETraceRecord) []*CETraceRecord
DedupCETrace deduplicate a slice of *CETraceRecord and return the deduplicated slice
type CallbackRecorder ¶
type CallbackRecorder func(sp basictracer.RawSpan)
A CallbackRecorder immediately invokes itself on received trace spans.
func (CallbackRecorder) RecordSpan ¶
func (cr CallbackRecorder) RecordSpan(sp basictracer.RawSpan)
RecordSpan implements basictracer.SpanRecorder.
type CandidatePlanTrace ¶
CandidatePlanTrace indicates info for candidate
type LogicalOptimizeTracer ¶
type LogicalOptimizeTracer struct { FinalLogicalPlan []*PlanTrace `json:"final"` Steps []*LogicalRuleOptimizeTracer `json:"steps"` // contains filtered or unexported fields }
LogicalOptimizeTracer indicates the trace for the whole logicalOptimize processing
func (*LogicalOptimizeTracer) AppendRuleTracerBeforeRuleOptimize ¶
func (tracer *LogicalOptimizeTracer) AppendRuleTracerBeforeRuleOptimize(index int, name string, before *PlanTrace)
AppendRuleTracerBeforeRuleOptimize add plan tracer before optimize
func (*LogicalOptimizeTracer) AppendRuleTracerStepToCurrent ¶
func (tracer *LogicalOptimizeTracer) AppendRuleTracerStepToCurrent(id int, tp, reason, action string)
AppendRuleTracerStepToCurrent add rule optimize step to current
func (*LogicalOptimizeTracer) RecordFinalLogicalPlan ¶
func (tracer *LogicalOptimizeTracer) RecordFinalLogicalPlan(final *PlanTrace)
RecordFinalLogicalPlan add plan trace after logical optimize
type LogicalRuleOptimizeTraceStep ¶
type LogicalRuleOptimizeTraceStep struct { Action string `json:"action"` Reason string `json:"reason"` TP string `json:"type"` ID int `json:"id"` Index int `json:"index"` }
LogicalRuleOptimizeTraceStep indicates the trace for the detailed optimize changing in logical rule optimize
type LogicalRuleOptimizeTracer ¶
type LogicalRuleOptimizeTracer struct { RuleName string `json:"name"` Before []*PlanTrace `json:"before"` Steps []LogicalRuleOptimizeTraceStep `json:"steps"` Index int `json:"index"` }
LogicalRuleOptimizeTracer indicates the trace for the LogicalPlan tree before and after logical rule optimize
type OptimizeTracer ¶
type OptimizeTracer struct { // Logical indicates logical plan Logical *LogicalOptimizeTracer `json:"logical"` // Physical indicates physical plan Physical *PhysicalOptimizeTracer `json:"physical"` // FinalPlan indicates the plan after post optimize FinalPlan []*PlanTrace `json:"final"` // IsFastPlan indicates whether the plan is generated by fast plan IsFastPlan bool `json:"isFastPlan"` }
OptimizeTracer indicates tracer for optimizer
func (*OptimizeTracer) RecordFinalPlan ¶
func (tracer *OptimizeTracer) RecordFinalPlan(final *PlanTrace)
RecordFinalPlan records plan after post optimize
func (*OptimizeTracer) SetFastPlan ¶
func (tracer *OptimizeTracer) SetFastPlan(final *PlanTrace)
SetFastPlan sets fast plan
type PhysicalOptimizeTracer ¶
type PhysicalOptimizeTracer struct { PhysicalPlanCostDetails map[string]*PhysicalPlanCostDetail `json:"costs"` Candidates map[int]*CandidatePlanTrace `json:"candidates"` // final indicates the final physical plan trace Final []*PlanTrace `json:"final"` }
PhysicalOptimizeTracer indicates the trace for the whole physicalOptimize processing
func (*PhysicalOptimizeTracer) AppendCandidate ¶
func (tracer *PhysicalOptimizeTracer) AppendCandidate(c *CandidatePlanTrace)
AppendCandidate appends physical CandidatePlanTrace in tracer. If the candidate already exists, the previous candidate would be covered depends on whether it has mapping logical plan
func (*PhysicalOptimizeTracer) RecordFinalPlanTrace ¶
func (tracer *PhysicalOptimizeTracer) RecordFinalPlanTrace(root *PlanTrace)
RecordFinalPlanTrace records final physical plan trace
type PhysicalPlanCostDetail ¶
type PhysicalPlanCostDetail struct { Params map[string]any `json:"params"` TP string `json:"type"` Desc string `json:"desc"` ID int `json:"id"` Cost float64 `json:"cost"` }
PhysicalPlanCostDetail indicates cost detail
func NewPhysicalPlanCostDetail ¶
func NewPhysicalPlanCostDetail(id int, tp string) *PhysicalPlanCostDetail
NewPhysicalPlanCostDetail creates a cost detail
func (*PhysicalPlanCostDetail) AddParam ¶
func (d *PhysicalPlanCostDetail) AddParam(k string, v any) *PhysicalPlanCostDetail
AddParam adds param
func (*PhysicalPlanCostDetail) Exists ¶
func (d *PhysicalPlanCostDetail) Exists(k string) bool
Exists checks whether key exists in params
func (*PhysicalPlanCostDetail) GetPlanID ¶
func (d *PhysicalPlanCostDetail) GetPlanID() int
GetPlanID gets plan id
func (*PhysicalPlanCostDetail) GetPlanType ¶
func (d *PhysicalPlanCostDetail) GetPlanType() string
GetPlanType gets plan type
func (*PhysicalPlanCostDetail) SetDesc ¶
func (d *PhysicalPlanCostDetail) SetDesc(desc string)
SetDesc sets desc
type PhysicalPlanCostParam ¶
type PhysicalPlanCostParam struct { Params map[string]any `json:"params"` Name string `json:"name"` Desc string `json:"desc"` ID int `json:"id"` Cost float64 `json:"cost"` }
PhysicalPlanCostParam indicates cost params
type PlanTrace ¶
type PlanTrace struct { TP string `json:"type"` ProperType string `json:"property"` // ExplainInfo should be implemented by each implemented Plan ExplainInfo string `json:"info"` Children []*PlanTrace `json:"-"` ChildrenID []int `json:"children"` ID int `json:"id"` Cost float64 `json:"cost"` Selected bool `json:"selected"` // contains filtered or unexported fields }
PlanTrace indicates for the Plan trace information
func (*PlanTrace) AppendChildrenID ¶
AppendChildrenID appends children ids
type Region ¶
Region is a region of code whose execution time interval is traced.
func StartRegion ¶
StartRegion provides better API, integrating both opentracing and runtime.trace facilities into one. Recommended usage is
defer tracing.StartRegion(ctx, "myTracedRegion").End()
func StartRegionEx ¶
StartRegionEx returns Region together with the context. Recommended usage is
r, ctx := tracing.StartRegionEx(ctx, "myTracedRegion") defer r.End()
func StartRegionWithNewRootSpan ¶
StartRegionWithNewRootSpan return Region together with the context. It create and start a new span by globalTracer and store it into `ctx`.