在后端开发中,直接接触数据库是非常常见的事情,而在开发中,mysql 也是非常普遍的一个数据库管理系统(就以mysql 事务来说,其他不是很了解)。
一、事务是什么
数据库中的事务就是一系列 sql 操作的集合,要么都完成,要么都失败,失败就会回滚。
回滚:比如某个事务包含三条 sql 语句,而在执行第二条的时候,出现错误了,就会把第一条的操作结果回滚掉。相当于回到执行事务之前。
mysql 的事务其实跟他的引擎有关,我之前浏览过一篇帖子,大概就是说,mysql 在 5.7 以前的版本中默认引擎为 MyISAM ,MyISAM 不支持事务;在 mysql 5.7 之后,把 InnoDB 改为默认引擎,从而有了事务。
注:5.7 之前不支持事务是因为默认引擎的问题,只需要把默认引擎改成支持事务的引擎,也可以支持事务;同理,5.7 之后,也可以通过修改引擎,从而不支持引擎。
二、事务有什么特性
相信学过 mysql 基本就会知道事务的特性,那就是原子性、一致性、隔离性、持久性。
原子性:事务是最小的执行逻辑单位,也就是说包含 1~n 个 sql 操作的事务,不能再拆分,就是一个最小的整体了。
一致性:事务操作前后保证数据的一致特性,几个事务同时执行,必须保证这几个事务结果跟按照某一顺序 串序执行后结果一致。
隔离性:在并发下,各事务不会相互影响。
持久性:事务执行完成后,将会对数据库的数据永久性保留。
三、为什么用事务
使用事务,更有利于保证数据的安全,避免出现转账后,转账者余额不变,接收者余额一直增加的场景。