首页 / MYSQL / Mysql-事务 笔记
Mysql-事务 笔记
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Mysql-事务 笔记,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2893字,纯文字阅读大概需要5分钟。
内容图文
原文地址:http://www.zsythink.net/archives/1204
http://www.zsythink.net/archives/1216
http://www.zsythink.net/archives/1233
原文讲的很详细,以下为个人理解笔记。
概述 事务的ACID四大特性 A:atomicity 原子性 ? 整个事务中的所有操作要么全部执行成功,要么全部执行失败后回滚到最初状态 B:consistency 一致性 ?数据库中式从一个一致性状态转为另一个一致性状态 C:isolation 隔离性 一个事务在提交前所做的操作是否能为其他事务课件,由于不同的场景需求不同,所以针对隔离性来说,有不同的隔离级别 D:durability 持久性 事务一旦提交,事务所做出的修改将会永久保存,此时即使数据库崩溃,修改的数据也不会丢失, ? 事务日志可分为redo log 和undo log 1、redo log : ??? ?? ? mysql会将事务中的sql语句涉及到的所有数据操作先记录到redo log中,然后再将操作从redo log中同步到对应的数据文件中。例如修改50条数据,现将此操作记录到redo log中,然后再从redo log中一条一条同步到数据文件对应的记录中,即使出现打断比如停电,那么依靠redo log中的日志将剩余部分操作再次痛不痛对应的数据文件中。 2、undo log: ?? ?? ? 可以理解为数据修改之前的备份,比如事务进行到一半,有一条未执行成功,发生回滚,则需要根据undo log进行撤销,将修改过的数据从逻辑上恢复到修改之前的样子,注:undo log 是逻辑日志,与redo log记录的页操作屋里日志不同 3、log group: ? ? 重做日志组,一个重做日志组中有多个重做日志文件,也就是多个redo log file。当日志组中的第一个log file被写满,则会将redo log写入到日志组中的下一个重做日志文件中,以此类推。如果全部被写满,则将redo log 再写入到第一个redo log file中覆盖原来的redo log,以便新的redo log 被写入。
? ? ?? ??? ?
? ? ? 事务的4种隔离级别 1、READ-UNCOMMITTED: 读未提交 ?? ?? ?事务1位提交,事务2就可以看到事务1 所做的修改 当前事务能够看到其他事务中未提交的数据,这种现象叫做脏读。同时也会出现幻读和不可重读的问题。 ? 此隔离级别并发是最强的,但是隔离性和安全性是最差的。? ? 2、READ-COMMITTED:读已提交或者读提交 ?? ??? ?事务1未提交,事务2 无法看到事务1中的修改,而当事务1提交后,事务2中即可看到事务1中的修改。 会出现幻读问题和不可重读问题(注:不可重读不要理解为一定不可重读,可以理解为不一定可重读) 幻读出现为事务2 的多次读取,然后事务1 在此期间已提交了插入或者删除操作 不可重读是在事务2 多次读取,事务1在此期间提交了修改操作 两者在某些地方均叫做幻读,而且mysql官方文档也将不可重读归为幻读,只是单价为了更加细化他们的区别。 ? 3、REPEATABLE-READ:可重读 ? ?? ?? ??? ?事务1提交了,事务2 在未提交之前事务2中查到的数据是相同的。 ?此级别会出现幻读问题。 ? 4、SERIALIZABLE:串行化? ?? ??? ?事务1未提交事务2的查询语句被阻塞 ?? 不会出现幻读的问题,但失去了并发的能力,此隔离国域严格,所以很少讲隔离级别设置为串行化 ? ? ? 总结脏读、幻读、不可重读的区别 脏读:当前事务可以查到别的事务未提交的数据(侧重点在于别的事务未提交) 幻读:幻读的表象与不可重读的表象都让人懵逼,很容易混淆,但是如果细分则可以理解为幻读侧重于数据的新增和删除,标示在同一事务中,使用相同的查询语句,第二次查询时,莫明多出来一些之前不存在的数据,或者莫明的不见了一些数据 不可重读:不可重读的侧重点在于更新修改数据,标示在同一事务中,查询相同的数据范围是,同一个数据资源莫明的改变了。
内容总结
以上是互联网集市为您收集整理的Mysql-事务 笔记全部内容,希望文章能够帮你解决Mysql-事务 笔记所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。