优秀的集团网站微信公众号制作网页
news/
2025/9/22 17:55:20/
文章来源:
优秀的集团网站,微信公众号制作网页,黄骅港潮汐表2022最新表,商务网站建设教学视频教程1、什么是事务
在实际的业务开发中#xff0c;有些业务操作要多次访问数据库。一个业务要发送多条SQL语句给数据库执行。需要将多次访问数据库的操作视为一个整体来执行#xff0c;要么所有的SQL语句全部执行成功。如果其中有一条SQL语句失败#xff0c;就进行事务的回滚有些业务操作要多次访问数据库。一个业务要发送多条SQL语句给数据库执行。需要将多次访问数据库的操作视为一个整体来执行要么所有的SQL语句全部执行成功。如果其中有一条SQL语句失败就进行事务的回滚所有的SQL语句全部执行失败。 简而言之事务指的是逻辑上的一组操作,组成这组操作的各个单元要么全都成功,要么全都失败。 事务作用保证在一个事务中多次操作数据库表中数据时要么全都成功,要么全都失败。
2、手动提交事务
MYSQL中可以有两种方式进行事务的操作
1. 手动提交事务先开启再提交
2. 自动提交事务(默认的):即执行一条sql语句提交一次事务。事务有关的SQL语句 手动提交事务使用步骤
第1种情况开启事务 - 执行SQL语句 - 成功 - 提交事务
第2种情况开启事务 - 执行SQL语句 - 失败 - 回滚事务 自动提交事务 MySQL的每一条DML(增删改)语句都是一个单独的事务每条语句都会自动开启一个事务执行完毕自动提交事务MySQL默认开始自动提交事务。自动提交通过修改mysql全局变量“autocommit”进行控制。
1.通过以下命令可以查看当前autocommit模式
show variables like %commit%;
2.设置自动提交的参数为OFF:
set autocommit 0; -- 0:OFF 1:ON
小结 1MySql默认自动提交。即执行一条sql语句提交一次事务。 2设置autocommit为off状态只是临时性的下次重新连接mysqlautocommit依然变为on状态。 3如果设置autocommit为off状态那么当我们执行一条sql语句就不会自动提交事务重新启动可视化工具数据并没有改变。 4如果设置autocommit为on状态如果我们先执行 start transaction; 然后在执行修改数据库的语句 update account set money money-100 where namea; update account set money money100 where nameb; 那么此时就表示上述修改数据库的sql语句都在同一个事务中此时必须手动提交事务即commit;
换句话说如果我们手动开启事务 start transaction; 那么此时mysql就不会自动提交事务必须手动提交事务。
5如果设置autocommit为on状态如果我们不执行 start transaction; 直接执行修改数据库的语句 update account set money money-100 where namea; update account set money money100 where nameb; 那么此时mysql就会自动提交事务。即上述每条sql语句就是一个事务。
-- 自动提交事务每条sql语句就是一个事务那么执行一条sql语句就会提交一次事务
-- mysql数据库就是自动提交事务
-- a给b转账100元
update account set moneymoney-100 where namea;
update account set moneymoney100 where nameb;-- 查看mysql是否自动提交事务
-- autocommit的值是on表示自动提交事务值是off表示关闭自动提交事务
show variables like %commit%;
-- 我们可以使用命令临时设置mysql变为手动提交事务即将自动提交事务关闭
-- 下次重新连接mysql依然是自动提交事务
set autocommit 0; -- 0 表示关闭自动提交事务 1表示开启自动事务
update account set moneymoney-100 where namea 事务的四大特性(ACID)(面试) 数据库的事务必须具备ACID特性ACID是指 Atomicity原子性、Consistensy一致性、Isolation隔离性和Durability持久性的英文缩写 1、隔离性Isolation 多个用户并发的访问数据库时一个用户的事务不能被其他用户的事务干扰多个并发的事务之间要相互隔离。 一个事务的成功或者失败对于其他的事务是没有影响。2个事务应该相互独立 2、持久性Durability 指一个事务一旦被提交它对数据库的改变将是永久性的哪怕数据库发生异常重启之后数据亦然存在 3、原子性Atomicity 原子性是指事务**包装的一组sql(一组业务逻辑)是一个不可分割的工作单位事务中的操作要么都发生要么都不发生。 4、一致性Consistency 一个事务在执行之前和执行之后 数据库都必须处于一致性状态。 如果事务成功的完成那么数据库的所有变化将生效。 如果事务执行出现错误那么数据库的所有变化将会被回滚撤销返回到原始状态。 **事务的成功与失败最终数据库的数据都是符合实际生活的业务逻辑。一致性绝大多数依赖业务逻辑和原子性 事务的并发访问引发的三个问题(面试)
事务在操作时的理想状态多个事务之间互不影响如果隔离级别设置不当就可能引发并发访问问题。 能够理解并发访问的三个问题赃读:一个事务读取另一个事务还没有提交的数据,一定避免。不可重复读:一个事务读取多次数据内容不一样主要是update语句。事务已经提交了。 可以发生的。幻读:一个事务读取多次数量不一样主要是delete或者insert语句。事务已经提交了。可以发生的。
事务的隔离级别 2、安全和性能对比 安全性serializable repeatable read read committed read uncommitted
性能 serializable repeatable read read committed read uncommitted 3、注意其实三个问题开发中最严重的问题就是脏读这个问题一定要避免而关于不可重复读和虚读其实只是感官上的错误并不是逻辑上的错误。就是数据的时效性所以这种问题并不属于很严重的错误。如果对于数据的时效性要求不是很高的情况下我们是可以接受不可重复读和虚读的情况发生的。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/909885.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!