介绍
一个或一组sql语句组成的一个执行单元,这个执行单元要么全部执行,要么全部不执行。
一个事务中每个sql语句是相互依赖的,如果某一条语句执行失败或产生错误,整个单元将回滚,所有所影响的数据回滚到事务开始前的状态。如果单元中的所有sql语句均执行成功,则事务被顺利执行。
MySQL的存储引擎
存储引擎的概念:在MySQL中的数据用各种不同的技术存储在文件或内存中。
-- 查看mysql支持的存储引擎
show engines;
可以使用以上语句查看MySQL支持的存储引擎。
使用最多的存储引擎有:innoDB、myisam、memory等,其中innoDB是支持事务的,而myisam、memory等不支持事务。
事务的特点
ACID
- A(Atomicity)原子性:原子性是指事务是一个不可分割的工作单位,事务中的操作要么都发生,要么都不发生。
- C(Consistency)一致性:事务必须使数据库从一个一致性状态变换到另外一个一致性状态。
- I(Isolation)隔离性:事务的隔离性是指一个事务的执行不能被其他事务干扰,即一个事务内部的操作及使用的数据对并发的其他事务是隔离的,并发执行的各个事务之间不能相互干扰。
- D(Durability)持久性:持久性是指一个事务一旦被提交,它对数据库的改变就是永久的,接下来的其他操作和数据库故障不应该对其有任何影响。
实例说明:
A和B各有1000元,现A给B转账500元,数据库将执行的语句为
update 表 set A的余额 = 500 where name = 'A';
update 表 set B的余额 = 1500 where name = 'B';
- 原子性:两条sql语句要么全部执行成功,要么都不执行。
- 一致性:A、B各有1000元,总2000元,A给B转账后,A和B的余额总数仍为2000元
- 隔离性:A给B转账时,同时B产生了消费,需等转账事务执行成功或失败后,消费事务才能执行,保证两事务互不干扰。
- 持久性:A给B转账成功后,不能再对数据进行回滚到事务开始前,只能用新事物改变,即B又将500元转回给A