19#include "storage/trx/trx.h"
30 const std::vector<FieldMeta> *trx_fields()
const override;
32 Trx *create_trx(int32_t trx_id)
override;
33 void destroy_trx(
Trx *trx)
override;
40 void all_trxes(std::vector<Trx *> &trxes)
override;
43 int32_t next_trx_id();
46 int32_t max_trx_id()
const;
49 std::vector<FieldMeta> fields_;
51 std::atomic<int32_t> current_trx_id_{0};
54 std::vector<Trx *> trxes_;
69 RC insert_record(
Table *table,
Record &record)
override;
84 RC start_if_need()
override;
86 RC rollback()
override;
90 int32_t id()
const override {
return trx_id_; }
93 RC commit_with_trx_id(int32_t commit_id);
97 static const int32_t MAX_TRX_ID = std::numeric_limits<int32_t>::max();
100 using OperationSet = std::unordered_set<Operation, OperationHasher, OperationEqualer>;
103 int32_t trx_id_ = -1;
104 bool started_ =
false;
105 bool recovering_ =
false;
106 OperationSet operations_;
日志管理器
Definition: clog.h:357
表示一条日志记录
Definition: clog.h:156
一个DB实例负责管理一批表
Definition: db.h:34
Definition: mvcc_trx.h:24
Trx * find_trx(int32_t trx_id) override
找到对应事务号的事务
Definition: mvcc_trx.cpp:99
多版本并发事务TODO 没有垃圾回收
Definition: mvcc_trx.h:63
RC visit_record(Table *table, Record &record, bool readonly) override
当访问到某条数据时,使用此函数来判断是否可见,或者是否有访问冲突
Definition: mvcc_trx.cpp:188
void trx_fields(Table *table, Field &begin_xid_field, Field &end_xid_field) const
获取指定表上的事务使用的字段
Definition: mvcc_trx.cpp:229
RC delete_record(Table *table, Record &record) override
Definition: mvcc_trx.cpp:163
表示一个记录 当前的记录都是连续存放的空间(内存或磁盘上)。 为了提高访问的效率,record通常直接记录指向页面上的内存,但是需要保证访问这种数据时,拿着锁资源。 为了方便,也提供了复制内存的方法。可...
Definition: record.h:92
事务管理器
Definition: trx.h:105
事务接口
Definition: trx.h:142