MySQL事务与面试重点整理
需积分: 9 54 浏览量
更新于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(支持向量机)的核方法和最大边缘算法,以及各种机器学习算法的总结。这些链接提供了关于这些主题的详细讨论和学习资源,对于提升面试准备非常有帮助。
2022-08-08 上传
2022-01-16 上传
2023-02-06 上传
2018-06-23 上传
2020-09-17 上传
2019-04-10 上传
2024-04-30 上传
2019-07-12 上传
2023-10-29 上传
冀北老许
- 粉丝: 16
- 资源: 2万+
最新资源
- 掌握压缩文件管理:2工作.zip文件使用指南
- 易语言动态版置入代码技术解析
- C语言编程实现电脑系统测试工具开发
- Wireshark 64位:全面网络协议分析器,支持Unix和Windows
- QtSingleApplication: 确保单一实例运行的高效库
- 深入了解Go语言的解析器组合器PARC
- Apycula包安装与使用指南
- AkerAutoSetup安装包使用指南
- Arduino Due实现VR耳机的设计与编程
- DependencySwizzler: Xamarin iOS 库实现故事板 UIViewControllers 依赖注入
- Apycula包发布说明与下载指南
- 创建可拖动交互式图表界面的ampersand-touch-charts
- CMake项目入门:创建简单的C++项目
- AksharaJaana-*.*.*.*安装包说明与下载
- Arduino天气时钟项目:源代码及DHT22库文件解析
- MediaPlayer_server:控制媒体播放器的高级服务器