cache

package
v0.0.0-...-f8535f3 Latest Latest
Warning

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

Go to latest
Published: Nov 4, 2025 License: Apache-2.0 Imports: 29 Imported by: 0

Documentation

Index

Constants

View Source
const LeaseOffset = 5

LeaseOffset represents the time offset for the stats cache to load statistics from the store. This value is crucial to ensure that the stats are retrieved at the correct interval. See more at where it is used.

Variables

View Source
var TableRowStatsCache = &StatsTableRowCache{
	tableRows: make(map[int64]uint64),
	colLength: make(map[tableHistID]uint64),
}

TableRowStatsCache is the cache of table row count.

Functions

func NewStatsCacheImpl

func NewStatsCacheImpl(statsHandle types.StatsHandle) (types.StatsCache, error)

NewStatsCacheImpl creates a new StatsCache.

func NewStatsCacheImplForTest

func NewStatsCacheImplForTest() (types.StatsCache, error)

NewStatsCacheImplForTest creates a new StatsCache for test.

Types

type StatsCache

type StatsCache struct {
	// contains filtered or unexported fields
}

StatsCache caches the tables in memory for Handle. TODO: hide this structure or merge it into StatsCacheImpl.

func NewStatsCache

func NewStatsCache() (*StatsCache, error)

NewStatsCache creates a new StatsCacheWrapper.

func (*StatsCache) Close

func (sc *StatsCache) Close()

Close stops the cache.

func (*StatsCache) CopyAndUpdate

func (sc *StatsCache) CopyAndUpdate(tables []*statistics.Table, deletedIDs []int64) *StatsCache

CopyAndUpdate copies a new cache and updates the new statistics table cache. It is only used in the COW mode.

func (*StatsCache) Cost

func (sc *StatsCache) Cost() int64

Cost returns the memory usage of the cache.

func (*StatsCache) Get

func (sc *StatsCache) Get(id int64) (*statistics.Table, bool)

Get returns the statistics of the specified Table ID. The returned value should be read-only, if you update it, don't forget to use Put to put it back again, otherwise the memory trace can be inaccurate.

e.g. v := sc.Get(id); /* update the value */ v.Version = 123; sc.Put(id, v);

func (*StatsCache) Len

func (sc *StatsCache) Len() int

Len returns the number of tables in the cache.

func (*StatsCache) Put

func (sc *StatsCache) Put(id int64, t *statistics.Table)

Put puts the table statistics to the cache from query.

func (*StatsCache) SetCapacity

func (sc *StatsCache) SetCapacity(c int64)

SetCapacity sets the memory capacity of the cache.

func (*StatsCache) TriggerEvict

func (sc *StatsCache) TriggerEvict()

TriggerEvict triggers the cache to evict some items.

func (*StatsCache) Update

func (sc *StatsCache) Update(tables []*statistics.Table, deletedIDs []int64, skipMoveForwardStatsCache bool)

Update updates the new statistics table cache.

func (*StatsCache) Values

func (sc *StatsCache) Values() []*statistics.Table

Values returns all the cached statistics tables.

func (*StatsCache) Version

func (sc *StatsCache) Version() uint64

Version returns the version of the current cache, which is defined as the max table stats version the cache has in its lifecycle.

type StatsCacheImpl

type StatsCacheImpl struct {
	atomic.Pointer[StatsCache]
	// contains filtered or unexported fields
}

StatsCacheImpl implements util.StatsCache.

func (*StatsCacheImpl) Clear

func (s *StatsCacheImpl) Clear()

Clear clears this cache. Create a empty cache and replace the old one.

func (*StatsCacheImpl) Close

func (s *StatsCacheImpl) Close()

Close closes this cache.

func (*StatsCacheImpl) Get

func (s *StatsCacheImpl) Get(tableID int64) (*statistics.Table, bool)

Get returns the specified table's stats.

func (*StatsCacheImpl) GetNextCheckVersionWithOffset

func (s *StatsCacheImpl) GetNextCheckVersionWithOffset() uint64

GetNextCheckVersionWithOffset gets the last version with offset.

func (*StatsCacheImpl) Len

func (s *StatsCacheImpl) Len() int

Len returns the length of this cache.

func (*StatsCacheImpl) MaxTableStatsVersion

func (s *StatsCacheImpl) MaxTableStatsVersion() uint64

MaxTableStatsVersion returns the version of the current cache, which is defined as the max table stats version the cache has in its lifecycle.

func (*StatsCacheImpl) MemConsumed

func (s *StatsCacheImpl) MemConsumed() (size int64)

MemConsumed returns its memory usage.

func (*StatsCacheImpl) Put

func (s *StatsCacheImpl) Put(id int64, t *statistics.Table)

Put puts this table stats into the cache.

func (*StatsCacheImpl) Replace

func (s *StatsCacheImpl) Replace(cache types.StatsCache)

Replace replaces this cache.

func (*StatsCacheImpl) SetStatsCacheCapacity

func (s *StatsCacheImpl) SetStatsCacheCapacity(c int64)

SetStatsCacheCapacity sets the cache's capacity.

func (*StatsCacheImpl) TriggerEvict

func (s *StatsCacheImpl) TriggerEvict()

TriggerEvict triggers the cache to evict some items.

func (*StatsCacheImpl) Update

func (s *StatsCacheImpl) Update(ctx context.Context, is infoschema.InfoSchema, tableAndPartitionIDs ...int64) error

Update reads stats meta from store and updates the stats map.

func (*StatsCacheImpl) UpdateStatsCache

func (s *StatsCacheImpl) UpdateStatsCache(cacheUpdate types.CacheUpdate)

UpdateStatsCache updates the cache with the new cache.

func (*StatsCacheImpl) UpdateStatsHealthyMetrics

func (s *StatsCacheImpl) UpdateStatsHealthyMetrics()

UpdateStatsHealthyMetrics updates stats healthy distribution metrics according to stats cache.

func (*StatsCacheImpl) Values

func (s *StatsCacheImpl) Values() []*statistics.Table

Values returns all values in this cache.

type StatsTableRowCache

type StatsTableRowCache struct {
	// contains filtered or unexported fields
}

StatsTableRowCache is used to cache the count of table rows.

func (*StatsTableRowCache) EstimateDataLength

func (c *StatsTableRowCache) EstimateDataLength(table *model.TableInfo) (
	rowCount uint64, avgRowLength uint64, dataLength uint64, indexLength uint64)

EstimateDataLength returns the estimated data length in bytes of a given table info. Returns row count, average row length, total data length, and all indexed column length.

func (*StatsTableRowCache) GetColLength

func (c *StatsTableRowCache) GetColLength(id tableHistID) uint64

GetColLength gets the length of the column.

func (*StatsTableRowCache) GetDataAndIndexLength

func (c *StatsTableRowCache) GetDataAndIndexLength(info *model.TableInfo, physicalID int64, rowCount uint64) (dataLength, indexLength uint64)

GetDataAndIndexLength gets the data and index length of the table.

func (*StatsTableRowCache) GetTableRows

func (c *StatsTableRowCache) GetTableRows(id int64) uint64

GetTableRows gets the count of table rows.

func (*StatsTableRowCache) UpdateByID

func (c *StatsTableRowCache) UpdateByID(sctx sessionctx.Context, ids ...int64) error

UpdateByID tries to update the cache by table ID.

Directories

Path Synopsis
lfu

Jump to

Keyboard shortcuts

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