MySQL事务隔离级别与面试知识点解析

版权申诉
0 下载量 71 浏览量 更新于2024-07-18 收藏 774KB PDF 举报
"数据库面试专题及答案.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**:开启查询性能分析。 了解并掌握这些知识点对于数据库相关的面试至关重要,它们涵盖了事务处理、数据类型选择、存储优化和性能监控等多个核心领域。