• 在实际的业务开发中,有些业务操作要多次访问数据库。一个业务要发送多条SQL语句给数据库执行。需要将多次访问数据库的操作视为一个整体来执行,要么所有的SQL语句全部执行成功。如果其中有一条SQL语句失败,就进行事务的回滚,所有的SQL语句全部执行失败。
  • MySQL自动默认提交事物,当我们执行的一条语句都是一个事物,执行完语句自动提交事物。
  • 在MySQL中提交事物的方式分为两种:自动提交和手动提交
  • 开启事物之后所有的操作都会临时保存到事物操作日志,事物日志只有在得到commit命令之后才会将数据同步到表中,其他的任何情况都会清空事物日志(rollback,断开连接等);
    mysql的事物

事物的提交语句

mysql的事物

事物的执行流程

mysql的事物

手动提交事物

  1. 开启事物:START TRANSACTION;
  2. 执行sql语句
  3. 在控制台输入commit提交事物;

自动提交事物

通过修改mysql全局变量"autocommit"可以操作是否自动开启事物

  1. 在控制台输入show variables like '%commit%';来查看是否开启自动提交事物;
    mysql的事物
  2. 设置autocommit的状态set autocommit = 1;,0为关闭,1为开启;

回滚点

  • 在某些成功的操作完成之后,后续的操作有可能成功有可能失败,但是不管成功还是失败,前面操作都已经成功,可以在当前成功的位置设置一个回滚点。可以供后续失败操作返回到该位置,而不是返回所有操作,这个点称之为回滚点。
  • 设置回滚点的语法:savepoint 回滚点的名字;
  • 回到回滚点的语法:rollback to 回滚点的名字;
    mysql的事物

事物的4大特性

mysql的事物

事物的隔离级别

事务在操作时的理想状态:多个事务之间互不影响,如果隔离级别设置不当就可能引发并发访问问题。
mysql的事物
mysql的事物

  • 查询事物隔离级别:
show variables like '%isolation%';
-- 或
select @@tx_isolation;

mysql的事物

  • 设置事物隔离级别
set global transaction isolation level 级别字符串;
-- 如:
set global transaction isolation level read uncommitted;

相关文章:

  • 2022-12-23
  • 2022-01-09
  • 2021-10-12
  • 2021-04-02
  • 2021-10-26
  • 2021-05-16
  • 2022-12-23
猜你喜欢
  • 2018-07-25
  • 2022-01-22
  • 2021-12-21
  • 2021-04-29
  • 2021-06-16
相关资源
相似解决方案