#事务
什么是事务?;多组操作要么全部成功要么全部失败
开启事务
start TRANSACTION
回滚事务(如果事务提交之后不能回滚)
rollback
提交事务
commit
事务的4大特性
原子性(automic):同一个事务中多组操作不能够分割,必须是一个整体
一致性(consistent):事务操作前与事务操作后总量保持一致
隔离性(isoltion):多个事务之间互不干扰
在mysql中事务有4种隔离级别;READ UNCOMMITTED, READ COMMITTED, repeatble read, SERIALIZABLE
查看mysql软件的事务隔离级别:select @@tx_isolation;
修改mysql软件的事务隔离级别;set global TRANSACTION ISOLATION LEVEL 隔离级别
set global TRANSACTION ISOLATION LEVEL REPEATABLE READ;
脏读;脏读就是指当一个事务正在访问数据,并且对数据进行了修改,而这种修改还没有提交到数据库中,这时,另外一个事务也访问这个数据,然后使用了这个数据
当mysql事务的隔离级别为 READ UNCOMMITTED时会引发脏读
任何解决脏读问题‘可以将数据库事务的隔离级别改为;READ COMMITTED
set global TRANSACTION ISOLATION LEVEL READ COMMITTED
-------------------------------================-----------------------
不可重复性;是指在一个事务内,多次读同一数据。在这个事务还没有结束时,另外一个事务也访问该同一数据。那么,在第一个事务中的两次读数据之间,由于第二个事务的修改,那么第一个事务两次读到的的数据可能是不一样的。这样就发生了在一个事务内两次读到的数据是不一样的,因此称为是不可重复读
当mysql软件的事务隔离性级别为READ COMMITTED的时候,会引发不可重复读;
如何解决不可重复读;奖事务的隔离级别改为 REPEATABLE READ
set global TRANSACTION ISOLATION LEVEL REPEATABLE READ
虚读与幻读
不可重复性
持久性(durable);数据一旦进入到数据库,表中,就永久存在
#事务练习
start TRANSACTION
UPDATE attrs set obj_id = 1;
rollback
commit
select @@tx_isolation;