后端经典面试题合集, MySQL 事务有哪些隔离级别,分别有什么特点,以及 MySQL 的默认隔离级别是什么?
后端经典面试题合集, MySQL 事务有哪些隔离级别,分别有什么特点,以及 MySQL 的默认隔离级别是什么?
QA
Step 1
Q:: MySQL 事务有哪些隔离级别、分别有什么特点?
A:: MySQL 支持四种事务隔离级别:
1.
READ UNCOMMITTED(读未提交):在这个级别下,事务中的修改,即使未提交,对其他事务也是可见的。其特点是会出现脏读,即一个事务可以读取到另一个事务未提交的数据。
2.
READ COMMITTED(读已提交):在这个级别下,事务只能读取到其他事务已提交的数据。这种隔离级别避免了脏读,但可能会出现不可重复读,即同一事务在不同时间读取到的同一数据可能会不同。
3.
REPEATABLE READ(可重复读):在这个级别下,事务在开始时看到的数据是一致的,即使其他事务修改了数据,当前事务也不会看到修改后的数据。这种隔离级别避免了脏读和不可重复读,但可能会出现幻读。MySQL 的 InnoDB 存储引擎通过使用 MVCC(多版本并发控制)机制解决了幻读问题。
4.
SERIALIZABLE(可串行化):在这个级别下,所有事务串行执行,强制事务之间完全隔离,解决了脏读、不可重复读和幻读的问题,但性能较差,适用于高要求的场景。
Step 2
Q:: MySQL 的默认隔离级别是什么?
A:: MySQL InnoDB 存储引擎的默认隔离级别是 REPEATABLE READ(可重复读)。这个级别在性能和数据一致性之间取得了平衡,适用于大多数场景。
用途
面试中会询问事务隔离级别,是因为数据库事务是保证数据一致性的关键机制之一。在实际生产环境中,隔离级别的选择会直接影响到数据库的并发性能和数据的正确性。例如,在高并发的环境下,如果隔离级别选择不当,可能会导致数据出现脏读、不可重复读或者幻读,进而导致业务逻辑错误。了解并能够正确设置事务的隔离级别对于开发者优化数据库性能、保障数据一致性具有重要意义。\n相关问题
🦆
什么是脏读,不可重复读和幻读?▷
🦆
MySQL 如何通过 MVCC 机制实现可重复读?▷
🦆
什么是间隙锁Gap Lock?▷
🦆
如何选择 MySQL 事务的隔离级别?▷