MySQL面试深度解析:锁机制与事务隔离
需积分: 0 133 浏览量
更新于2024-06-23
收藏 26KB DOCX 举报
"MySQL面试题集,包含62道题目,涵盖了MySQL的锁机制、表格类型、MyISAM与InnoDB的区别、事务隔离级别以及数据类型等核心知识点。"
在MySQL数据库系统中,锁机制是确保数据并发访问安全的重要手段。主要分为三种类型:
1. **表级锁**:对整个表进行锁定,加锁速度快,但粒度大,可能导致较高的锁冲突,适合读多写少的场景。
2. **行级锁**:锁定单行数据,加锁速度慢,但并发度高,适合写操作频繁的情况,可能会出现死锁。
3. **页面锁**:介于表级锁和行级锁之间,适用于需要平衡加锁速度和并发度的场景。
MySQL支持多种表格类型,常见的包括:
1. **MyISAM**:不支持事务处理,但查询速度快,占用存储空间较少,适合读取操作为主的场景。使用表级锁,不存储表的总行数。
2. **Heap(内存表)**:数据存储在内存中,速度非常快,但重启后数据会丢失。
3. **Merge**:用于合并多个MyISAM表,提供更灵活的管理。
4. **INNODB**:支持事务处理和行级锁,适合需要事务安全和并发写入的环境,使用聚集索引,支持外键约束。
5. **JSAM**:JOURNALING(日志)存储引擎,提供事务支持,但使用较少。
MyISAM与InnoDB的主要区别在于:
- MyISAM不支持事务,而InnoDB支持ACID兼容的事务,并提供了四种事务隔离级别。
- MyISAM使用表级锁,InnoDB支持行级锁,提高了并发性能。
- MyISAM不存储表的总行数,而InnoDB通常会存储。
- MyISAM的索引是非聚集的,InnoDB的主键索引是聚集的,辅索引存储的是主键值。
MySQL的事务隔离级别有四种,从低到高分别为:
1. **读未提交(READ UNCOMMITTED)**:最低级别,能看到其他事务未提交的数据,可能出现脏读。
2. **读已提交(READ COMMITTED)**:每个事务只能看到已经提交的数据,但可能存在不可重复读问题。
3. **可重复读(REPEATABLE READ)**:同一事务内的多次读取结果一致,但可能遇到幻读现象。
4. **串行化(SERIALIZABLE)**:最高级别,完全避免了脏读、不可重复读和幻读,但并发性能最低。
在数据类型方面,CHAR和VARCHAR的区别在于:
- CHAR是固定长度的字符串类型,存储空间始终为声明的长度,检索时会去掉尾部空格。
- VARCHAR是可变长度的字符串,只存储实际字符长度,节省空间,适合存储长度变化的文本。
主键和候选键的概念:
- 主键是唯一标识每条记录的键,每个表只能有一个主键,可以由一个或多个字段组成,不允许有NULL值。
- 候选键是能够唯一标识记录的键,可以作为主键,也可以不是。一个表可以有多个候选键,但只能选择其中一个为主键。
点击了解资源详情
点击了解资源详情
点击了解资源详情
2023-07-08 上传
2023-07-07 上传
2023-07-07 上传
2023-07-07 上传
2023-07-09 上传
2023-07-08 上传
伟大先锋
- 粉丝: 120
- 资源: 1689