Documentation ¶
Index ¶
- type Bucket
- 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) Update(is infoschema.InfoSchema) error
- func (h *Handle) UpdateTableStats(tables []*Table, deletedIDs []int64)
- type Histogram
- func BuildColumn(ctx context.Context, numBuckets, id int64, ndv int64, count int64, ...) (*Histogram, error)
- func BuildIndex(ctx context.Context, numBuckets, id int64, records ast.RecordSet) (int64, *Histogram, error)
- func BuildPK(ctx context.Context, numBuckets, id int64, records ast.RecordSet) (int64, *Histogram, error)
- 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 Bucket ¶
Bucket is an element of histogram.
A bucket count is the number of items stored in all previous buckets and the current bucket. bucket numbers are always in increasing order.
A bucket value is the greatest item value stored in the bucket.
Repeat is the number of repeats of the bucket value, it can be used to find popular values.
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) Update ¶
func (h *Handle) Update(is infoschema.InfoSchema) error
Update reads stats meta from store and updates the stats map.
func (*Handle) UpdateTableStats ¶
UpdateTableStats updates the statistics table cache using copy on write.
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.
func BuildColumn ¶
func BuildColumn(ctx context.Context, numBuckets, id int64, ndv int64, count int64, samples []types.Datum) (*Histogram, error)
BuildColumn builds histogram from samples for column.
func BuildIndex ¶
func BuildIndex(ctx context.Context, numBuckets, id int64, records ast.RecordSet) (int64, *Histogram, error)
BuildIndex builds histogram for 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 { TableID int64 Columns map[int64]*Column Indices map[int64]*Index Count int64 // Total row count in a table. Pseudo bool }
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.