资讯专栏INFORMATION COLUMN

MySQL——事务的基本操作

TesterHome / 1083人阅读

摘要:在数据库中,事务是指一组逻辑操作单元,使数据从一种状态变换到另一种状态。数据不被破坏隔离性一个事务的执行不能被其他事务干扰,一个事务内部的操作及使用的数据对并发的事务也是隔离的。

在数据库中,事务是指一组逻辑操作单元,使数据从一种状态变换到另一种状态。

为确保数据库中数据的一致性,事务的操作应该是流畅完成的,中间不能失败,一旦有操作失败,那么回滚到开始事务的状态。

事务的特点(ACID)

原子性:指事务是一个不可分割的工作单位,事务中的操作要么都发生,要么都不发生

一致性:事务必须使数据库从一个一致性状态变换到另一个一致性状态。(数据不被破坏)

隔离性:一个事务的执行不能被其他事务干扰,一个事务内部的操作及使用的数据对并发的事务也是隔离的。每一个事务都存在一个事务空间,彼此不干扰

持久性:一个事务一旦被提交,它对数据库的改变就是永久性的,接下来的其他操作和数据库故障不应该对其有任何影响

事务控制的语言

[ begin ]:开启一个事务,开启一个新的事务空间

[ commit ]:提交事务

[ rollback ]:回滚事务


每次begin开启一个事务后,选择commit和rollback结束本次事务。要重新begin开启一个新的事务。


事务的并发问题

存在五种问题:脏读、不可重复读、幻读、第一类丢失更新、第二类丢失更新
隔离级别:不同的隔离级别可以处理不同的并发问题
默认的隔离级别为:repreatable read
MySQL默认情况下不会出现幻读和第一类丢失更新

第一类丢失更新(回滚丢失)

第二类丢失更新(覆盖丢失)

不可重复读

幻读

脏读


MySQL使用锁机制来解决第二类丢失更新
悲观锁:

select ......for update;

乐观锁:使用版本控制

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/49081.html

相关文章

  • MySQL 数据库事务

    摘要:简介事务是一组原子性的查询或者说是一个独立的工作单元在事务内的语句要么全部执行成功要么全部执行失败事务的性质数据库事务拥有以下四个特性即性质原子性事务作为一个整体被执行包含在其中的对数据库的操作要么全部执行成功要么全部失败回滚对于一个事务来 简介 事务是一组原子性的 SQL 查询, 或者说是一个独立的工作单元. 在事务内的语句, 要么全部执行成功, 要么全部执行失败. 事务的 ACID...

    remcarpediem 评论0 收藏0
  • mysql事务隔离一点理解

    摘要:二事务隔离读未提交读已提交可重复读串行化读未提交隔离级别最低的一种事务级别,会发生脏读,不可重复读,幻读读已提交读到的都是别人提交后的值。 前言 先介绍一下事务的概念事务(Transaction)就是数据库管理的一个逻辑单位,由一个有效的数据库操作序列构成。 事物ACID特性 原子性(Atomicity):事务作为一个整体被执行,要么全部成功执行,要么全部失败 一致性(Consist...

    rubyshen 评论0 收藏0
  • mysql事务以及隔离级别

    摘要:事务以及隔离级别简介事务主要用于处理操作量大,复杂度高的数据。事务隔离分为不同级别,包括读未提交读提交可重复读和串行化。对于多数应用程序,可以优先考虑把数据库系统的隔离级别设为,它能够避免脏读取,而且具有较好的并发性能。 mysql事务以及隔离级别 1. 简介 MySQL 事务主要用于处理操作量大,复杂度高的数据。比如说,在人员管理系统中,你删除一个人员,你即需要删除人员的基本资料,也...

    thursday 评论0 收藏0
  • MySQL 表锁和行锁机制

    摘要:对于和语句,会自动给涉及数据集加排他锁对于普通语句,不会加任何锁当然我们也可以显示的加锁共享锁排他锁和的最大不同点有两个一,支持事务二,默认采用行级锁。排他锁排他锁,也称写锁,独占锁,当前写操作没有完成前,它会阻断其他写锁和读锁。 MySQL 表锁和行锁机制 行锁变表锁,是福还是坑?如果你不清楚MySQL加锁的原理,你会被它整的很惨!不知坑在何方?没事,我来给你们标记几个坑。遇到了可别...

    luckyyulin 评论0 收藏0
  • 高性能MySQL读书笔记-事务

    摘要:高性能第版美施瓦茨等著宁海元等译北京电子工业出版社第页。表示原子性一致性隔离性和持久性。一个运行良好的事务处理系统,必须具备这些标准特征。持久性一旦事务提交,则其所做的修改就会永久保存到数据库中。事务可以读取未提交的数据,这也被称为脏读。 一、MySQL逻辑架构 为了充分发挥MySQL的性能并顺利地使用,就必须理解其设计。 1. 逻辑架构 最上层的服务并不是MySQL所独有的,大多数基...

    lifefriend_007 评论0 收藏0
  • MySQL 原生SQL、JDBC、Spring事务使用

    摘要:也不需要增加对事务设计学习的成本。原生事务开启方式注意本身是不支持嵌套事务的。在中开启一个事务后,如果在为提交前又开启了一个事务,则会自动提交当前事务。所以这种事务的有效范围也只限于当前请求中的一个。 MySQL事务通过简单的Sql语句就可以开启提交或回滚事务,实际使用中特别是Spring对事务的封装,可以让我们通过声明或注解的方式就可以控制事务,还可以支持事务的嵌套、传播。为了理解这...

    Euphoria 评论0 收藏0

发表评论

0条评论

TesterHome

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<