网站建设中一览二栏什么意思,百度关键词搜索趋势,圆通速递我做网站,住建部建设厅官方网站事务
#xff01;#xff01;#xff01;确保多个关联操作全部执行 需要用到事务
事务是mysql的一项功能 使一组数据操作(DML操作) 要么全部执行 要么全部不执行#xff08;原子操作#xff09;
不会因为某种异常情况#xff08;停电#xff0c;网络中断#xff0…事务
确保多个关联操作全部执行 需要用到事务
事务是mysql的一项功能 使一组数据操作(DML操作) 要么全部执行 要么全部不执行原子操作
不会因为某种异常情况停电网络中断硬件故障等出现只执行一部分操作的情况
事务的语法结构
start transaction 或者 begin(开始事务)
一组DML语句一系列相关操作
commit (提交事务)
rollback (事务回滚)
commit 提交事务 让数据更改永久有效
rollback 回滚当前的事务操作 取消对数据的更改
事务的4个主要特征
原子性 事务的操作要么全部执行 要么全部不执行 不能从中间打断
一致性 数据的完整性不会因为事务的执行受到破坏
持久性 事务对数据的修改永久有效 不会因为系统故障失效
隔离性 多个事务同时执行时不会相互干扰不同的隔离级别相互独立的程度不同
注事务不会帮助处理sql语句执行中的错误
确保原子性与一致性
如果发现事务中的某个操作发生错误 要及时使用回滚 只有事务中的所有操作都可以正常执行才进行提交
关键就是 判断操作是否发生错误 通过row_count()的返回值判断一个DML操作是否失败 -1表示操作失败
存储过程
另外一个常用到事务的地方就是存储过程
存储过程包含许多相互关联的数据操作 所以会大量使用事务
可以在mysql存储过程中通过获取sql错误决定事务是提交还是回滚
注把重要的关联操作放在事务中确保操作的原子性 并对失败的操作进行回滚处理
mysql中并不是所有的操作都可以回滚 比如 创建数据库 创建数据表 删除数据库 删除数据表等这些操作不能回滚 先做备份
确保隔离性
使用锁实现事务之间的相互隔离 锁的使用方式不同隔离的程度也不同
mysql支持4种事务隔离级别 等级越高消耗资源越多 read uncommitted 可以读取事务中还未提交的被更改的数据 read committed 只能读取事务中已经提交的被更改的数据 repeatable read 表示一个事务中 对一个数据读取的值永远跟第一次读取的值一致 不受其他事务中数据操作的影响 mysql默认选项 serializable 表示任何一个事务一旦对某一个数据进行了操作 那么一直到这个事务结束mysql都会把这个数据锁住 禁止其他事务对这个数据进行任何操作
事务的隔离性对并发操作非常有用 当许多用户同时操作数据库时隔离性可以确保各个连接之间不相互影响
对于核心数据的更改操作设置较高的隔离等级