网站开发的接口文档,品牌广告策划方案,宁波seo怎么做推广渠道,wordpress支持中文什么是事务隔离#xff1f;
为了确保在并发事务执行时#xff0c;各个事务之间能够相互独立、互不干扰地运行#xff0c;从而保证数据的一致性。
事务的隔离级别
MySQL事务隔离为了满足不同场景#xff0c;提供了4个事务隔离级别#xff08;严格来讲是InnoDB存储引擎支…什么是事务隔离
为了确保在并发事务执行时各个事务之间能够相互独立、互不干扰地运行从而保证数据的一致性。
事务的隔离级别
MySQL事务隔离为了满足不同场景提供了4个事务隔离级别严格来讲是InnoDB存储引擎支持的分别是 读未提交Read Uncommitted 读已提交Read Committed 可重复读Repeatable Read 串行化Serializable
读未提交
事务在各自的周期内可以读取到其他事务未提交的数据。
以下图为例事务2的两次查询结果分别为18和19即便事务1没有提交。 这种现象被称为“脏读”。
读已提交
事务在各自的周期内每次对同一个sql进行查询都是已经提交的数据。
以下图为例事务2的两次查询结果分别为18和19因为在此期间事务1对数据进行了更改。 但是这种现象被称为“不可重复读”因为违反了事务的隔离性原则在一个事务内数据应该是一致的
可重复读
每个事务在自己的事务周期内多次对同一个sql进行查询都是相同的数据。 以下图为例事务2的两次查询结果都一样即便在此期间事务1对数据进行了更改。 但是如果在“可重复读”级别下进行了当前读那么还是会出现像”读已提交“中出现的“不可重复读”的现象不过这里称之为”幻读“。
当前读就是读取行数据当前最新的状态这个过程中会对所有读、写的数据加上相应的读锁、写锁、范围锁目的是避免并发冲突。
串行化
可串行化很好理解并发事务的执行完全是串行依次执行不存在冲突导致的一致性问题。但是可想而知这种隔离级别的并发效率肯定极为低下。
总结
MySQL提供了多种事务隔离级别包括读未提交、读已提交、可重复读和串行化等。这些隔离级别在并发性能和数据一致性之间提供了不同的权衡可以根据具体的应用场景和需求来选择适合的隔离级别。