Documentation
¶
Index ¶
- Constants
- Variables
- func ContextWithStatsInfo(requestCtx context.Context, stats *StatsInfo) context.Context
- func EnsureStatsInfoCanBeFound(ctx context.Context, from context.Context) context.Context
- func StatsArrayToJsonString(arr []float64) []byte
- type ConnType
- type S3Request
- type StatsArray
- func (s *StatsArray) Add(delta *StatsArray) *StatsArray
- func (s *StatsArray) GetCU() float64
- func (s *StatsArray) GetConnType() float64
- func (s *StatsArray) GetMemorySize() float64
- func (s *StatsArray) GetOutPacketCount() float64
- func (s *StatsArray) GetOutTrafficBytes() float64
- func (s *StatsArray) GetS3IODeleteCount() float64
- func (s *StatsArray) GetS3IOInputCount() float64
- func (s *StatsArray) GetS3IOListCount() float64
- func (s *StatsArray) GetS3IOOutputCount() float64
- func (s *StatsArray) GetTimeConsumed() float64
- func (s *StatsArray) GetVersion() float64
- func (s *StatsArray) Init() *StatsArray
- func (s *StatsArray) InitIfEmpty() *StatsArray
- func (s *StatsArray) Reset() *StatsArray
- func (s *StatsArray) ToJsonString() []byte
- func (s *StatsArray) WithCU(v float64) *StatsArray
- func (s *StatsArray) WithConnType(v ConnType) *StatsArray
- func (s *StatsArray) WithMemorySize(v float64) *StatsArray
- func (s *StatsArray) WithOutPacketCount(v float64) *StatsArray
- func (s *StatsArray) WithOutTrafficBytes(v float64) *StatsArray
- func (s *StatsArray) WithS3IODeleteCount(v float64) *StatsArray
- func (s *StatsArray) WithS3IOInputCount(v float64) *StatsArray
- func (s *StatsArray) WithS3IOListCount(v float64) *StatsArray
- func (s *StatsArray) WithS3IOOutputCount(v float64) *StatsArray
- func (s *StatsArray) WithTimeConsumed(v float64) *StatsArray
- func (s *StatsArray) WithVersion(v float64) *StatsArray
- type StatsInfo
- func (stats *StatsInfo) AddBuildPlanResolveVarConsumption(d time.Duration)
- func (stats *StatsInfo) AddBuildPlanS3Request(sreq S3Request)
- func (stats *StatsInfo) AddBuildPlanStatsConsumption(d time.Duration)
- func (stats *StatsInfo) AddBuildPlanStatsIOConsumption(d time.Duration)
- func (stats *StatsInfo) AddBuildPlanStatsS3Request(sreq S3Request)
- func (stats *StatsInfo) AddBuildReaderTimeConsumption(d time.Duration)
- func (stats *StatsInfo) AddCompileS3Request(sreq S3Request)
- func (stats *StatsInfo) AddCompileTableScanConsumption(d time.Duration)
- func (stats *StatsInfo) AddIOAccessTimeConsumption(d time.Duration)
- func (stats *StatsInfo) AddLocalFSReadIOMergerTimeConsumption(d time.Duration)
- func (stats *StatsInfo) AddOutputTimeConsumption(d time.Duration)
- func (stats *StatsInfo) AddPreRunOnceWaitLockDuration(d int64)
- func (stats *StatsInfo) AddS3FSPrefetchFileIOMergerTimeConsumption(d time.Duration)
- func (stats *StatsInfo) AddS3FSReadIOMergerTimeConsumption(d time.Duration)
- func (stats *StatsInfo) AddScopePrepareDuration(d int64)
- func (stats *StatsInfo) AddScopePrepareS3Request(sreq S3Request)
- func (stats *StatsInfo) AddStatsStatsInCacheDuration(d time.Duration)
- func (stats *StatsInfo) AddTxnIncrStatementS3Request(sreq S3Request)
- func (stats *StatsInfo) CompileEnd()
- func (stats *StatsInfo) CompileExpandRangesS3Request(sreq S3Request)
- func (stats *StatsInfo) CompileStart()
- func (stats *StatsInfo) ExecutionEnd()
- func (stats *StatsInfo) ExecutionStart()
- func (stats *StatsInfo) IOMergerTimeConsumption() int64
- func (stats *StatsInfo) PlanEnd()
- func (stats *StatsInfo) PlanStart()
- func (stats *StatsInfo) Reset()
- func (stats *StatsInfo) ResetBuildReaderTimeConsumption()
- func (stats *StatsInfo) ResetCompilePreRunOnceDuration()
- func (stats *StatsInfo) ResetCompilePreRunOnceWaitLock()
- func (stats *StatsInfo) ResetIOAccessTimeConsumption()
- func (stats *StatsInfo) ResetIOMergerTimeConsumption()
- func (stats *StatsInfo) ResetScopePrepareDuration()
- func (stats *StatsInfo) SetWaitActiveCost(cost time.Duration)
- func (stats *StatsInfo) StoreCompilePreRunOnceDuration(d time.Duration)
Constants ¶
const ( Decimal128ToFloat64Scale = 5 Float64PrecForMemorySize = 3 Float64PrecForCU = 4 Float64PrecForIOInput = 6 )
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# )
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 )
const ( StatsArrayLengthV1 = 5 StatsArrayLengthV2 = 6 StatsArrayLengthV3 = 7 StatsArrayLengthV4 = 9 StatsArrayLengthV5 = 11 )
const StatsArrayVersion = StatsArrayVersionLatest
Variables ¶
var DefaultStatsArray = *initStatsArray
var DefaultStatsArrayJsonString = initStatsArray.ToJsonString()
Functions ¶
func ContextWithStatsInfo ¶ added in v1.0.1
func EnsureStatsInfoCanBeFound ¶ added in v1.0.1
EnsureStatsInfoCanBeFound ensure a statement statistic is set in context, if not, copy one from another context, this function is copied from EnsureStatementProfiler
func StatsArrayToJsonString ¶
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 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 (S3Request) CountLIST ¶
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
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 (*StatsInfo) AddBuildPlanResolveVarConsumption ¶
func (*StatsInfo) AddBuildPlanS3Request ¶
func (*StatsInfo) AddBuildPlanStatsConsumption ¶
func (*StatsInfo) AddBuildPlanStatsIOConsumption ¶
func (*StatsInfo) AddBuildPlanStatsS3Request ¶
func (*StatsInfo) AddBuildReaderTimeConsumption ¶
func (*StatsInfo) AddCompileS3Request ¶
func (*StatsInfo) AddCompileTableScanConsumption ¶
func (*StatsInfo) AddIOAccessTimeConsumption ¶ added in v1.1.1
func (*StatsInfo) AddLocalFSReadIOMergerTimeConsumption ¶ added in v1.2.0
func (*StatsInfo) AddOutputTimeConsumption ¶ added in v1.2.3
func (*StatsInfo) AddPreRunOnceWaitLockDuration ¶
func (*StatsInfo) AddS3FSPrefetchFileIOMergerTimeConsumption ¶ added in v1.2.0
func (*StatsInfo) AddS3FSReadIOMergerTimeConsumption ¶ added in v1.2.0
func (*StatsInfo) AddScopePrepareDuration ¶
func (*StatsInfo) AddScopePrepareS3Request ¶
func (*StatsInfo) AddStatsStatsInCacheDuration ¶
func (*StatsInfo) AddTxnIncrStatementS3Request ¶
func (*StatsInfo) CompileEnd ¶ added in v1.0.1
func (stats *StatsInfo) CompileEnd()
func (*StatsInfo) CompileExpandRangesS3Request ¶
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 (*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 (*StatsInfo) StoreCompilePreRunOnceDuration ¶
NOTE: CompilePreRunOnceDuration is a one-time statistic and does not require accumulation