mysql事务

trx_start_low//mysql 事务开始

trx_sys_get_new_trx_id 


MYSQL_BIN_LOG::recover //恢复


commit_by_xid

rollback_by_xid


xarecover_handlerton


ha_recover


thd->transaction.xid_state.xid.set(thd->query_id);


用一个简单的更新语句来说明log_sys以及ib_logfile的更新内容的过程。假设我们的更新只涉及到非索引的固定长度字段。

a)        在bufferpool中写入undo log。 对于一个单一的语句,需要先创建一个undolog头。

b)        在bufferpool中写入undo log的实际内容。

c)        在log_sys->buf中写入buffer page的更新内容。此处保存了更新的完整信息。

d)        在log_sys->buf中写入启动事务(trx_prepare)的日志

e)        将c、d更新的log内容写入ib_logfile中。

f)         在log_sys->buf中写入事务结束(trx_commit)的日志

g)        将f步骤的log内容写入ib_logfile中。


buf_pool->stat.n_pages_created++


row_upd_rec_in_place //redo log for update

btr_cur_upd_lock_and_undo //undo log for update


MYSQL_BIN_LOG::do_write_cache(    //写binglog的地方


 Query_log_event::write(IO_CACHE* file), 生成 binglog内容


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值