【数媒在线课堂】事务执行过程中宕机的应对处理方式
2025-03-04
数据库插入百万级数据的时候,还没操作完,但是把服务器重启了,数据库会继续执行吗?还是直接回滚了?
不会自动继续执行,不会自动直接回滚,但可以依据事务日志进行回滚或者进行执行。
事务开启时,事务中的操作,都会先写入存储引擎的日志缓冲中,在事务提交之前,这些缓冲的日志都需要提前刷新到磁盘上持久化 ,两种类型:
在事务执行的过程中,除了记录 redo log,还会记录一定量的 undo log。- redo log :按语句的执行顺序,依次交替的记录在一起
- undo log:主要为事务的回滚服务。undo log 记录了数据在每个操作前的状态,如果事务执行过程中需要回滚,就可以根据 undo log 进行回滚操作。
Java 客户端中的一个 Connection 是不是在 MySQL 中就对应一个线程来处理这个链接呢?
Java 客户端中的一个 Connection 不是在 MySQL 中就对应一个线程来处理这个链接,而是:
️监听 socket 的主线程 + 线程池里面固定数目的工作线程来处理的高性能服务器端端开发底层主要靠 I/O 复用来处理,这种模式:
️单线程 + 事件处理机制在 MySQL 有一个主线程,这是单线程(与 Java 中处处强调多线程的思想有点不同哦),它不断的循环查看是否有 socket 是否有读写事件,如果有读写事件,再从线程池里面找个工作线程处理这个 socket 的读写事件,完事之后工作线程会回到线程池。