Documentation ¶
Index ¶
- Constants
- func CollectTiFlashStatus(statusAddress string, keyspaceID tikv.KeyspaceID, tableID int64, ...) error
- func ComputeTiFlashStatus(reader *bufio.Reader, regionReplica *map[int64]int) error
- func GetTiFlashTableIDFromEndKey(endKey string) int64
- func SyncTableSchemaToTiFlash(statusAddress string, keyspaceID tikv.KeyspaceID, tableID int64) error
- type FrameItem
- type Helper
- func (h *Helper) FetchHotRegion(ctx context.Context, rw string) (map[uint64]RegionMetric, error)
- func (h *Helper) FetchRegionTableIndex(metrics map[uint64]RegionMetric, is infoschema.SchemaAndTable, ...) ([]HotTableIndex, error)
- func (*Helper) FilterMemDBs(oldSchemas []*model.DBInfo) (schemas []*model.DBInfo)
- func (*Helper) FindTableIndexOfRegion(is infoschema.SchemaAndTable, hotRange *RegionFrameRange) *FrameItem
- func (h *Helper) GetMvccByEncodedKey(encodedKey kv.Key) (*kvrpcpb.MvccGetByKeyResponse, error)
- func (h *Helper) GetMvccByEncodedKeyWithTS(encodedKey kv.Key, startTS uint64) (*kvrpcpb.MvccGetByKeyResponse, error)
- func (h *Helper) GetMvccByStartTs(startTS uint64, startKey, endKey kv.Key) (*MvccKV, error)
- func (h *Helper) GetPDAddr() ([]string, error)
- func (h *Helper) GetPDRegionStats(ctx context.Context, tableID int64, noIndexStats bool) (*pd.RegionStats, error)
- func (h *Helper) GetRegionsTableInfo(regionsInfo *pd.RegionsInfo, is infoschema.SchemaAndTable, ...) map[int64][]TableInfo
- func (*Helper) GetTablesInfoWithKeyRange(is infoschema.SchemaAndTable, filter func([]*model.DBInfo) []*model.DBInfo) []TableInfoWithKeyRange
- func (*Helper) ParseRegionsTableInfos(regionsInfo []*pd.RegionInfo, tables []TableInfoWithKeyRange) map[int64][]TableInfo
- func (h *Helper) ScrapeHotInfo(ctx context.Context, rw string, is infoschema.SchemaAndTable, ...) ([]HotTableIndex, error)
- func (h *Helper) TryGetPDHTTPClient() (pd.Client, error)
- type HotTableIndex
- type MvccKV
- type RegionFrameRange
- type RegionMetric
- type Storage
- type TableInfo
- type TableInfoWithKeyRange
- type TblIndex
Constants ¶
const ( HotRead = "read" HotWrite = "write" )
Constants that used to distinguish the hot region info request.
const MaxBackoffTimeoutForMvccGet = 5000
MaxBackoffTimeoutForMvccGet is a derived value from previous implementation possible experiencing value 5000ms.
Variables ¶
This section is empty.
Functions ¶
func CollectTiFlashStatus ¶
func CollectTiFlashStatus(statusAddress string, keyspaceID tikv.KeyspaceID, tableID int64, regionReplica *map[int64]int) error
CollectTiFlashStatus query sync status of one table from TiFlash store. `regionReplica` is a map from RegionID to count of TiFlash Replicas in this region.
func ComputeTiFlashStatus ¶
ComputeTiFlashStatus is helper function for CollectTiFlashStatus.
func GetTiFlashTableIDFromEndKey ¶
GetTiFlashTableIDFromEndKey computes tableID from pd rule's endKey.
func SyncTableSchemaToTiFlash ¶
func SyncTableSchemaToTiFlash(statusAddress string, keyspaceID tikv.KeyspaceID, tableID int64) error
SyncTableSchemaToTiFlash query sync schema of one table to TiFlash store.
Types ¶
type FrameItem ¶
type FrameItem struct { DBName string `json:"db_name"` TableName string `json:"table_name"` TableID int64 `json:"table_id"` IsRecord bool `json:"is_record"` RecordID int64 `json:"record_id,omitempty"` IndexName string `json:"index_name,omitempty"` IndexID int64 `json:"index_id,omitempty"` IndexValues []string `json:"index_values,omitempty"` }
FrameItem includes a index's or record's meta data with table's info.
func NewFrameItemFromRegionKey ¶
NewFrameItemFromRegionKey creates a FrameItem with region's startKey or endKey, returns err when key is illegal.
type Helper ¶
type Helper struct { Store Storage RegionCache *tikv.RegionCache // contains filtered or unexported fields }
Helper is a middleware to get some information from tikv/pd. It can be used for TiDB's http api or mem table.
func (*Helper) FetchHotRegion ¶
FetchHotRegion fetches the hot region information from PD's http api.
func (*Helper) FetchRegionTableIndex ¶
func (h *Helper) FetchRegionTableIndex(metrics map[uint64]RegionMetric, is infoschema.SchemaAndTable, filter func([]*model.DBInfo) []*model.DBInfo) ([]HotTableIndex, error)
FetchRegionTableIndex constructs a map that maps a table to its hot region information by the given raw hot RegionMetric metrics.
func (*Helper) FilterMemDBs ¶
FilterMemDBs filters memory databases in the input schemas.
func (*Helper) FindTableIndexOfRegion ¶
func (*Helper) FindTableIndexOfRegion(is infoschema.SchemaAndTable, hotRange *RegionFrameRange) *FrameItem
FindTableIndexOfRegion finds what table is involved in this hot region. And constructs the new frame item for future use.
func (*Helper) GetMvccByEncodedKey ¶
GetMvccByEncodedKey get the MVCC value by the specific encoded key.
func (*Helper) GetMvccByEncodedKeyWithTS ¶
func (h *Helper) GetMvccByEncodedKeyWithTS(encodedKey kv.Key, startTS uint64) (*kvrpcpb.MvccGetByKeyResponse, error)
GetMvccByEncodedKeyWithTS get the MVCC value by the specific encoded key, if lock is encountered it would be resolved.
func (*Helper) GetMvccByStartTs ¶
GetMvccByStartTs gets Mvcc info by startTS from tikv.
func (*Helper) GetPDRegionStats ¶
func (h *Helper) GetPDRegionStats(ctx context.Context, tableID int64, noIndexStats bool) (*pd.RegionStats, error)
GetPDRegionStats get the RegionStats by tableID from PD by HTTP API.
func (*Helper) GetRegionsTableInfo ¶
func (h *Helper) GetRegionsTableInfo(regionsInfo *pd.RegionsInfo, is infoschema.SchemaAndTable, filter func([]*model.DBInfo) []*model.DBInfo) map[int64][]TableInfo
GetRegionsTableInfo returns a map maps region id to its tables or indices. Assuming tables or indices key ranges never intersect. Regions key ranges can intersect.
func (*Helper) GetTablesInfoWithKeyRange ¶
func (*Helper) GetTablesInfoWithKeyRange(is infoschema.SchemaAndTable, filter func([]*model.DBInfo) []*model.DBInfo) []TableInfoWithKeyRange
GetTablesInfoWithKeyRange returns a slice containing tableInfos with key ranges of all tables in schemas.
func (*Helper) ParseRegionsTableInfos ¶
func (*Helper) ParseRegionsTableInfos(regionsInfo []*pd.RegionInfo, tables []TableInfoWithKeyRange) map[int64][]TableInfo
ParseRegionsTableInfos parses the tables or indices in regions according to key range.
func (*Helper) ScrapeHotInfo ¶
func (h *Helper) ScrapeHotInfo(ctx context.Context, rw string, is infoschema.SchemaAndTable, filter func([]*model.DBInfo) []*model.DBInfo) ([]HotTableIndex, error)
ScrapeHotInfo gets the needed hot region information by the url given.
type HotTableIndex ¶
type HotTableIndex struct { RegionID uint64 `json:"region_id"` RegionMetric *RegionMetric `json:"region_metric"` DbName string `json:"db_name"` TableName string `json:"table_name"` TableID int64 `json:"table_id"` IndexName string `json:"index_name"` IndexID int64 `json:"index_id"` }
HotTableIndex contains region and its table/index info.
type MvccKV ¶
type MvccKV struct { Key string `json:"key"` RegionID uint64 `json:"region_id"` Value *kvrpcpb.MvccGetByKeyResponse `json:"value"` }
MvccKV wraps the key's mvcc info in tikv.
type RegionFrameRange ¶
type RegionFrameRange struct { First *FrameItem // start frame of the region Last *FrameItem // end frame of the region // contains filtered or unexported fields }
RegionFrameRange contains a frame range info which the region covered.
func NewRegionFrameRange ¶
func NewRegionFrameRange(region *tikv.KeyLocation) (idxRange *RegionFrameRange, err error)
NewRegionFrameRange init a NewRegionFrameRange with region info.
func (*RegionFrameRange) GetIndexFrame ¶
func (r *RegionFrameRange) GetIndexFrame(tableID, indexID int64, dbName, tableName, indexName string) *FrameItem
GetIndexFrame returns the indnex frame of a table. If the table's indices are not covered by this frame range, it returns nil.
func (*RegionFrameRange) GetRecordFrame ¶
func (r *RegionFrameRange) GetRecordFrame(tableID int64, dbName, tableName string, isCommonHandle bool) (f *FrameItem)
GetRecordFrame returns the record frame of a table. If the table's records are not covered by this frame range, it returns nil.
type RegionMetric ¶
type RegionMetric struct { FlowBytes uint64 `json:"flow_bytes"` MaxHotDegree int `json:"max_hot_degree"` Count int `json:"region_count"` }
RegionMetric presents the final metric output entry.
type Storage ¶
type Storage interface { Begin(opts ...tikv.TxnOption) (kv.Transaction, error) GetSnapshot(ver kv.Version) kv.Snapshot GetClient() kv.Client GetMPPClient() kv.MPPClient Close() error UUID() string CurrentVersion(txnScope string) (kv.Version, error) CurrentTimestamp(txnScop string) (uint64, error) GetOracle() oracle.Oracle SupportDeleteRange() (supported bool) Name() string Describe() string ShowStatus(ctx context.Context, key string) (any, error) GetMemCache() kv.MemManager GetRegionCache() *tikv.RegionCache SendReq(bo *tikv.Backoffer, req *tikvrpc.Request, regionID tikv.RegionVerID, timeout time.Duration) (*tikvrpc.Response, error) GetLockResolver() *txnlock.LockResolver GetSafePointKV() tikv.SafePointKV UpdateSPCache(cachedSP uint64, cachedTime time.Time) SetOracle(oracle oracle.Oracle) SetTiKVClient(client tikv.Client) GetTiKVClient() tikv.Client Closed() <-chan struct{} GetMinSafeTS(txnScope string) uint64 GetLockWaits() ([]*deadlockpb.WaitForEntry, error) GetCodec() tikv.Codec GetPDHTTPClient() pd.Client }
Storage represents a storage that connects TiKV. Methods copied from kv.Storage and tikv.Storage due to limitation of go1.13.
type TableInfo ¶
type TableInfo struct { DB *model.DBInfo Table *model.TableInfo IsPartition bool Partition *model.PartitionDefinition IsIndex bool Index *model.IndexInfo }
TableInfo stores the information of a table or an index
type TableInfoWithKeyRange ¶
TableInfoWithKeyRange stores table or index information with its key range.
func NewIndexWithKeyRange ¶
func NewIndexWithKeyRange(db *model.DBInfo, table *model.TableInfo, index *model.IndexInfo) TableInfoWithKeyRange
NewIndexWithKeyRange constructs TableInfoWithKeyRange for given index, it is exported only for test.
func NewTableWithKeyRange ¶
func NewTableWithKeyRange(db *model.DBInfo, table *model.TableInfo) TableInfoWithKeyRange
NewTableWithKeyRange constructs TableInfoWithKeyRange for given table, it is exported only for test.
func (TableInfoWithKeyRange) GetEndKey ¶
func (t TableInfoWithKeyRange) GetEndKey() string
GetEndKey implements `withKeyRange` interface.
func (TableInfoWithKeyRange) GetStartKey ¶
func (t TableInfoWithKeyRange) GetStartKey() string
GetStartKey implements `withKeyRange` interface.