美文网首页
MySQL(Mariadb)总结6 - 事务

MySQL(Mariadb)总结6 - 事务

作者: drfung | 来源:发表于2017-11-21 17:21 被阅读22次

事务: 一种原子性的SQL查询,或者说是一个独立的工作单元.

事务日志文件:

ACID测试:

  • A: atomicity, 原子性 - 整个事务钟的所有操作要么全部执行,要么全部失败后回滚.
  • C:consistency, 一致性 - 数据库总是从一个一致性状态转化为另一个一致状态;
  • I: Isolation, 隔离性 - 一个事务所做出的操作在提交之前,是不能为其它所见,隔离有多种隔离级别;
  • D: durability: 持久性 - 一旦事务提交,其所做的修改会永远保存于数据库中.

使用事务:

  • 启动事务: START TRANSACTION
  • 结束事务:
    • COMMIT:提交
    • ROLLBACK:回滚

建议: 显示请求和提交事务,而不要自动提交.

autocommit=[0/1]

help transaction

设置保存点savepoint

SAVEPOINT identifier
ROLLBACK [WORK] TO [SAVEPOINT] identifier
RELEASE SAVEPOINT identifier

事务隔离级别:

  • READ UNCOMMITTED(读未提交)
  • READ COMMITTED (读提交)
  • REPEATABLE READ (可重读)
  • SERIALIZABILE(可串行化)
    • tx_isolation,默认为REPETABLE-READ

可能存在问题:

  • 脏读
  • 不可重复读
  • 幻读
  • 加锁读

MVCC: 多版本并发访问控制,在事务启动时为每个事务创建快照.

死锁: 两个或多个事务在同一资源相互占用,并请求锁定对方占用的资源的状态.

事务日志:

  • 事务日志的写入类型为"追加",因此其操作为"顺序IO";
  • 此日志通常也被称作"预写式日志(write ahead logging)";

默认事务日志:ib_logfile<n>

innodb_log_size
innodb_log_in_group
innodb_log_group_home_dir

相关文章

网友评论

      本文标题:MySQL(Mariadb)总结6 - 事务

      本文链接:https://www.haomeiwen.com/subject/ewvwvxtx.html