什么是事务?
事务就是一组原子性的SQL查询或者说一个独立的工作单元,其实你只需要记住:事务内的语句,要么全部执行成功,要么全部执行失败。
事务的ACID(即原子性、一致性、隔离性、持久性)
原子性:一个事物必须被视为最小的不可分割的工作单元,对于一个一个事务来说,不可能只执行事务中的一部分操作。
一致性:数据库总是从一个一致性状态转化到另一个一致性状态,相当于说就是,事务只要没有提交,数据就不会被修改保存到数据库中去,相反,事务一旦提交,数据就会被修改保存到数据库中去。
隔离性:一个事务所做的修改在提交前,对于其他事务通常是不可见的,之所以说是通常,因为这和事务的隔离级别有关系。
持久性:事务一旦提交,其所做的修改会被永久保存到数据库中去,此时即使系统崩溃,修改的数据也不会丢失。
SQL的四种隔离级别(较低的隔离通常可以执行更高的并发,系统开销也更低)
未提交读(READ UNCOMMITTED):在这个级别下,事务中的修改,即使没有提交,对其他事务也是可见的。事务可以读取到未提交的数据,从而造成脏读。实际应用中一般很少使用。
提交读(READ COMMITTED):这是大多数数据库的默认隔离级别。在这一级别下,事务只能看见已经提交的事务所做的修改,在这个隔离级别,可能会造成两次读取的结果不一致(不可重复读的问题)