事务的隔离级别有哪些?

事务:一个操作序列,要么同时执行,要么同时不执行,是一个不可分割的工作单位

事务有四大特性,原子性 一致性 持久性 与 隔离性

​ ① Serializable (串行化):可避免脏读、不可重复读、幻读的发生。

  ② Repeatable read (可重复读):可避免脏读、不可重复读的发生。

  ③ Read committed (读已提交):可避免脏读的发生。

  ④ Read uncommitted (读未提交):最低级别,任何情况都无法保证。

脏读是一个事务在修改某个数据但未提交,这时,另一个事务也来访问该数据,这时就会造成两个事务得到的数据不一致,比如,A 向 B 转 100元,这时 B 发现钱确实到账了,但只要 A 不提交该事务,所有的事务都将回滚, B 会发现 钱没能到账

不可重复读是指事务1在读取某一数据,而事务2立马修改了这个数据并提交给事务给数据库,当事务1再次读取该数据就会得到不同的结果,

幻读:事务非独立执行时发生的一种现象。比如:事务1对一个表中的所有行的某个数据项进行修改操作如从 1 修改成 2,这时事务2又对这个表中插入了一行数据,并且在这个数据项的数据为 1 时就提交给数据库。如果事务1的操作用户查看刚刚修改的数据,会发现还有一行没有修改,其实这一行是事务2添加的,这就是 幻读

级别越高,执行的效率越低, MySQL 数据库, 默认是Repeatable read (可重复读) ,

 在MySQL数据库中查看当前事务的隔离级别:

    select @@tx_isolation;

  在MySQL数据库中设置事务的隔离 级别:

    set  [glogal | session]  transaction isolation level 隔离级别名称;
​
    set tx_isolation=’隔离级别名称;’

设置数据库的隔离级别一定要在开启事务之前,还有隔离级别的设置只对当前连接有效,对于MySQ,一个命令窗口就相当于一个链接,当前串口设置的隔离级别只对当前窗口中的事务有效

你可能感兴趣的:(python+,WEB开发,python,阶段性自我总结)