重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
MySQL事务基本上都有四大特点:1.原子性:每个事务都是一个整体,不可分割。2.一致性:一个事务要么全部提交,要么全部回滚。3.隔离性:事务直接不能相互影响。4.永久性:事务一旦提交,数据永久存在与磁盘中。
十载的乐安网站建设经验,针对设计、前端、开发、售后、文案、推广等六对一服务,响应快,48小时及时工作处理。成都全网营销的优势是能够根据用户设备显示端的尺寸不同,自动调整乐安建站的显示方式,使网站能够适用不同显示终端,在浏览器中调整网站的宽度,无论在任何一种浏览器上浏览网站,都能展现优雅布局与设计,从而大程度地提升浏览体验。创新互联从事“乐安网站设计”,“乐安网站推广”以来,每个客户项目都认真落实执行。
事务是数据库操作最小单元,把多件事当一件事来处理,是一组不可在分割的操作集合。作为单个逻辑工作单元执行一系列操作,这些操作作为一个整体一起向系统提交,要么都执行,要么都不执行。
特性ACID(原子性、一致性、隔离性、持久性)
原子性:原子性是指事务包含的所有操作要么全部成功,要么全部失败回滚,,因此事务操作如果成功就必须要完全应用到数据库,如果操作失败则不能对数据库有一点影响。
一致性:一致性是指事务必须使数据库从一个一致性状态转换到另一个一致性状态,就是说事务执行前后都必须处在一致性状态。
隔离性:隔离性使当多个用户访问数据库时,比如操作同一张表,数据库开启的每一个事务,不能被其它事务干扰,多个并发事务之间相互隔离。
持久性:持久性是指一个事务一旦提交,对数据库中数据的改变是永久的,即使是数据库系统遇到故障也不会丢失提交的事务操作。
执行一条语句,要么全部成功、否则全部失败,不会产生部分成功的情况,主要是指修改、删除语句,例如DELETE FROM TEST,当删除一部分的时候遇到问题会取消操作,一条也不删除。
原子性:一个事务内的所有SQL操作是一个整体。都执行成功才算整个事务成功。如果某个失败,则必须要会退到事务执行之前的状态,执行成功的SQL需要被撤销。
innodb通过undo log和redo log来实现。
事务中,每当执行一条SQL语句对数据产生了影响,就会记录下来与之相反的操作到undo log(撤销日志)中,例如,更新会记录之前的状态,删除会形成insert,添加会形成delete,一旦事务被回滚,则执行undo log中记录的操作,来完成恢复到之前的状态。这里是个 逻辑恢复哦!同时,每当执行一条事务中的SQL,会将操作记录到redo log中,此时事务一旦被提交,就将该redolog中的操作,持久化到磁盘上,数据就持久的记录下来了(ACID的D)。
PS:还有,undolog才是原子性的关键。提供redolog,应该主要目的是提升磁盘的IO开销吧,如果直接写入磁盘,IO开销,会很大。如果先将操作记录到redolog中,可以顺序的记录,批量的记录,再一起同步到磁盘上,速度会比直接写磁盘快些。 mysql在生成redolog时,会使用 innodb log buffer,先缓冲到内存中,再同步到redolog上,速度会更快。
另外关于,一致性,应该是个整体概念,保证所有的mysql对象(数据,索引,约束,日志,用户)在事务执行前后都具有完整的特性,应该是mysql所有的功能都为此服务吧!
原子性, 一个事务 要么完全提交 要么完全回滚,不会介于2者之间。 一致性,一个查询发起后,不管数据发生了多少变化 多少事务,查询结果应当为发起查询时间一致的数据