如果不考虑隔离性,引发一些安全问题

隔离性:一个事务的执行,不应该受到其他事务的干扰。

如果不考虑隔离性(一个事务执行受到其他的事务的干扰),引发一些安全问题,主要体现在读取数据上:

  1. 脏读:一个事务读到了另一个事务未提交的数据,导致查询结果不一致
  2. 不可重复读:一个事务读到了另一个事务已经提交的update的数据,导致多次查询结果不一致。
  3. 虚读/幻读:一个事务读到了另一个事务已经提交的insert的数据,导致多次查询结果不一致。

解决这些安全性问题:

设置事务的隔离级别:

  1. read uncommitted :脏读,不可重复读,虚读都有可能发生
  2. read committed :避免脏读。但是不可重复读和虚读是有可能发生
  3. repeatable read :避免脏读和不可重复读,但是虚读有可能发生。
  4. serializable :避免脏读,不可重复读,虚读。