0%

数据库

数据库好难

今天看了一回儿数据库的丢失更新,顿时感觉数据库真的满抽象的,以前以为数据库就是增删改查,今天算是见识了,头都看大了


在高并发情景下经常发生数据库丢失更新的情况,事务之间什么时候该同步,什么时候不该同步,多个事务之间的权限管理真的很复杂。一般采用隔离级别来减少出现丢失更新的可能性,至于乐观锁和悲观锁,这个要等我看完了再说。
SQL标准定义了隔离级别有以下四层:

  • 脏读:最低的隔离级别,允许一个事务去读取另一个事务中未提交的数据。
  • 读/写操作:一个事务只能读取另一个事务已经提交的数据
  • 可重复读:针对数据库同一条记录而言,可重复读会使同一条数据库记录的读/写按照一个序列化进行操作,不会产生交叉情况,从而保证同一条数据的一致性
  • 序列化:让SQL按照顺序读/写的方式,能消除数据库事务之间并发产生数据不一致的问题。
***各类隔离级别和产生的现象***

脏读(产生影响):脏读,不可重读,幻读
读/写提交(产生影响):脏读,不可重读,幻读
可重复读(产生影响):幻读
序列化(产生影响):(没有)