事务ype htmlhtml lang=zh data-hairline=t爱赢体育rue class=itcauecng data-theme=ligheadme charSet=utf-8
爱赢体育事宜:一个最幼的不行再分的事情单位;平时一个事宜对应一个完全的营业(比如银行账户转账营业,该营业即是一个最幼的事情单位)
一个完全的营业须要批量的DML(insert、update、delete)语句协同纠合告竣
事宜只和DML语句相合,或者说DML语句才有事宜。这个和营业逻辑相合,营业逻辑差别,事务DML语句的个数差别
一个事宜必需被视为一个不行割裂的最幼单位, 全体事宜中的一齐操作要么统共提交胜利,
undo log是InnoDB存储引擎特有的。全体的告竣式样是:将一齐对数据的批改(增、事务删、改)都写入日记(undo log)。若是一个事宜中的一片面操作依然胜利,但另一片面操作,因为断电/编造瓦解/其它的软硬件纰谬而无法胜利践诺,则通过回溯日记,将依然践诺胜利的操作取消,从而抵达统共操作衰弱的方针。
undo log是逻辑日记,可能体会为:纪录和事宜操作相反的SQL语句,事宜践诺insert语句,undo log就纪录delete语句。它以追加写的式样纪录日记,不会遮盖之前的日记。事务除此除表undo log还用来告竣数据库多版本并发担任(Multiversion Concurrency Control,简称MVCC)
划一性是指事宜将数据库从一种划一性转换到别的一种划一性形态, 正在事宜发端之前和事宜
比如转账:A给B转账,A减去500,B增补500,节减和增补相加该当是0
一朝事宜提交, 则其所做的批改就会恒久生存到数据库中。 此时假使编造瓦解, 依然提交的
MySQL事宜的历久性是通过redo log来告竣的。redo log也是InnoDB存储引擎特有的。全体告竣式样是:当爆发数据批改(增、删、改)的光阴,InnoDB引擎会先将纪录写到redo log中,并更新内存,此时更新就算告竣了。同时InnoDB引擎会正在适当的机遇将纪录刷到磁盘中。
redo log是物理日记,纪录的是正在某个数据页做了什么批改,而不是SQL语句的体例。它有固定巨细,是轮回写的式样纪录日记,空间用完后会遮盖之前的日记。
一个事宜的践诺不行被其他事宜滋扰。 即一个事宜内部的操作及应用的数据对并发的其他事
:事宜A读取了事宜B更新的数据,然后B回滚操作,那么A读取到的数据是脏数据
:事宜 A 多次读取统一数据,事宜 B 正在事宜A多次读取的经过中,对数据作了更新并提交,导致事宜A多次读取统一数据时,结果 不划一。
:编造执掌员A将数据库中一齐学生的收效从全体分数改为ABCDE品级,然则编造执掌员B就正在这个光阴插入了一条全体分数的纪录,当编造执掌员A改终了后创造尚有一条纪录没有改正来,就彷佛爆发了幻觉相同,这就叫幻读。
不行反复读的和幻读很容易浑浊,不行反复读重视于批改,幻读重视于新增或删除。处置不行反复读的题目只需锁住满意前提的行,处置幻读须要锁表
事宜A读取了事宜B更新的数据,爱赢体育事务然后B回滚操作,那么A读取到的数据是脏数据
正在一个事宜未提交光阴,别的一个事宜不行对这个表的数据批改,事务事务包含新增、事务批改、删除、盘查
结果显示,autocommit 的值是 ON,显露编造开启主动提交形式。
正在 MySQL 中,可能应用 SET autocommit 语句设备事宜的主动提交形式,语法格局如下: