"数据库面试专题及答案.pdf"
在数据库领域,面试中经常涉及到的关键知识点包括事务隔离级别、数据类型、存储引擎以及性能分析等。以下是对这些主题的详细阐述:
1. **事务隔离级别**:
- **Read Uncommitted(读未提交)**:这是最低的隔离级别,允许读取到其他事务尚未提交的数据,可能导致脏读和不可重复读问题。
- **Read Committed(读已提交)**:在这种级别下,事务只能看到已经提交的其他事务的更改,但可能会出现不可重复读的情况。
- **Repeatable Read(可重复读)**:MySQL的InnoDB默认隔离级别,防止了脏读和不可重复读,但在某些情况下可能出现幻读。
- **Serializable(串行化)**:最高的隔离级别,所有事务按顺序执行,确保无任何并发问题,但可能会影响性能。
2. **MySQL中的ENUM用法**:
ENUM是MySQL提供的一种特殊数据类型,用于限制列只能接受预定义的一组字符串值。例如,创建一个size表,其中name列只能是'Small', 'Medium'或'Large',可以这样写:
```sql
CREATE TABLE size (
name ENUM('Small', 'Medium', 'Large')
);
```
ENUM类型的列在创建后可以扩展,但无法动态添加新的值。
3. **CHAR与VARCHAR的区别**:
- **CHAR**:长度固定的字符串类型,存储空间总是固定大小,即使实际数据不足也会用空格填充。检索时会去除尾部空格。
- **VARCHAR**:长度可变的字符串类型,只存储实际使用的字符数量,节省存储空间,但处理速度可能较慢。
4. **字符串类型**:
MySQL支持多种字符串类型,包括:
- **SET**:允许在一个字段中存储一组预定义的值,每个值都是唯一的。
- **BLOB**:用于存储大对象(Binary Large Object),如图片或文档。
- **ENUM**:见上文描述。
- **CHAR**:固定长度的字符串。
- **TEXT**:用于存储长文本数据,分为TINYTEXT、TEXT、MEDIUMTEXT和LONGTEXT。
- **VARCHAR**:可变长度的字符串。
5. **MySQL的存储引擎**:
MySQL支持多种存储引擎,如InnoDB(支持事务处理和外键)、MyISAM(速度快,不支持事务)等。InnoDB通常用于需要事务安全和行级锁定的应用。
6. **TIMESTAMP与UPDATE CURRENT_TIMESTAMP**:
当TIMESTAMP列被设置为UPDATE CURRENT_TIMESTAMP,一旦表中的其他字段被修改,该列的值就会自动更新为当前时间。
7. **主键与候选键**:
- **主键**:是表中的一个或多个字段,能唯一标识一行数据,每个表只能有一个主键。
- **候选键**:满足主键条件的任意一组列,可以有多个。在没有指定主键时,候选键可以被选为主键。
8. **MySQL服务器性能分析**:
- **SHOW STATUS**:显示服务器的统计信息,如网络流量、执行的命令等。
- **SHOW SESSION STATUS**:查看当前会话的状态。
- **SHOW PROFILES**:记录查询的执行时间和资源消耗。
- **SET profiling=1**:开启查询性能分析。
了解并掌握这些知识点对于数据库相关的面试至关重要,它们涵盖了事务处理、数据类型选择、存储优化和性能监控等多个核心领域。