事务隔离规定并发事务对彼此修改的可见性及允许出现的执行结果,用于平衡一致性需求与并发代价。
常见现象
脏读是读取未提交修改;不可重复读是再次读取同一记录时发现已提交变化;幻读涉及重复条件查询得到不同的匹配记录集合。仅排除这三类现象仍不一定达到可串行化。
产品差异
标准中的读未提交、读已提交、可重复读和可串行化是语义分类,实现不能只看名称。例如 PostgreSQL 以读已提交处理读未提交请求,其可重复读不允许幻读,但仍可能有序列化异常。
选择级别时应说明业务不变量、读取与写入方式。可串行化也可能通过中止事务解决冲突,应用需要完整事务重试,而非只重试最后一条语句。