400 028 6601

建站动态

根据您的个性需求进行定制 先人一步 抢占小程序红利时代

Mysql事务特性、隔离特性的实现方法-创新互联

一、 关系型数据库的ACID特性
  1. 原子性(Atomicity):事务是最小的执行单位,不允许分割。原子性确保要么执行完整的动作,要么就什么都不做。
  2. 一致性(Consistency):执行事务前后数据应该保持一致,例如转账业务中,无论事务是否成功,双方总额应当不变。
  3. 隔离性(Isolation):并发访问数据库时,一个用户的事务不被其他事务所干扰,且各并发事务之间数据库是独立的。
  4. 持久性(Durability):一个事务被提交之后,它对数据库中数据的改变是持久的,即使数据库发生故障也不应该对其有影响。
二、 并发事务带来的问题
  1. 脏读(Dirty read)
    一个事务执行修改数据但是在提交之前进行数据回滚(也就是什么都没改),而另外一个事务在数据回滚之前读取了这个数据,即读到了第一步修改过的数据,这个数据即为脏数据。
  2. 丢失修改(Lost to modify)
    一个事务对某一数据进行修改后,另一个事务也进行了同样的修改,这样第一个事务内的修改结果就丢失了,此为丢失修改。
  3. 不可重复读(Unrepeatable read)
    指在一个事务内多次读同一数据。事务A两次读取同一数据之间事务B对数据进行修改,则事务A两次读取的值不同。
  4. 幻读(Phantom read)
    一个事务读取了几行数据,另一个事务插入了几行数据,第一个事务再次查询时就会发现一些原本不存在的记录,此为幻读。
三、SQL标准定义的事务隔离级别
  1. 读取未提交(Read-Uncommitted):最低的隔离级别,允许读取尚未提交的数据变更,可能导致脏读、幻读或不可重复读。
  2. 读取已提交(Read-Commited):允许读取并发事务已经提交的数据,可以阻止脏读,但不可避免幻读和不可重复读。
  3. 可重复读(Repeatable-Read):对同一字段的多次读取结果一致,除非数据是被本身事务自己所修改,可以阻止脏读和不可重复读,幻读仍有可能。
  4. 可串行化(Serializable):最高的隔离级别,完全服从ACID隔离级别。所有的事务依次逐个执行,事务之间完全不会产生干扰。
四、 MySQL隔离级别的实现方法

MySQL的隔离级别基于锁和MVCC机制(多版本并发控制)共同实现。

让客户满意是我们工作的目标,不断超越客户的期望值来自于我们对这个行业的热爱。我们立志把好的技术通过有效、简单的方式提供给客户,将通过不懈努力成为客户在信息化领域值得信任、有价值的长期合作伙伴,公司提供的服务项目有:主机域名、虚拟空间、营销软件、网站建设、兴山网站维护、网站推广。4.1 MVCC技术(包含版本链、undo日志和Read View)

对该条记录每次进行更新后,都会将旧值放到一条undo日志中,视为该记录的一个旧版本,所有的版本形成一个链表(版本链),版本链的头节点就是当前记录最新的值,另外,每个版本中还包含生成该版本时对应的事务id。

4.2 RU(脏读、不可重复读、幻读都无法避免)4.3 RC(不可重复读和幻读无法避免)和RR(无法避免幻读)4.4 串行化:读和写都加锁。

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧


网页标题:Mysql事务特性、隔离特性的实现方法-创新互联
浏览地址:http://www.bluegullmedia.com/article/ddepdc.html

其他资讯

让你的专属顾问为你服务

0.0529s