西宁企业网站建设开发,南阳网站建设,百度域名,精品外贸网站 dedecms文章目录 事务定义事务特性事务隔离级别READ UNCOMMITTEDREPEATABLE READREAD COMMITTEDSERIALIZABLE 事务存在的问题脏读#xff08;Dirty Read#xff09;不可重复读#xff08;Non-repeatable Read#xff09;幻读#xff08;Phantom Read#xff09; 事务定义
数据库… 文章目录 事务定义事务特性事务隔离级别READ UNCOMMITTEDREPEATABLE READREAD COMMITTEDSERIALIZABLE 事务存在的问题脏读Dirty Read不可重复读Non-repeatable Read幻读Phantom Read 事务定义
数据库中的事务是指对数据库执行一批操作在同一个事务当中这些操作最终要么全部执行成功要么全部失败不会存在部分成功的情况。
事务是一个原子操作。是一个最小执行单元。可以甶一个或多个SQL语句组成在同一个事务当中所有的SQL语句都成功执行时整 个事务成功有一个SQL语句执行失败整个事务都执行失败。
事务特性
一般来说事务是必须满足4个条件ACID原子性Atomicity或称不可分割性、一致性Consistency、隔离性Isolation又称独立性、持久性Durability。 原子性一个事务transaction中的所有操作要么全部完成要么全部不完成不会结束在中间某个环节。事务在执行过程中发生错误会被回滚Rollback到事务开始前的状态就像这个事务从来没有执行过一样。 一致性在事务开始之前和事务结束以后数据库的完整性没有被破坏。这表示写入的资料必须完全符合所有的预设规则这包含资料的精确度、串联性以及后续数据库可以自发性地完成预定的工作。 隔离性数据库允许多个并发事务同时对其数据进行读写和修改的能力隔离性可以防止多个事务并发执行时由于交叉执行而导致数据的不一致。 事务隔离分为不同级别包括读未提交Read uncommitted、读提交read committed、可重复读repeatable read和串行化Serializable。 持久性事务处理结束后对数据的修改就是永久的即便系统故障也不会丢失。
事务隔离级别
事务隔离是数据库处理的基础之一。隔离级别用于在多个事务同时进行更改和执行查询时调整性能与可靠性、一致性和结果可再现性之间的平衡。
InnoDB提供了四种事务隔离级别READ UNCOMMITTED, READ COMMITTED, REPEATABLE READ 和 SERIALIZABLE。
InnoDB默认的隔离级别是 REPEATABLE READ。
READ UNCOMMITTED
最低的隔离级别允许一个事务读取另一个事务尚未提交的数据。这种隔离级别可能会导致脏读Dirty Read问题即读取到了其他事务中未提交的数据。
REPEATABLE READ
InnoDB默认的隔离级别。保证在同一个事务中多次读取同一行数据时读取结果保持一致。其他事务对数据的修改在当前事务提交之前不可见。这种隔离级别解决了不可重复读问题但可能会导致幻读Phantom Read问题即在同一个事务中对同一查询条件的查询结果可能不一致。
READ COMMITTED
允许一个事务只读取已经提交的数据。这种隔离级别解决了脏读问题但可能会导致不可重复读Non-repeatable Read问题即在同一个事务中对同一行数据的读取结果可能不一致。
SERIALIZABLE
最高的隔离级别通过强制事务串行执行完全避免了并发问题。事务串行执行可以解决幻读问题但也可能导致较低的并发性能。
事务存在的问题
在MySQL中四种隔离级别分别有可能产生如图所示问题
脏读Dirty Read
一个事务读取了另一个事务未提交的数据。当一个事务进行修改操作时另一个事务可能读取到未提交的数据导致数据不一致。
不可重复读Non-repeatable Read
一个事务在同一个事务内多次读取同一数据时由于其他事务对数据进行了修改导致读取结果不一致。这可能会导致事务处理过程中数据的不稳定性。
幻读Phantom Read
一个事务在同一个事务内多次查询时由于其他事务对数据进行了插入或删除操作导致查询结果不一致。这可能会导致事务中的数据集合发生变化。