MySQL事务隔离级别详解与 ENUM, CHAR/VARCHAR差异

版权申诉
0 下载量 193 浏览量 更新于2024-07-06 收藏 27KB DOCX 举报
在MySQL数据库面试中,面试官可能会关注以下几个关键知识点: 1. **事务隔离级别**: MySQL的InnoDB存储引擎支持SQL标准定义的四种事务隔离级别:readuncommitted、readcommitted、repeatableread和serializable。- `readuncommitted`允许读取未提交的数据,可能导致脏读;`readcommitted`避免脏读,但可能出现不可重复读(即同一查询结果在多次执行时不同);`repeatableread`确保在同一会话内读取的结果不会因其他事务的更新而改变,但仍存在幻读问题;`serializable`是最严格的级别,保证了事务的串行化执行,避免了所有并发问题,但性能较低。 2. **ENUM类型**: ENUM在MySQL中用于定义一组预定义的字符串值,创建表时指定这些选项。例如,`CREATE TABLE size (name ENUM('Small', 'Medium', 'Large'));`它限制了name字段只能取这些特定值。 3. **CHAR和VARCHAR的区别**: CHAR类型具有固定的长度,存储时填充空格,检索时要去除尾部空格。VARCHAR则长度可变,节省空间但不保证填充。例如,`CREATE TABLE names (title CHAR(20) NOT NULL, description VARCHAR(100));`这里title需要固定20个字符,description则可变长。 4. **MySQL的存储引擎**: MySQL支持多种存储引擎,如InnoDB(支持事务,适合复杂应用)、MyISAM(简单快速,无事务支持)、MEMORY(内存中存储,速度快但不持久)等。每个引擎有不同的锁定机制、索引策略和功能。 5. **TIMESTAMP类型**: TIMESTAMP列默认在创建时用零值初始化,但当表中其他字段更新时,会自动更新为当前时间。UPDATECURRENT_TIMESTAMP用于这种自动更新的行为。 6. **主键与候选键**: 主键是表格的唯一标识符,一张表仅能有一个主键。候选键则是表中的一组属性,理论上可以被设置为主键,也可以作为外键引用,但不是必须的。 7. **MySQL性能分析**: 可以通过以下命令进行性能分析:`SHOW STATUS`查看系统状态变量如流量、命令计数等;`SHOW SESSION STATUS LIKE 'Select';`检查会话状态;`SHOW PROFILES`或`SHOW PROFILE`查看执行计划;`SHOW CREATE TABLE`检查表结构;以及监控排序、连接执行计划和存储引擎操作等。 8. **LIKE和REGEXP操作**: LIKE用于基本模式匹配,如`SELECT * FROM users WHERE name LIKE '%John%'`;REGEXP(正则表达式)则提供了更复杂的模式匹配,如`SELECT * FROM users WHERE email REGEXP '^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$'`,适用于更精确的搜索和替换。但REGEXP操作通常比LIKE慢。