鱼台县建设局网站,表白视频制作软件app,如何解决旅游网站建设问题,网站做问卷调查的问题MySQL事务的作用呢#xff0c;就是要保证数据库的可靠性、一致性、并发处理。那实现事务需要三个技术#xff0c;分别是日志文件#xff0c;包括redo log 和 undo log、锁技术、MVCC。
那什么是redo log呢#xff0c;redo log是用来记录已提交事务的修改语句的#xff0c…MySQL事务的作用呢就是要保证数据库的可靠性、一致性、并发处理。那实现事务需要三个技术分别是日志文件包括redo log 和 undo log、锁技术、MVCC。
那什么是redo log呢redo log是用来记录已提交事务的修改语句的因为数据库为了保证效率每次修改操作并不会马上落盘而是会先存放到内存缓冲区中这样的话就有一个问题当服务器宕机的时候内存数据就没了这时候就用到了redo log它可以保障已提交事务的持久化特性。
那什么是undo log呢undo log是用来记录数据被修改前的信息当发生回滚时可以根据undo log回滚到没被修改之前的状态。
锁技术是指读写锁通过读写锁可以做到读读可以并行但是不能做到写读写写并行。
MVCC (MultiVersion Concurrency Control) 叫做多版本并发控制InnoDB的 MVCC 是通过在每行记录的后面保存两个隐藏的列来实现的这两个列一个保存了行的创建时间一个保存了行的过期时间当然存储的并不是实际的时间值而是系统版本号他的主要实现思想是通过数据多版本来做到读写分离。从而实现不加锁读进而做到读写并行.。
MVCC在mysql中的实现依赖的是undo log与read viewundo log 中记录的是某行数据的多个版本的数据。read view 用来判断当前版本数据的可见性。
事务有四个特性分别是 原子性(Atomicity) 一致性(Consistency) 隔离型(Isolation) 持久性(Durability)
那MySQL是怎么保证这4个特性的呢
原子性使用 undo log 从而达到回滚持久性使用 redo log从而达到故障后恢复隔离性使用锁以及MVCC,运用的优化思想有读写分离读读并行读写并行 事务的终极大 boss 一致性是通过原子性持久性隔离性来实现的通过回滚以及恢复和在并发环境下的隔离做到一致性。
原子性持久性隔离性的目的也是为了保障数据的一致性
总之ACID只是个概念事务最终目的是要保障数据的可靠性一致性。
参考
MySQL事务的底层实现原理_xlshi1996的博客-CSDN博客mysql事务底层实现原理 - 百度文库