存储引擎
2017-01-17 07:40:44 0 举报
AI智能生成
存储引擎是数据库系统中用于存储、检索和管理数据的软件组件。它负责处理底层数据存储的细节,如数据的物理存储、索引的创建和维护以及查询的处理。不同的存储引擎具有不同的特性和性能,用户可以根据自己的需求选择合适的存储引擎。常见的存储引擎有MySQL的InnoDB、MyISAM、Memory等,以及MongoDB的WiredTiger、MMAPv1等。存储引擎的性能直接影响到数据库系统的整体性能,因此在选择存储引擎时需要综合考虑各种因素,如数据的访问模式、并发性要求、数据一致性和可用性等。
作者其他创作
大纲/内容
Storage local_store
dbStore
Begin
LocalVersionProvider::CurrentVersion
newTxn,创建dbTxn
newSnapshot,用storage和Version创建
NewUnionStore,用上一步创建好的snapshot创建kv.UnionStore
GetSnapshot
GetClient
Close
UUID
CurrentVersion
tikv
tikvStore
Begin
newTiKVTxn
tikvStore::getTimestampWithRetry
tikvStore::oracle.Oracle::GetTimestamp
newTiKVSnapshot,用storage和Version创建
NewUnionStore,用上一步创建好的snapshot创建kv.UnionStore
GetSnapshot
GetClient
Close
UUID
CurrentVersion
Transaction local_store
dbTxn
String
SetOption
kv.UnionStore::SetOption
DelOption
kv.UnionStore::DelOption
Commit
dbTxn.doCommit
kv.UnionStore.CheckLazyConditionPairs
kv.UnionStore.WalkBuffer,闭包函数dbTxn.LockKeys
遍历keys,dbTxn::lockedKeys标识
dbStore::CommitTxn
dbStore::doCommit
获取commitVer,如果有正在提交的事务操作,需要等待
dbStore::trylock
检测事务中的lockedKeys和dbStore中的keyslocked是否冲突,提交版本号检测
engine.DB.NewBatch
kv.UnionStore.WalkBuffer,闭包函数
MvccEncodeVersionKey
delete,localstoreCompactor::OnDelete,batch中放入操作
put,localstoreCompactor::OnSet,batch中放入操作
dbStore::writeBatch
engine.DB.Commit
dbStore::unLockKeys
遍历事务中的lockedKeys,检测事务冲突
更新对应key的版本号
dbTxn.close
Rollback
dbTxn::close
LockKeys
lockedKeys这个map中标识
IsReadOnly
dbTxn.dirty标识
StartTS
tid,开始时版本号
Valid
dbTxn.valid标识
RetrieverMutator
Retriever
Get
kv.UnionStore::Get
Seek
kv.UnionStore::Seek
SeekReverse
kv.UnionStore::SeekReverse
Mutator
kv.UnionStore::Set
kv.UnionStore::Delete
组件
kv.UnionStore
组件
继承BufferStore
组件
继承MemBuffer,RetrieverMutator别名
lazyMemBuffer
组件
memDbBuffer
Get
判断MemBuffers是否为NULL,为NULL直接返回空
否则调用MemBuffer.Get
Seek
SeekReverse
Set
Delete
Retriever,其实就是snapshot
Get
Seek
SeekReverse
Get
Seek
SeekReverse
WalkBuffer
SaveTo
Snapshot,主要是在CheckLazyConditionPairs中执行批量Get操作使用
Get
MemBuffer.Get
MemBuffer.BufferStore.Retriever.Get
CheckLazyConditionPairs
SetOption
DelOption
GetOption
tikv
tikvTxn
Driver 分类
engine.Driver
local_store
boltdb
Open
bolt.Open,返回bolt.DB
开始事务,创建bucket,提交
返回engine.DB
db
Get
Seek
SeekReverse
NewBatch
Commit
goleveldb
Open
leveldb.OpenFile
返回engine.DB
db
Get
Seek
SeekReverse
NewBatch
Commit
tikv
Open
driver.Open,调用engine.Driver.Open,返回db
创建dbStore
mock集群,设置region信息
Snapshot local_store
dbSnapshot
Retriever
Get
dbSnapshot::mvccSeek,在当前snapshot中找第一个不小于当前key的,并且version小于snapshot
key和version,使用MvccEncodeVersionKey
dbStore::Seek
dbStore::prepareSeek
engine.DB::Seek
如果key刚好匹配,则返回对应version的value
Seek
newDBIter,返回dbIter
逆序
dbSnapshot::reverseMvccSeek
正序
dbSnapshot::mvccSeek
SeekReverse
BatchGet
遍历,分别调用dbSnapshot::Get
tikv
tikvSnapshot
Retriever
tikvSnapshot::Get
tikvSnapshot::get
CmdGetRequest
RegionCache::LocateKey
tikvStore::SendKVReq
BatchGet
Iterator local_store
dbIter
Valid
Key
Value
Next
逆序
dbSnapshot::reverseMvccSeek
顺序
dbSnapshot::mvccSeek
Close
tikv
0 条评论
下一页