MySQL面试必备:锁机制、表格类型与事务隔离级别解析
需积分: 0 154 浏览量
更新于2024-06-23
收藏 26KB DOCX 举报
"MySQL面试题集,包含62道题目,涵盖了MySQL的锁机制、表格类型、MyISAM与InnoDB的区别、事务隔离级别以及数据类型等核心知识点。"
在MySQL数据库系统中,锁机制是确保数据并发访问安全的重要手段。主要分为三种类型:
1. **表级锁**:对整个表进行锁定,加锁速度快,但粒度大,可能导致高冲突和低并发。不会出现死锁。
2. **行级锁**:针对单行数据进行锁定,加锁速度慢,可能出现死锁,但并发度最高。
3. **页面锁**:介于表锁和行锁之间,锁定的是数据页,其加锁速度和并发度也介于两者之间。
MySQL中的表格类型包括:
1. **MyISAM**:不支持事务,使用表级锁,适合读取频繁的场景。不存储表的总行数,每个MyISAM表有三个文件:.frm(表结构),.MYD(数据文件),.MYI(索引文件)。
2. **Heap(内存表)**:数据存储在内存中,速度快但数据丢失风险大。
3. **Merge**:用于合并多个MyISAM表,提供更大的表处理能力。
4. **InnoDB**:支持事务和行级锁,适用于事务处理和并发操作,主键索引为聚集索引,数据和索引存储在同一块,辅索引存储主键值。
5. **JSAM**:JSON存储引擎,支持JSON数据类型的存储。
MyISAM与InnoDB的主要区别在于:
- **事务处理**:MyISAM不支持事务,而InnoDB支持ACID事务。
- **锁定机制**:MyISAM使用表级锁,InnoDB支持行级锁,后者并发性能更好。
- **存储**:MyISAM不存储总行数,InnoDB则会。
- **索引类型**:MyISAM使用非聚集索引,InnoDB使用聚集索引,辅助索引存储主键值。
MySQL的InnoDB支持四种事务隔离级别:
1. **读未提交(Read Uncommitted)**:最低级别,可能读到未提交的数据。
2. **读已提交(Read Committed)**:每次事务只能看到其他事务已提交的修改,防止脏读。
3. **可重复读(Repeatable Read)**:在事务内多次读同一数据,结果相同,防止不可重复读。
4. **串行化(Serializable)**:最高级别,读操作会加锁,完全避免幻读,但并发度最低。
**CHAR和VARCHAR的区别**:
- CHAR长度固定,浪费空间,适合存储较短且长度固定的字符串。
- VARCHAR长度可变,节省空间,适合存储长度不固定的数据。
**主键和候选键**:
主键是唯一标识表中每一行的字段,一个表只能有一个主键,可以由一个或多个字段组成。主键也是候选键,候选键是能够唯一标识一行的字段,但并非所有候选键都能成为主键。通常会选择无业务含义且不易改变的字段作为主键,自增整数常作为首选。
2023-07-08 上传
2023-07-07 上传
2023-07-07 上传
2023-07-07 上传
2023-07-09 上传
2023-07-08 上传
2024-12-22 上传
2024-12-22 上传
苹果牛顿吃
- 粉丝: 24
- 资源: 2790
最新资源
- 管理系统系列--用C#(ADO.NET)实现的一个简单的图书管理系统.zip
- food-delivery:带有React Native的送餐应用
- smart-triage:在COVID-19期间加快医院患者分诊的解决方案
- 开发人员如何转型项目经理
- Android半透明3D图像显示源代码
- 电子功用-多功能充电插排
- Mezzanit.Hoard-开源
- Java进阶高手课-必知必会MySQL
- 【转】STM32系统板设计,打样验证可以使用-电路方案
- graduate-datascientist:数据科学,大数据,数据分析和人工人工智能(机器学习,深度学习,神经网络)
- MTA-SA
- Chat-Socket-Java:聊天系统ServerSocket e Socket na linguagem Java
- django-tastypie-backbone-todo-tutorial:将待办事项从 API 读取到主干应用程序的教程示例应用程序
- python实例-07 抖音表白.zip源码python项目实例源码打包下载
- learning_JS
- react-tmdb:TMDb