MySQL事物的理解
mysql怎么保证隔离性的:
利用锁和mvcc机制,mvcc既多版本并发控制,如果一个事物读取的行正在做 delete/update操作,读取操作不会等行上的锁释放而是读取该行的快照版本。
mysql怎么保证持久性的:
利用Inoodb的redo log当数据在修改的时候不仅在内存中操作还会在redolog中记录这 次操作,当事物提交的时候会将redolog日志进行刷盘当数据库宕机重启的时候会将 redolog中的内容恢复到数据库中再根据undolog和binlog的内容决定回滚还是提交。
mysql怎么保证原子性的:
利用Inoodb的undo log(回滚日志)是实现原子性的关键,当事物回滚时能够撤销所有已成功执行的sql语句,它需要记录你要回滚的相应日志信息undolog记录了这些回滚需要的信息当事物执行失败或调用了rollback就利用undolog中的日志信息将数据修改到 回滚之前的样子。
mysql怎么保证一致性的:
数据库层面:数据库通过AID来保证了C,数据库必须要实现AID三大特性才能保证C。应用层面:通过代码判断数据库数据是否有效然后决定回滚还是提交事物操作
事物的四大特性在mysql中的实现原理:
原子性:一个事物是一个不可分割的工作单位其中操作要么都做要么都不 做如果无法保证原子性会出现数据不一致的情形。 隔离性:多个事物并发执行的时候事物内部的操作和其他事物是隔离的如 果无法保证依然会出现数据不一致的情形。 持久性:事物一旦成功提交数据的改变是永久性的接下来的其他操作或故 障对其不能有影响。如果无法保证在mysql中为了结决cpu和磁盘速度不 一致问题mysql是将磁盘中的数据加载到内存中进行操作然后回写磁盘假 如此时宕机会照成数据丢失。 一致性:事物执行前后数据处于合法状态这 个合法状态是自己决定的,如果无法保证将会导致数操作前后不一致。

浙公网安备 33010602011771号