数据库的可串行化保证了那些可串行性的事务进行极小的并发度。同时SQL标准也规定对于不要求精确结果的长事务可以以不可串行化的方式执行。
数据库的隔离级别有4个,由低到高依次为Read uncommitted、Read committed、Repeatable read、Serializable,这四个级别可以逐个解决脏写、脏读、不可重复读、幻读这几类问题。
√: 可能出现 ×: 不会出现
脏读 | 不可重复读 | 幻读 | |
Read uncommitted | √ | √ | √ |
Read committed | × | √ | √ |
Repeatable read | × | × | √ |
Serializable | × | × | × |
数据库以不可串行化的方式执行可能出现的问题有4个,分别为脏写、脏读、不可重复写、幻象读这4个问题。
脏写(更新异常):A事务写了一个数据项且尚未提交,B事务就更改该数据项提交,造成A事务的修改丢失。
对于SQl标准而言,所有的隔离级别都不允许发生脏写,即:A事务对数据项进行了更新操作,不允许任何事务在A