MySQL面试必备:锁机制、表格类型与事务隔离级别解析

需积分: 0 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长度可变,节省空间,适合存储长度不固定的数据。 **主键和候选键**: 主键是唯一标识表中每一行的字段,一个表只能有一个主键,可以由一个或多个字段组成。主键也是候选键,候选键是能够唯一标识一行的字段,但并非所有候选键都能成为主键。通常会选择无业务含义且不易改变的字段作为主键,自增整数常作为首选。