MySQL事物的相关理解

在MySQL中可以使用InnoDB的引擎开启事物,保证数据的操作完整。

提到事物,肯定有ACID,即原子性、一致性、隔离性、持久性。

关于数据隔离级别包括:读未提交、读已提交、可重复读、串行化。

读未提交(read uncommitted)是指一个事物还没有提交时,它做的变更后的数据可以被其他事务查询到。

读已提交(read committed)是指一个事务提交之后,它做的变更后数据才会被其他事务查询到。

可重复读(repeatable read)是指一个事务执行过程中可以查询到的数据,和事务一开始启动时查询的数据保持一致。

串行化(serializable)是指在一个事务操作数据时,无论时读还是写都会加锁,其他事务不可操作当前数据,必须等待当前事务完成,才可以执行。

事务隔离级别的实现

在MySQL中,所有的数据记录在更新的时候都会同时记录一条回滚操作,记录上的最新值,通过回滚操作,都可以得到前一个状态的值。回滚日志在系统判断当没有事务需要用到当前回滚日志时,将会删除当前回滚日志。所以说尽量不要使用长事务。长事务意味这系统中存在很老的事务视图,由于这些事务随时都有可能被用到,所以大量的回滚日志并不会被删除,会导致占用大量存储空间。

事务的启动

[if !supportLists]1.[endif]显示启动事务

Begin或 start transaction;提交事务commit 回滚事务rollback

[if !supportLists]2.[endif]Set autocommit = 0,这个命令会将这个线程的自动提交关闭,如果当前线程运行select语句后,就会启动事务,并且不会自动提交,事务一直存在直到断开连接。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容