Documentation
¶
Index ¶
- type Builder
- type Column
- type FMSketch
- type Handle
- func (h *Handle) Clear()
- func (h *Handle) DDLEventCh() chan *ddl.Event
- func (h *Handle) DumpStatsDeltaToKV()
- func (h *Handle) GetTableStats(tblID int64) *Table
- func (h *Handle) HandleDDLEvent(t *ddl.Event) error
- func (h *Handle) NewSessionStatsCollector() *SessionStatsCollector
- func (h *Handle) SaveToStorage(t *Table) error
- func (h *Handle) Update(is infoschema.InfoSchema) error
- type Histogram
- type Index
- type SessionStatsCollector
- type Table
- func (t *Table) ColumnBetweenRowCount(sc *variable.StatementContext, a, b types.Datum, colInfo *model.ColumnInfo) (float64, error)
- func (t *Table) ColumnEqualRowCount(sc *variable.StatementContext, value types.Datum, colInfo *model.ColumnInfo) (float64, error)
- func (t *Table) ColumnGreaterRowCount(sc *variable.StatementContext, value types.Datum, colInfo *model.ColumnInfo) (float64, error)
- func (t *Table) ColumnLessRowCount(sc *variable.StatementContext, value types.Datum, colInfo *model.ColumnInfo) (float64, error)
- func (t *Table) GetRowCountByIndexRanges(sc *variable.StatementContext, idxID int64, indexRanges []*types.IndexRange, ...) (float64, error)
- func (t *Table) GetRowCountByIntColumnRanges(sc *variable.StatementContext, colID int64, intRanges []types.IntColumnRange) (float64, error)
- func (t *Table) String() string
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Builder ¶
type Builder struct { Ctx context.Context // Ctx is the context. TblInfo *model.TableInfo // TblInfo is the table info of the table. StartTS int64 // StartTS is the start timestamp of the statistics table builder. Count int64 // Count is the total rows in the table. NumBuckets int64 // NumBuckets is the number of buckets a column histogram has. ColumnSamples [][]types.Datum // ColumnSamples is the sample of columns. ColIDs []int64 // ColIDs is the id of columns in the table. ColNDVs []int64 // ColNDVs is the NDV of columns. IdxRecords []ast.RecordSet // IdxRecords is the record set of index columns. IdxIDs []int64 // IdxIDs is the id of indices in the table. PkRecords ast.RecordSet // PkRecords is the record set of primary key of integer type. PkID int64 // PkID is the id of primary key with integer type in the table. // contains filtered or unexported fields }
Builder describes information needed by NewTable
type FMSketch ¶
type FMSketch struct {
// contains filtered or unexported fields
}
FMSketch is used to count the number of distinct elements in a set.
func (*FMSketch) InsertValue ¶
InsertValue inserts a value into the FM sketch.
type Handle ¶
type Handle struct { // LastVersion is the latest update version before last lease. Exported for test. LastVersion uint64 // PrevLastVersion is the latest update version before two lease. Exported for test. // We need this because for two tables, the smaller version may write later than the one with larger version. // We can read the version with lastTwoVersion if the diff between commit time and version is less than one lease. // PrevLastVersion will be assigned by LastVersion every time Update is called. PrevLastVersion uint64 // contains filtered or unexported fields }
Handle can update stats info periodically.
func (*Handle) DDLEventCh ¶
DDLEventCh returns ddl events channel in handle.
func (*Handle) DumpStatsDeltaToKV ¶
func (h *Handle) DumpStatsDeltaToKV()
DumpStatsDeltaToKV sweeps the whole list and updates the global map. Then we dumps every table that held in map to KV.
func (*Handle) GetTableStats ¶
GetTableStats retrieves the statistics table from cache, and the cache will be updated by a goroutine.
func (*Handle) HandleDDLEvent ¶
HandleDDLEvent begins to process a ddl task.
func (*Handle) NewSessionStatsCollector ¶
func (h *Handle) NewSessionStatsCollector() *SessionStatsCollector
NewSessionStatsCollector allocates a stats collector for a session.
func (*Handle) SaveToStorage ¶
SaveToStorage saves stats table to storage.
func (*Handle) Update ¶
func (h *Handle) Update(is infoschema.InfoSchema) error
Update reads stats meta from store and updates the stats map.
type Histogram ¶
type Histogram struct { ID int64 // Column ID. NDV int64 // Number of distinct values. // LastUpdateVersion is the version that this histogram updated last time. LastUpdateVersion uint64 Buckets []bucket }
Histogram represents statistics for a column or index.
type SessionStatsCollector ¶
SessionStatsCollector is a list item that holds the delta mapper. If you want to write or read mapper, you must lock it.
func (*SessionStatsCollector) Delete ¶
func (s *SessionStatsCollector) Delete()
Delete only sets the deleted flag true, it will be deleted from list when DumpStatsDeltaToKV is called.
type Table ¶
type Table struct { Columns map[int64]*Column Indices map[int64]*Index Count int64 // Total row count in a table. Pseudo bool // contains filtered or unexported fields }
Table represents statistics for a table.
func PseudoTable ¶
PseudoTable creates a pseudo table statistics when statistic can not be found in KV store.
func (*Table) ColumnBetweenRowCount ¶
func (t *Table) ColumnBetweenRowCount(sc *variable.StatementContext, a, b types.Datum, colInfo *model.ColumnInfo) (float64, error)
ColumnBetweenRowCount estimates the row count where column greater or equal to a and less than b.
func (*Table) ColumnEqualRowCount ¶
func (t *Table) ColumnEqualRowCount(sc *variable.StatementContext, value types.Datum, colInfo *model.ColumnInfo) (float64, error)
ColumnEqualRowCount estimates the row count where the column equals to value.
func (*Table) ColumnGreaterRowCount ¶
func (t *Table) ColumnGreaterRowCount(sc *variable.StatementContext, value types.Datum, colInfo *model.ColumnInfo) (float64, error)
ColumnGreaterRowCount estimates the row count where the column greater than value.
func (*Table) ColumnLessRowCount ¶
func (t *Table) ColumnLessRowCount(sc *variable.StatementContext, value types.Datum, colInfo *model.ColumnInfo) (float64, error)
ColumnLessRowCount estimates the row count where the column less than value.
func (*Table) GetRowCountByIndexRanges ¶
func (t *Table) GetRowCountByIndexRanges(sc *variable.StatementContext, idxID int64, indexRanges []*types.IndexRange, inAndEQCnt int) (float64, error)
GetRowCountByIndexRanges estimates the row count by a slice of IndexRange.
func (*Table) GetRowCountByIntColumnRanges ¶
func (t *Table) GetRowCountByIntColumnRanges(sc *variable.StatementContext, colID int64, intRanges []types.IntColumnRange) (float64, error)
GetRowCountByIntColumnRanges estimates the row count by a slice of IntColumnRange.