一条SQL更新语句是如何执行的?

example

UPDATE t SET c = c+1 WHERE id = 1

一条SQL更新语句是如何执行的?_第1张图片

执行步骤

  1. 执行器调用引擎的查询接口,查找id=2的这行数据,如果这行数据的所在页在内存中,就直接返回数据,否则从磁盘中读入内存,然后再返回数据
  2. 执行器拿到引擎返回的数据后进行更新,然后调用引擎的更新接口写入这行新数据
  3. 引擎将这行新数据写入内存中,并更新redo log,此时redo log处于prepare(准备)状态,然后告知执行器,随时可以提交事务
  4. 执行器生成这个操作的binlog日志,并写入磁盘
  5. 执行器调用引擎的提交事务接口,引擎把刚刚写入redo log的状态改为commit(提交)状态,更新完成

这也是常说的两阶段提交

你可能感兴趣的:(MySQL,sql,数据库)