MySQL事务与面试重点整理

需积分: 9 7 下载量 25 浏览量 更新于2024-08-16 收藏 10.22MB PPT 举报
"十一MYSQL事务-bat面试总结" 在MySQL数据库中,事务是用于确保数据一致性的重要机制,特别是在并发操作中。MyISAM存储引擎不支持事务,而InnoDB存储引擎则提供了对事务的支持,包括redo和undo日志。redo日志记录了事务成功完成后的状态,而undo日志则记录了事务开始前的状态,以便在回滚时恢复。 事务控制语句主要包括以下几个: 1. `START TRANSACTION` 或 `BEGIN`:标志着一个事务的开始。 2. `COMMIT`:提交事务,将所有在事务中的更改永久保存到数据库中。 3. `ROLLBACK`:回滚事务,撤销在事务中所做的所有更改。 4. `SET AUTOCOMMIT={0|1}`:设置自动提交模式。如果设为0,则关闭自动提交;设为1,则开启自动提交。默认情况下,MySQL是开启自动提交的。 事务的隔离级别是决定并发事务如何相互影响的关键因素,MySQL提供了以下四种隔离级别: 1. **READ UNCOMMITTED**(脏读):允许读取未提交的数据,可能导致脏数据的读取。 2. **READ COMMITTED**(已提交读):只允许读取已提交的数据,但同一个事务中多次执行相同的查询可能会得到不同的结果,即不可重复读。 3. **REPEATABLE READ**(可重复读):MySQL的默认隔离级别,它保证在一个事务中多次执行相同的查询会得到相同的结果,但可能会出现幻读现象。 4. **SERIALIZABLE**(串行化):最高级别的隔离,完全避免了脏读、不可重复读和幻读,但代价是性能降低,因为所有事务都按照串行的方式执行。 锁是实现事务隔离的重要手段,MySQL中的锁主要有以下几种: 1. **共享锁(S锁)**:也称为读锁,允许多个事务同时读取同一资源,但不允许写入。 2. **排他锁(X锁)**:也称为写锁,允许一个事务独占资源进行写操作,阻止其他事务读取或写入。 3. **意向锁(IX, IS)**:在访问特定行之前,先锁定整个表,表明事务有意向对表进行读写操作。意向锁的存在使得行级锁的实现更为高效。 在没有索引的情况下,锁定整个表直到事务结束,这意味着在事务开始时就会锁定所有行,直到事务结束或显式释放。如果有索引,锁定的范围则缩小到只锁定相关索引对应的行。 隐式提交是指在某些操作(如DDL语句)后,MySQL会自动提交当前事务,即使用户没有明确调用`COMMIT`。因此,在编写SQL时需要注意这一点,以避免意外提交。 在面试中,除了掌握以上MySQL事务的知识,还需要了解其他相关领域,例如数据结构、SVM(支持向量机)的核方法和最大边缘算法,以及各种机器学习算法的总结。这些链接提供了关于这些主题的详细讨论和学习资源,对于提升面试准备非常有帮助。