MySQL事务与面试重点整理
需积分: 9 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(支持向量机)的核方法和最大边缘算法,以及各种机器学习算法的总结。这些链接提供了关于这些主题的详细讨论和学习资源,对于提升面试准备非常有帮助。
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 上传
冀北老许
- 粉丝: 18
- 资源: 2万+
最新资源
- Angular程序高效加载与展示海量Excel数据技巧
- Argos客户端开发流程及Vue配置指南
- 基于源码的PHP Webshell审查工具介绍
- Mina任务部署Rpush教程与实践指南
- 密歇根大学主题新标签页壁纸与多功能扩展
- Golang编程入门:基础代码学习教程
- Aplysia吸引子分析MATLAB代码套件解读
- 程序性竞争问题解决实践指南
- lyra: Rust语言实现的特征提取POC功能
- Chrome扩展:NBA全明星新标签壁纸
- 探索通用Lisp用户空间文件系统clufs_0.7
- dheap: Haxe实现的高效D-ary堆算法
- 利用BladeRF实现简易VNA频率响应分析工具
- 深度解析Amazon SQS在C#中的应用实践
- 正义联盟计划管理系统:udemy-heroes-demo-09
- JavaScript语法jsonpointer替代实现介绍