免费java培训课程,2021最新版!
20道常见MySQL数据库面试题+解析
事务四大特性(ACID)原子性、一致性、隔离性、持久性?
事务的并发?事务隔离级别,每个级别会引发什么问题,MySQL默认是哪个级别?
MySQL常见的三种存储引擎(InnoDB、MyISAM、MEMORY)的区别?
MySQL的MyISAM与InnoDB两种存储引擎在,事务、锁级别,各自的适用场景?
查询语句不同元素(where、jion、limit、group by、having等等)执行先后顺序?
什么是临时表,临时表什么时候删除?
MySQL B+Tree索引和Hash索引的区别?
sql查询语句确定创建哪种类型的索引?如何优化查询?
聚集索引和非聚集索引区别?
有哪些锁(乐观锁悲观锁),select 时怎么加排它锁?
非关系型数据库和关系型数据库区别,优势比较?
数据库三范式,根据某个场景设计数据表?
数据库的读写分离、主从复制,主从复制分析的 7 个问题?
使用explain优化sql和索引?
MySQL慢查询怎么解决?
什么是 内连接、外连接、交叉连接、笛卡尔积等?
mysql都有什么锁,死锁判定原理和具体场景,死锁怎么解决?
varchar和char的使用场景?
mysql 高并发环境解决方案?
数据库崩溃时事务的恢复机制(REDO日志和UNDO日志)?
1、事务四大特性(ACID)原子性、一致性、隔离性、持久性?
原子性(Atomicity)
- 原子性是指事务包含的所有操作要么全部成功,要么全部失败回滚,因此事务的操作如果成功就必须要完全应用到数据库,如果操作失败则不能对数据库有任何影响。
一致性(Consistency)
- 事务开始前和结束后,数据库的完整性约束没有被破坏。比如A向B转账,不可能A扣了钱,B却没收到。
隔离性(Isolation)
- 隔离性是当多个用户并发访问数据库时,比如操作同一张表时,数据库为每一个用户开启的事务,不能被其他事务的操作所干扰,多个并发事务之间要相互隔离。
同一时间,只允许一个事务请求同一数据,不同的事务之间彼此没有任何干扰。比如A正在从一张银行卡中取钱,在A取钱的过程结束前,B不能向这张卡转账。
关于事务的隔离性数据库提供了多种隔离级别,稍后会介绍到。 持久性(Durability)
- 持久性是指一个事务一旦被提交了,那么对数据库中的数据的改变就是永久性的,即便是在数据库系统遇到故障的情况下也不会丢失提交事务的操作。
2、事务的并发?事务隔离级别,每个级别会引发什么问题,MySQL默认是哪个级别?
从理论上来说, 事务应该彼此完全隔离, 以避免并发事务所导致的问题,然而, 那样会对性能产生极大的影响, 因为事务必须按顺序运行, 在实际开发中, 为了提升性能, 事务会以较低的隔离级别运行, 事务的隔离级别可以通过隔离事务属性指定。
2.1事务的并发问题
(1)脏读:事务A读取了事务B更新的数据,然后B回滚操作,那么A读取到的数据是脏数据
(2)不可重复读:事务 A 多次读取同一数据,事务 B 在事务A多次读取的过程中,对数据作了更新并提交,导致事务A多次读取同一数据时,结果因此本事务先后两次读到的数据结果会不一致。
(3)幻读:幻读解决了不重复读,保证了同一个事务里,查询的结果都是事务开始时的状态(一致性)。
例如:事务T1对一个表中所有的行的某个数据项做了从“1”修改为“2”的操作 这时事务T2又对这个表中插入了一行数据项,而这个数据项的数值还是为“1”并且提交给数据库。 而操作事务T1的用户如果再查看刚刚修改的数据,会发现还有跟没有修改一样,其实这行是从事务T2中添加的,就好像产生幻觉一样,这就是发生了幻读。
小结:不可重复读的和幻读很容易混淆,不可重复读侧重于修改,幻读侧重于新增或删除。解决不可重复读的问题只需锁住满足条件的行,解决幻读需要锁表。
2.2事务的隔离级别
事务隔离级别
读未提交:另一个事务修改了数据,但尚未提交,而本事务中的SELECT会读到这些未被提交的数据脏读
不可重复读:事务 A 多次读取同一数据,事务 B 在事务A多次读取的过程中,对数据作了更新并提交,导致事务A多次读取同一数据时,结果因此本事务先后两次读到的数据结果会不一致。
可重复读:在同一个事务里,SELECT的结果是事务开始时时间点的状态,因此,同样的SELECT操作读到的结果会是一致的。但是,会有幻读现象
串行化:最高的隔离级别,在这个隔离级别下,不会产生任何异常。并发的事务,就像事务是在一个个按照顺序执行一样
2.3 MySQL默认的事务隔离级别为repeatable-read
MySQL 支持 4 中事务隔离级别.
事务的隔离级别要得到底层数据库引擎的支持, 而不是应用程序或者框架的支持.
Oracle 支持的 2 种事务隔离级别:READ_COMMITED , SERIALIZABLE
2.3补充
SQL规范所规定的标准,不同的数据库具体的实现可能会有些差异
MySQL中默认事务隔离级别是“可重复读”时并不会锁住读取到的行
事务隔离级别:未提交读时,写数据只会锁住相应的行。
事务隔离级别为:可重复读时,写数据会锁住整张表。
事务隔离级别为:串行化时,读写数据都会锁住整张表。
隔离级别越高,越能保证数据的完整性和一致性,但是对并发性能的影响也越大,鱼和熊掌不可兼得啊。对于多数应用程序,可以优先考虑把数据库系统的隔离级别设为Read Committed,它能够避免脏读取,而且具有较好的并发性能。尽管它会导致不可重复读、幻读这些并发问题,在可能出现这类问题的个别场合,可以由应用程序采用悲观锁或乐观锁来控制。
21条MySQL性能调优经验
为查询缓存优化你的查询
EXPLAIN你的SELECT查询
当只要一行数据时使用LIMIT 1
为搜索字段建索引
在Join表的时候使用相当类型的例,并将其索引
千万不要 ORDER BY RAND()
避免 SELECT *
永远为每张表设置一个 ID
使用 ENUM 而不是 VARCHAR
从 PROCEDURE ANALYSE() 取得建议
尽可能的使用 NOT NULL
Prepared Statements
无缓冲的查询
把 IP 地址存成 UNSIGNED INT
固定长度的表会更快
垂直分割
拆分大的 DELETE 或 INSERT 语句
越小的列会越快
选择正确的存储引擎
使用一个对象关系映射器(Object Relational Mapper)
小心“永久链接”
最后,附一张自己面试前准备的脑图:
面试前一定少不了刷题,为了方便大家复习,我分享一波个人整理的面试大全宝典
- Java核心知识整理
- Spring全家桶(实战系列)
Step3:刷题
既然是要面试,那么就少不了刷题,实际上春节回家后,哪儿也去不了,我自己是刷了不少面试题的,所以在面试过程中才能够做到心中有数,基本上会清楚面试过程中会问到哪些知识点,高频题又有哪些,所以刷题是面试前期准备过程中非常重要的一点。
以下是我私藏的面试题库:
很多人感叹“学习无用”,实际上之所以产生无用论,是因为自己想要的与自己所学的匹配不上,这也就意味着自己学得远远不够。无论是学习还是工作,都应该有主动性,所以如果拥有大厂梦,那么就要自己努力去实现它。
资料领取方式:Java全套学习手册
g-JnYToAJN-1626181646003)]
很多人感叹“学习无用”,实际上之所以产生无用论,是因为自己想要的与自己所学的匹配不上,这也就意味着自己学得远远不够。无论是学习还是工作,都应该有主动性,所以如果拥有大厂梦,那么就要自己努力去实现它。
资料领取方式:Java全套学习手册
以上学习资料均免费分享,最后祝愿各位身体健康,顺利拿到心仪的offer!
免费java培训课程,2021最新版!相关推荐
- 【金三银四】Java中间件面试题(2021最新版)
目录 前言 Zookeeper 1. ZooKeeper 是什么? 2. ZooKeeper 提供了什么? 3.Zookeeper 文件系统 4. ZAB 协议? 5. 四种类型的数据节点 Znode ...
- Java知识体系(2021最新版)
目录 Java 开发框架 底层&应用 架构 面试题 读书笔记 开源项目脚手架 其他相关技术 程序员日常 业内热门技术发展 持续更新... Java Java基础 网络传输协议 集合容器 反射泛 ...
- Java 虚拟机(JVM)面试题(2021最新版)
点击下方公众号「关注」和「星标」 回复"1024"获取独家整理的学习资料! Java内存区域 说一下 JVM 的主要组成部分及其作用? JVM包含两个子系统和两个组件,两个子系统为 ...
- Java知识体系整理(2021最新版)
预计2021年9月底初步完成 目录 一.基本知识 二.Java基础 三.常用技术杂记 四.开发框架 五.分布式 六.兴趣场景 七.其他技术涉略 八.其他 九.面试题 1)面试题-Java基础 2)面试 ...
- 【2021最新版】Java多线程并发面试题总结(108道题含答案解析)
文章目录 JAVA并发知识库 1.Java中实现多线程有几种方法? 2.继承Thread类 3.实现Runnable接口. 4.ExecutorService.Callable.Future有返回值线 ...
- 【金三银四】Java集合面试题(2021最新版)
目录 前言 一.集合容器概述 1. 什么是集合 2. 集合的特点 3. 集合和数组的区别 4. 使用集合框架的好处 5. 常用的集合类有哪些? 6. List,Set,Map三者的区别? 7. 集合框 ...
- 2021最新版谷歌卫星地图已出炉,纯免费下载
2021最新版谷歌卫星地图资源已经更新,可免费下载,建议Z发收藏! 获取方法: 1.下载图新地球电脑端www.tuxingis.com或者手机端外业精灵app: 2.导入网盘图源文件就可以正常浏览谷歌 ...
- 泛955、不加班、双休的公司名单来了!2021最新版!
开始今天的正菜之前,我想先分享一个最近在知乎上看到的很奇葩的问题.大致意思就是:"我自己讨厌计算机这种要终身学习并且会经历 996 生活的专业,我却让朋友学计算机". 当时,看到这 ...
- 安卓逆向-KG音乐2021最新版下载接口分析
安卓逆向-KG音乐2021最新版下载API分析 安卓逆向-KG音乐最新版API Java代码实现 后记 安卓逆向-KG音乐最新版API 吐槽一下,相对于其他几个大型音乐平台讲,KG音乐的API设计非常 ...
最新文章
- 单用户模式迁移home家目录
- UpdateProgress 控件--用户中断
- 排球积分程序(三)——模型类的设计
- Python+Opencv颜色和形状检测
- echart移上去显示内容_echarts如何移动到柱状图上显示自己想显示的提示信息
- std::make_unique和 std::make_shared区别
- 将DataTable 写入XML
- 12佳精美的国外 Flash 网站模板下载(附源文件)
- word文档中在文字的右上角加标注快捷键
- RN:真机调试无线调试
- Ubuntu 16.04安装32bit支持
- 3D可视化色彩设计大揭秘
- 职称计算机代码表,全国职称计算机考试科目及科目代码
- 3D渲染技术分享:用实时反射Shader增强画面颜值
- FTP文件传输协议与部署,包括Linux系统、Windows系统和H3C路由交换设备部署
- linux 使用rename命令批量重命名文件
- 语雀知识库 2.0 上线,让表达更自由
- 移动安全学习笔记——组件安全之组件暴露导致的安全问题(含实验)
- 对技术的态度(酷壳)
- [模仿]html5游戏_FlyppyBird
热门文章
- 安装fbterm解决ffy下的中文乱码
- 【2022研电赛】技术赛华南区一等奖:基于改进GoogLeNet的瘢痕色泽和血管分布评估系统
- Sonar错误 Invoke method(s) only conditionally
- @ConditionalOnProperty的作用和用法
- 软件测试5分钟解决银行借贷笔试题
- 【Mac系统重置网络】
- 微信公众号文章排版需要注意的两个小细节
- phpems用户名是什么_利用PHPEMS搭建在线考试平台(一)
- Unity手游开发札记——我们是如何使用Lua来开发大型游戏的?(上)
- Crash日志,分析专用