事务SQL语句是我们给数据库发送了指令让数据库帮我们做事情可以理解为是让数据库做的事情。事务的本质可以理解为多线程并发操作同一张表格可能带来的安全问题。1、开始事务begin / start transaction2、执行操作select update delete insert ...3、事务处理commit、rollback事务的四大特性Atomicity(原子性)一个事务中的所有操作是一个整体不可再分的事务中的所有操作要么都成功要么都失败。Consistency(一致性执行事务前后数据保持一致多个事务对同一个数据读取的结果是相同的。一个用户操作了数据提交以后另一个用户看到的数据与之前用户看到的效果是一致。Isolation(隔离性)并发访问数据库时一个用户的事务不被其他事务所干扰各并发事务之间数据库是独立的。Durability(持久性)事务一旦被提交它对数据库的改变是永久性的即使后续系统发生故障已提交的数据也不会丢失。隔离级别READ-UNCOMMITTED(读取未提交) 最低的隔离级别允许读取尚未提交的数据变更可能会导致脏读、幻读或不可重复读。READ-COMMITTED(读取已提交) 允许读取并发事务已经提交的数据可以阻止脏读但是幻读或不可重复读仍有可能发生。REPEATABLE-READ(可重复读) 对同一字段的多次读取结果都是一致的除非数据是被本身事务自己所修改可以阻止脏读和不可重复读但幻读仍有可能发生。SERIALIZABLE(可串行化) 最高的隔离级别完全服从ACID的隔离级别。所有的事务依次逐个执行这样事务之间就完全不可能产生干扰也就是说该级别可以防止脏读、不可重复读以及幻读。隔离级别简称脏读不可重复读幻读READ-UNCOMMITTEDRU√√√READ-COMMITTEDRC×√√REPEATABLE-READRR××√SERIALIZABLES×××MySQL数据库提供默认隔离级别Repeatable Read可重复读Oracle数据库提供默认隔离级别 Read Committed修改数据库中的隔离级别set session transaction isolation level xxx查看数据库中的隔离级别SELECT transaction_isolation;(MySQL 8.0) 或SELECT tx_isolation;(MySQL 5.7及之前)脏读Dirty Read事务 A 读取到事务 B 已修改但未提交的数据事务 B 回滚后事务 A 读到的数据变为无效。不可重复读(Non-repeatable read) : 在一个事务的两次查询之中数据不一致两次查询过程中间插入了一个事务更新删除了原有的数据。幻读(Phantom Read):在一个事务的两次查询中数据笔数不一致中间有事务插入了几条数据。总结事务是数据库管理并发操作、保证数据一致性的核心机制。在开发中应根据业务对数据一致性的要求与系统性能的承受能力谨慎选择最低且足够的隔离级别并善用短事务来减少锁竞争和提升并发性能。
SQL内功笔记 · 第8篇:事务的四大特性与隔离级别
发布时间:2026/6/2 9:05:07
事务SQL语句是我们给数据库发送了指令让数据库帮我们做事情可以理解为是让数据库做的事情。事务的本质可以理解为多线程并发操作同一张表格可能带来的安全问题。1、开始事务begin / start transaction2、执行操作select update delete insert ...3、事务处理commit、rollback事务的四大特性Atomicity(原子性)一个事务中的所有操作是一个整体不可再分的事务中的所有操作要么都成功要么都失败。Consistency(一致性执行事务前后数据保持一致多个事务对同一个数据读取的结果是相同的。一个用户操作了数据提交以后另一个用户看到的数据与之前用户看到的效果是一致。Isolation(隔离性)并发访问数据库时一个用户的事务不被其他事务所干扰各并发事务之间数据库是独立的。Durability(持久性)事务一旦被提交它对数据库的改变是永久性的即使后续系统发生故障已提交的数据也不会丢失。隔离级别READ-UNCOMMITTED(读取未提交) 最低的隔离级别允许读取尚未提交的数据变更可能会导致脏读、幻读或不可重复读。READ-COMMITTED(读取已提交) 允许读取并发事务已经提交的数据可以阻止脏读但是幻读或不可重复读仍有可能发生。REPEATABLE-READ(可重复读) 对同一字段的多次读取结果都是一致的除非数据是被本身事务自己所修改可以阻止脏读和不可重复读但幻读仍有可能发生。SERIALIZABLE(可串行化) 最高的隔离级别完全服从ACID的隔离级别。所有的事务依次逐个执行这样事务之间就完全不可能产生干扰也就是说该级别可以防止脏读、不可重复读以及幻读。隔离级别简称脏读不可重复读幻读READ-UNCOMMITTEDRU√√√READ-COMMITTEDRC×√√REPEATABLE-READRR××√SERIALIZABLES×××MySQL数据库提供默认隔离级别Repeatable Read可重复读Oracle数据库提供默认隔离级别 Read Committed修改数据库中的隔离级别set session transaction isolation level xxx查看数据库中的隔离级别SELECT transaction_isolation;(MySQL 8.0) 或SELECT tx_isolation;(MySQL 5.7及之前)脏读Dirty Read事务 A 读取到事务 B 已修改但未提交的数据事务 B 回滚后事务 A 读到的数据变为无效。不可重复读(Non-repeatable read) : 在一个事务的两次查询之中数据不一致两次查询过程中间插入了一个事务更新删除了原有的数据。幻读(Phantom Read):在一个事务的两次查询中数据笔数不一致中间有事务插入了几条数据。总结事务是数据库管理并发操作、保证数据一致性的核心机制。在开发中应根据业务对数据一致性的要求与系统性能的承受能力谨慎选择最低且足够的隔离级别并善用短事务来减少锁竞争和提升并发性能。