"数据库面试专题及答案.pdf"
在数据库领域,面试中经常涉及到的重要知识点包括事务隔离级别、数据类型、存储引擎以及性能分析等。以下是对这些知识点的详细阐述:
1. **事务隔离级别**:
- **Read Uncommitted(读未提交)**:这是最低的隔离级别,允许读取到其他事务尚未提交的数据,可能会导致脏读、不可重复读和幻读问题。
- **Read Committed(读已提交)**:在这种级别下,一个事务只能看到其他事务已经提交的数据,避免了脏读,但仍然可能出现不可重复读。
- **Repeatable Read(可重复读)**:MySQL的InnoDB默认隔离级别,它确保在同一事务内多次读取同一数据始终一致,防止不可重复读,但可能有幻读现象。
- **Serializable(串行化)**:最高的隔离级别,所有事务按顺序执行,完全避免了脏读、不可重复读和幻读,但可能影响并发性能。
2. **MySQL中的ENUM用法**:
ENUM是一种特殊的字符串类型,用于存储预定义的一组值。在创建表时定义,例如`CREATE TABLE size (name ENUM('Small', 'Medium', 'Large'));`这将创建一个名为`size`的表,其中`name`列只能存储'Small'、'Medium'或'Large'这三个值之一。
3. **CHAR与VARCHAR的区别**:
- **CHAR**:长度固定的字符串类型,长度范围1到255个字符。存储时,CHAR会用空格填充到指定长度,检索时会去除尾随空格。
- **VARCHAR**:长度可变的字符串类型,也允许1到255个字符,但只存储实际使用的字符数量,节省空间。
4. **字符串类型**:
MySQL中的字符串类型还包括:
- **SET**:用于存储集合数据,类似于枚举,但可以有多个值。
- **BLOB**:用于存储大对象,如图片或文档。
- **TEXT**:与BLOB类似,但用于存储文本数据。
- **ENUM**:预定义值的字符串类型,每个列只能有其中之一。
- **VARCHAR**:长度可变的字符串类型,节省空间。
5. **MySQL存储引擎**:
MySQL支持多种存储引擎,最常见的是InnoDB,它支持事务处理、外键和行级锁定,适合大多数应用。其他引擎如MyISAM、Memory等各有特点,适用于不同的应用场景。
6. **TIMESTAMP**:
TIMESTAMP在MySQL中用于记录时间戳,如果带有`ON UPDATE CURRENT_TIMESTAMP`,则每当表中其他字段被更新时,该字段自动更新为当前时间。
7. **主键与候选键**:
- **主键**:表中唯一标识一行的键,每个表只能有一个主键,可以由一个或多个字段组成,不允许有NULL值。
- **候选键**:满足主键条件的任何不包含NULL值的唯一键,一个表可以有多个候选键,但只能选择其中一个作为主键。
8. **MySQL数据库服务器性能分析**:
- **SHOW STATUS**:显示服务器的状态变量,如`Bytes_received`和`Bytes_sent`,以及查询执行情况。
- **SHOW VARIABLES LIKE '%tmp_table%'**:查看与临时表相关的设置。
- **SHOW ENGINE INNODB STATUS**:显示InnoDB存储引擎的详细状态信息。
- **SHOW PROFILES**:记录查询的执行时间,通过`SET profiling=1`开启,然后执行查询,再用`SHOW profiles`查看。
- **EXPLAIN**:分析SQL语句的执行计划,帮助优化查询。
这些知识点是数据库面试中常见的主题,理解并掌握它们对于准备数据库相关职位的面试至关重要。