statistic

package
v0.0.0-debug-20260702 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 2, 2026 License: Apache-2.0 Imports: 4 Imported by: 0

Documentation

Index

Constants

View Source
const (
	Decimal128ToFloat64Scale = 5
	Float64PrecForMemorySize = 3
	Float64PrecForCU         = 4
	Float64PrecForIOInput    = 6
)
View Source
const (
	StatsArrayVersion0 = iota // raw statistics

	StatsArrayVersion1 = 1 // float64 array
	StatsArrayVersion2 = 2 // float64 array + plus one elem OutTrafficBytes
	StatsArrayVersion3 = 3 // ... + 1 elem: ConnType
	StatsArrayVersion4 = 4 // ... + 2 elem: OutPacketCount, CU
	StatsArrayVersion5 = 5 // ... + 1 elem: S3IOListCount, S3IODeleteCount

	StatsArrayVersionLatest // same value as last variable StatsArrayVersion#
)
View Source
const (
	StatsArrayIndexVersion = iota
	StatsArrayIndexTimeConsumed
	StatsArrayIndexMemorySize
	StatsArrayIndexS3IOInputCount
	StatsArrayIndexS3IOOutputCount // index: 4
	StatsArrayIndexOutTrafficBytes // index: 5
	StatsArrayIndexConnType        // index: 6
	StatsArrayIndexOutPacketCnt    // index: 7, version: 4
	StatsArrayIndexCU              // index: 8, version: 4
	StatsArrayIndexS3IOListCount   // index: 9, version: 5
	StatsArrayIndexS3IODeleteCount // index: 10, version: 5

	StatsArrayLength
)
View Source
const (
	StatsArrayLengthV1 = 5
	StatsArrayLengthV2 = 6
	StatsArrayLengthV3 = 7
	StatsArrayLengthV4 = 9
	StatsArrayLengthV5 = 11
)
View Source
const StatsArrayVersion = StatsArrayVersionLatest

Variables

View Source
var DefaultStatsArray = *initStatsArray
View Source
var DefaultStatsArrayJsonString = initStatsArray.ToJsonString()

Functions

func ContextWithStatsInfo added in v1.0.1

func ContextWithStatsInfo(requestCtx context.Context, stats *StatsInfo) context.Context

func EnsureStatsInfoCanBeFound added in v1.0.1

func EnsureStatsInfoCanBeFound(ctx context.Context, from context.Context) context.Context

EnsureStatsInfoCanBeFound ensure a statement statistic is set in context, if not, copy one from another context, this function is copied from EnsureStatementProfiler

func StatsArrayToJsonString

func StatsArrayToJsonString(arr []float64) []byte

StatsArrayToJsonString return json arr format example: [1,0,0,0,0] got `[1,0,0,0,0]` [1,2,3,4,5] got `[1,2,3.000,4,5]` [2,1,2,3,4,5] got `[2,3.000,4,5,6.000,7]`

Types

type ConnType

type ConnType float64
const (
	ConnTypeUnknown  ConnType = 0
	ConnTypeInternal ConnType = 1
	ConnTypeExternal ConnType = 2
)

type S3Request

type S3Request struct {
	List      int64 `json:"List,omitempty"`
	Head      int64 `json:"Head,omitempty"`
	Put       int64 `json:"Put,omitempty"`
	Get       int64 `json:"Get,omitempty"`
	Delete    int64 `json:"Delete,omitempty"`
	DeleteMul int64 `json:"DeleteMul,omitempty"`
}

S3Request structure is used to record the number of times each S3 operation is performed

func (S3Request) CountDELETE

func (s S3Request) CountDELETE() int64

func (S3Request) CountGET

func (s S3Request) CountGET() int64

func (S3Request) CountLIST

func (s S3Request) CountLIST() int64

CountLIST return s.List. Diff: 1) aws/aliyun treats List as PUT; 2) tencent cloud/huaweicloud treats List as GET cc https://github.com/matrixorigin/MO-Cloud/issues/4175#issuecomment-2375813480

func (S3Request) CountPUT

func (s S3Request) CountPUT() int64

type StatsArray

type StatsArray [StatsArrayLength]float64

func NewStatsArray

func NewStatsArray() *StatsArray

func NewStatsArrayV1

func NewStatsArrayV1() *StatsArray

func NewStatsArrayV2

func NewStatsArrayV2() *StatsArray

func NewStatsArrayV3

func NewStatsArrayV3() *StatsArray

func NewStatsArrayV4 added in v1.1.2

func NewStatsArrayV4() *StatsArray

func (*StatsArray) Add

func (s *StatsArray) Add(delta *StatsArray) *StatsArray

Add do add two stats array together except for Element ConnType, which idx = StatsArrayIndexConnType, just keep s[StatsArrayIndexConnType] value.

func (*StatsArray) GetCU added in v1.1.2

func (s *StatsArray) GetCU() float64

func (*StatsArray) GetConnType

func (s *StatsArray) GetConnType() float64

func (*StatsArray) GetMemorySize

func (s *StatsArray) GetMemorySize() float64

func (*StatsArray) GetOutPacketCount added in v1.1.2

func (s *StatsArray) GetOutPacketCount() float64

func (*StatsArray) GetOutTrafficBytes

func (s *StatsArray) GetOutTrafficBytes() float64

func (*StatsArray) GetS3IODeleteCount

func (s *StatsArray) GetS3IODeleteCount() float64

func (*StatsArray) GetS3IOInputCount

func (s *StatsArray) GetS3IOInputCount() float64

func (*StatsArray) GetS3IOListCount

func (s *StatsArray) GetS3IOListCount() float64

func (*StatsArray) GetS3IOOutputCount

func (s *StatsArray) GetS3IOOutputCount() float64

func (*StatsArray) GetTimeConsumed

func (s *StatsArray) GetTimeConsumed() float64

func (*StatsArray) GetVersion

func (s *StatsArray) GetVersion() float64

func (*StatsArray) Init

func (s *StatsArray) Init() *StatsArray

func (*StatsArray) InitIfEmpty

func (s *StatsArray) InitIfEmpty() *StatsArray

func (*StatsArray) Reset

func (s *StatsArray) Reset() *StatsArray

func (*StatsArray) ToJsonString

func (s *StatsArray) ToJsonString() []byte

func (*StatsArray) WithCU added in v1.1.2

func (s *StatsArray) WithCU(v float64) *StatsArray

func (*StatsArray) WithConnType

func (s *StatsArray) WithConnType(v ConnType) *StatsArray

func (*StatsArray) WithMemorySize

func (s *StatsArray) WithMemorySize(v float64) *StatsArray

func (*StatsArray) WithOutPacketCount added in v1.1.2

func (s *StatsArray) WithOutPacketCount(v float64) *StatsArray

func (*StatsArray) WithOutTrafficBytes

func (s *StatsArray) WithOutTrafficBytes(v float64) *StatsArray

func (*StatsArray) WithS3IODeleteCount

func (s *StatsArray) WithS3IODeleteCount(v float64) *StatsArray

func (*StatsArray) WithS3IOInputCount

func (s *StatsArray) WithS3IOInputCount(v float64) *StatsArray

func (*StatsArray) WithS3IOListCount

func (s *StatsArray) WithS3IOListCount(v float64) *StatsArray

func (*StatsArray) WithS3IOOutputCount

func (s *StatsArray) WithS3IOOutputCount(v float64) *StatsArray

func (*StatsArray) WithTimeConsumed

func (s *StatsArray) WithTimeConsumed(v float64) *StatsArray

func (*StatsArray) WithVersion

func (s *StatsArray) WithVersion(v float64) *StatsArray

WithVersion set the version array in StatsArray, please carefully to use.

type StatsInfo added in v1.0.1

type StatsInfo struct {
	ParseStage struct {
		ParseDuration  time.Duration `json:"ParseDuration"`
		ParseStartTime time.Time     `json:"ParseStartTime"`
	}

	// Planning Phase Statistics
	PlanStage struct {
		PlanDuration                time.Duration `json:"PlanDuration"`
		PlanStartTime               time.Time     `json:"PlanStartTime"`
		BuildPlanS3Request          S3Request     `json:"BuildPlanS3Request"`
		BuildPlanStatsIOConsumption int64         `json:"BuildPlanStatsIOConsumption"` // unit: ns
		// The following attributes belong to independent statistics during the `buildPlan` stage, only for analysis reference.
		BuildPlanStatsS3              S3Request `json:"BuildPlanStatsS3"`
		BuildPlanStatsDuration        int64     `json:"BuildPlanStatsDuration"`        // unit: ns
		BuildPlanStatsInCacheDuration int64     `json:"BuildPlanStatsInCacheDuration"` // unit: ns
		BuildPlanResolveVarDuration   int64     `json:"BuildPlanResolveVarDuration"`   // unit: ns
	}

	// Compile phase statistics
	CompileStage struct {
		CompileDuration       time.Duration `json:"CompileDuration"`
		CompileStartTime      time.Time     `json:"CompileStartTime"`
		CompileS3Request      S3Request     `json:"CompileS3Request"`
		CompileExpandRangesS3 S3Request     `json:"CompileExpandRangesS3"`
		// It belongs to independent statistics, which occurs during the `CompileQuery` stage, only for analysis reference.
		CompileTableScanDuration int64 `json:"CompileTableScanDuration"` // unit: ns
	}

	// Prepare execution phase statistics
	PrepareRunStage struct {
		CompilePreRunOnceDuration int64 `json:"CompilePreRunOnceDuration"` // unit: ns
		// During Compile PreRun, wait for the lock time when executing `locktable` and `lockMetaTables`
		CompilePreRunOnceWaitLock int64 `json:"CompilePreRunOnceWaitLock"` // unit: ns

		// ScopePrepareDuration belongs to concurrent merge time
		ScopePrepareDuration  int64     `json:"ScopePrepareDuration"` // unit: ns
		ScopePrepareS3Request S3Request `json:"ScopePrepareS3Request"`
		// It belongs to independent statistics, which occurs during the `PrepareRun` stage, only for analysis reference.
		BuildReaderDuration int64 `json:"BuildReaderDuration"` // unit: ns
	}

	// Execution phase statistics
	ExecuteStage struct {
		ExecutionDuration  time.Duration `json:"ExecutionDuration"`
		ExecutionStartTime time.Time     `json:"ExecutionStartTime"`
		ExecutionEndTime   time.Time     `json:"ExecutionEndTime"`

		// time consumption of output operator response to the query result set
		OutputDuration int64 `json:"OutputDuration"` // unit: ns
	}

	// Used to record statistics of additional operations, which are not included in the above stages
	OtherStage struct {
		TxnIncrStatementS3 S3Request `json:"TxnIncrStatementS3"`
	}
	// stats: [5,241837539,5622976.000,0,0,149,0,1,8.4507,0,0]
	// stats: [5,241837539,5622976.000,0,0,149,0,1,8.4507,0,0]
	PermissionAuth StatsArray `json:"PermissionAuth"`

	// FileService(S3 or localFS) Read Data time Consumption
	IOAccessTimeConsumption int64
	// S3 FileService Prefetch File IOMerge time Consumption
	S3FSPrefetchFileIOMergerTimeConsumption int64

	// Local FileService blocking wait IOMerge time Consumption, which is included in IOAccessTimeConsumption
	LocalFSReadIOMergerTimeConsumption int64
	// S3 FileService blocking wait IOMerge time Consumption, which is included in IOAccessTimeConsumption
	S3FSReadIOMergerTimeConsumption int64

	WaitActiveCost time.Duration `json:"WaitActive"`
}

func NewStatsInfo

func NewStatsInfo() *StatsInfo

func StatsInfoFromContext added in v1.0.1

func StatsInfoFromContext(requestCtx context.Context) *StatsInfo

func (*StatsInfo) AddBuildPlanResolveVarConsumption

func (stats *StatsInfo) AddBuildPlanResolveVarConsumption(d time.Duration)

func (*StatsInfo) AddBuildPlanS3Request

func (stats *StatsInfo) AddBuildPlanS3Request(sreq S3Request)

func (*StatsInfo) AddBuildPlanStatsConsumption

func (stats *StatsInfo) AddBuildPlanStatsConsumption(d time.Duration)

func (*StatsInfo) AddBuildPlanStatsIOConsumption

func (stats *StatsInfo) AddBuildPlanStatsIOConsumption(d time.Duration)

func (*StatsInfo) AddBuildPlanStatsS3Request

func (stats *StatsInfo) AddBuildPlanStatsS3Request(sreq S3Request)

func (*StatsInfo) AddBuildReaderTimeConsumption

func (stats *StatsInfo) AddBuildReaderTimeConsumption(d time.Duration)

func (*StatsInfo) AddCompileS3Request

func (stats *StatsInfo) AddCompileS3Request(sreq S3Request)

func (*StatsInfo) AddCompileTableScanConsumption

func (stats *StatsInfo) AddCompileTableScanConsumption(d time.Duration)

func (*StatsInfo) AddIOAccessTimeConsumption added in v1.1.1

func (stats *StatsInfo) AddIOAccessTimeConsumption(d time.Duration)

func (*StatsInfo) AddLocalFSReadIOMergerTimeConsumption added in v1.2.0

func (stats *StatsInfo) AddLocalFSReadIOMergerTimeConsumption(d time.Duration)

func (*StatsInfo) AddOutputTimeConsumption added in v1.2.3

func (stats *StatsInfo) AddOutputTimeConsumption(d time.Duration)

func (*StatsInfo) AddPreRunOnceWaitLockDuration

func (stats *StatsInfo) AddPreRunOnceWaitLockDuration(d int64)

func (*StatsInfo) AddS3FSPrefetchFileIOMergerTimeConsumption added in v1.2.0

func (stats *StatsInfo) AddS3FSPrefetchFileIOMergerTimeConsumption(d time.Duration)

func (*StatsInfo) AddS3FSReadIOMergerTimeConsumption added in v1.2.0

func (stats *StatsInfo) AddS3FSReadIOMergerTimeConsumption(d time.Duration)

func (*StatsInfo) AddScopePrepareDuration

func (stats *StatsInfo) AddScopePrepareDuration(d int64)

func (*StatsInfo) AddScopePrepareS3Request

func (stats *StatsInfo) AddScopePrepareS3Request(sreq S3Request)

func (*StatsInfo) AddStatsStatsInCacheDuration

func (stats *StatsInfo) AddStatsStatsInCacheDuration(d time.Duration)

func (*StatsInfo) AddTxnIncrStatementS3Request

func (stats *StatsInfo) AddTxnIncrStatementS3Request(sreq S3Request)

func (*StatsInfo) CompileEnd added in v1.0.1

func (stats *StatsInfo) CompileEnd()

func (*StatsInfo) CompileExpandRangesS3Request

func (stats *StatsInfo) CompileExpandRangesS3Request(sreq S3Request)

CompileExpandRangesS3Request

func (*StatsInfo) CompileStart added in v1.0.1

func (stats *StatsInfo) CompileStart()

func (*StatsInfo) ExecutionEnd added in v1.0.1

func (stats *StatsInfo) ExecutionEnd()

func (*StatsInfo) ExecutionStart added in v1.0.1

func (stats *StatsInfo) ExecutionStart()

func (*StatsInfo) IOMergerTimeConsumption added in v1.2.0

func (stats *StatsInfo) IOMergerTimeConsumption() int64

func (*StatsInfo) PlanEnd added in v1.0.1

func (stats *StatsInfo) PlanEnd()

func (*StatsInfo) PlanStart added in v1.0.1

func (stats *StatsInfo) PlanStart()

func (*StatsInfo) Reset added in v1.0.1

func (stats *StatsInfo) Reset()

reset StatsInfo into zero state

func (*StatsInfo) ResetBuildReaderTimeConsumption

func (stats *StatsInfo) ResetBuildReaderTimeConsumption()

func (*StatsInfo) ResetCompilePreRunOnceDuration

func (stats *StatsInfo) ResetCompilePreRunOnceDuration()

func (*StatsInfo) ResetCompilePreRunOnceWaitLock

func (stats *StatsInfo) ResetCompilePreRunOnceWaitLock()

func (*StatsInfo) ResetIOAccessTimeConsumption added in v1.2.3

func (stats *StatsInfo) ResetIOAccessTimeConsumption()

func (*StatsInfo) ResetIOMergerTimeConsumption added in v1.2.3

func (stats *StatsInfo) ResetIOMergerTimeConsumption()

func (*StatsInfo) ResetScopePrepareDuration

func (stats *StatsInfo) ResetScopePrepareDuration()

func (*StatsInfo) SetWaitActiveCost added in v1.2.0

func (stats *StatsInfo) SetWaitActiveCost(cost time.Duration)

func (*StatsInfo) StoreCompilePreRunOnceDuration

func (stats *StatsInfo) StoreCompilePreRunOnceDuration(d time.Duration)

NOTE: CompilePreRunOnceDuration is a one-time statistic and does not require accumulation

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL