MySQL总结(十三)数据库事务隔离级别-概述
短信预约 信息系统项目管理师 报名、考试、查分时间动态提醒
事务的隔离级别
1.ACID事务的四大特性
事务特性 | 含义 |
---|---|
原子性(Atomicity) | 每个事务都是一个整体,不可再拆分,事务中所有的sql语句要么全部执行成功,要么全部执行失败。 |
一致性(Consistency) | 事务在执行前数据库的状态与执行后数据库的状态保持一致。如:转账前2 个人的总金额是 2000 ,转账后 2 个人总金额也是 2000 |
隔离性 | 事务与事务之间不应该相互影响,执行时保持隔离的状态。 |
持久性 | 一旦事务执行成功,对数据库的修改是持久的。就算关机,也是保存下来的。 |
2.并发访问可能出现的问题
- 事务在操作时的理想状态:
所有的事务之间保持隔离,互不影响。因为并发操作,多个用户同时访问同一个数据。
- 可能引发并发访问的问题:
并发访问的问题 | 含义 |
---|---|
脏读 | 一个事务读取到了另一个事务中尚未提交的数据 |
不可重复读 | 一个事务中两次读取的数据 内容 不一致,要求的是一个事务中多次读取时数据是一致的, 这是事务 update 时引发的问题 |
幻读 | 一个事务中两次读取的数据的 数量 不一致,要求在一个事务多次读取的数据的数量是一致的,这是 insert 或 或 delete 时引发的问题 |
3. MySql数据库有四种隔离级别
上面的级别最低,下面的级别最高。“是”表示会出现这种问题,“否”表示不会出现这种问题。
级别 | 名字 | 隔离级别 | 脏读 | 不可重复读 | 幻读 | 数据库默认隔离级别 |
---|---|---|---|---|---|---|
1 | 读已提交 | read uncommitted | 是 | 是 | 是 | |
2 | 读未提交 | read committed | 否 | 是 | 是 | Oracle和SQL Server |
3 | 可重复读 | repeatable read | 否 | 否 | 是 | MySQL |
4 | 串行化 | serializable | 否 | 否 | 否 |
隔离级别越高,性能越差,安全性越高。
4.MySQL事务隔离级别相关的命令
- 查询全局事务隔离级别
查询隔离级别: select @@tx_isolation;
- 设置事务隔离级别,需要退出MySQL再重新登录才能看到隔离级别的变化
设置隔离级别: set global transaction isolation level 级别字符串;
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341