【MySQL面试】说说你对隔离级别的理解

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 【MySQL面试】说说你对隔离级别的理解

面试官:能说说你对隔离级别的理解吗?

我:在并发环境下,数据或记录可能同时被多个事务读写,那么这就有可能造成当前事务被其他事务干扰的情况,比如我们所说的虚读,不可重复读,幻读。而数据库要求实现隔离性,也就是各个事务之间是不能被互相干扰的,所以,就提出了一些隔离各个事务的方法。

我:为了避免这种并发问题,在mysql内部通过加锁的方式实现好了解决方案可供选择,就是配置事务隔离级别。当然,避免事务并发问题是需要付出性能代价的,此时和分布式系统设计一样(CAP定理及BASE理论),为了保证一致性就一定会牺牲性能,要做取舍。

我:mysql提供了四种隔离级别,分别是

读未提交(read-uncommitted),不可重复读(read-committed)

可重复读(repeatable-read),串行化(serializable)

不同的隔离级别可以解决不同的问题,隔离级别越低,事务请求的锁越少,相应性能也就越高,如没有特殊要求或有错误发生,使用默认的隔离级别即可,如果系统中有高频读写并且对一致性要求高那么就需要比较高的事务隔离级别甚至串行化。

所以隔离级别的本质就是提供mysql的隔离性,并且提供好的数据一致性。

面试官:靠缓存可以提升高事务隔离级别的性能吗?

我:提升事务隔离级别的目的本质是提供更高的数据一致性,如果前置有缓存,那么缓存只能提供高效读并不能保证数据及时一致性,相反的我们还需要对缓存管理有额外的开销。


相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
5天前
|
存储 关系型数据库 MySQL
MySQL第五战:常见面试题(下)
MySQL第五战:常见面试题(下)
|
5天前
|
关系型数据库 MySQL
MySQL第四战:视图以及常见面试题(上)
MySQL第四战:视图以及常见面试题(上)
|
12天前
|
SQL 安全 关系型数据库
【Mysql-12】一文解读【事务】-【基本操作/四大特性/并发事务问题/事务隔离级别】
【Mysql-12】一文解读【事务】-【基本操作/四大特性/并发事务问题/事务隔离级别】
|
19天前
|
SQL Oracle 关系型数据库
✅为什么MySQL默认使用RR隔离级别?
Oracle默认隔离级别为RC,MySQL选择RR。Oracle的Read Committed最适合默认,因为它不锁定读取的数据,利于并发。而MySQL的RR级别防止了某些并发问题,特别是考虑到其历史上的statement格式binlog,该格式在READ COMMITTED下可能导致主从数据不一致。MySQL的RR通过行级锁定保证数据一致性,适合有主从复制的环境。
✅为什么MySQL默认使用RR隔离级别?
|
24天前
|
SQL 关系型数据库 MySQL
Python与MySQL数据库交互:面试实战
【4月更文挑战第16天】本文介绍了Python与MySQL交互的面试重点,包括使用`mysql-connector-python`或`pymysql`连接数据库、执行SQL查询、异常处理、防止SQL注入、事务管理和ORM框架。易错点包括忘记关闭连接、忽视异常处理、硬编码SQL、忽略事务及过度依赖低效查询。通过理解这些问题和提供策略,可提升面试表现。
34 6
|
24天前
|
存储 Oracle 关系型数据库
【MySQL面试题pro版-12】
【MySQL面试题pro版-12】
15 0
|
24天前
|
存储 关系型数据库 MySQL
【MySQL面试题pro版-11】
【MySQL面试题pro版-11】
17 0
|
3天前
|
关系型数据库 MySQL 数据库
docker MySQL删除数据库时的错误(errno: 39)
docker MySQL删除数据库时的错误(errno: 39)
11 0
|
1天前
|
关系型数据库 MySQL 数据库
mysql 设置环境变量与未设置环境变量连接数据库的区别
设置与未设置MySQL环境变量在连接数据库时主要区别在于命令输入方式和系统便捷性。设置环境变量后,可直接使用`mysql -u 用户名 -p`命令连接,而无需指定完整路径,提升便利性和灵活性。未设置时,需输入完整路径如`C:\Program Files\MySQL\...`,操作繁琐且易错。为提高效率和减少错误,推荐安装后设置环境变量。[查看视频讲解](https://www.bilibili.com/video/BV1vH4y137HC/)。
17 3
mysql 设置环境变量与未设置环境变量连接数据库的区别
|
3天前
|
关系型数据库 MySQL 数据库连接
用Navicat备份Mysql演示系统数据库的时候出:Too Many Connections
用Navicat备份Mysql演示系统数据库的时候出:Too Many Connections
13 0