数据库方面查漏补缺,为以后找资料方便些,故整理此文。
特别说明:记录的都是本人不知道或者不太明朗的知识点。

1、数据库隔离级别

 多个事务读可能会遇到以下问题脏读:事务B读取事务A还没有提交的数据不可重复读:一行被检索两次,并且该行中的值在不同的读取之间不同幻读:当在事务处理过程中执行两个相同的查询,并且第二个查询返回的行集合与第一个查询不同这两个区别在于,不可重复读重点在一行,幻读的重点 ,返回 的集合不一样

2.MYSQL的两种存储引擎区别(事务、锁级别等等),各自的适用场景

 引擎  特性MYISAM    不支持外键,表锁,插入数据时,锁定整个表,查表总行数时,不需要全表扫描INNODB    支持外键,行锁,查表总行数时,全表扫描

3.索引有B+索引和hash索引

 索引  区别Hash  hash索引,等值查询效率高,不能排序,不能进行范围查询B+       数据有序,范围查询

4.聚集索引和非聚集索引

聚集索引和非聚集索引的区别是什么?最根本的区别在于索引的顺序和表数据的顺序是否一致。。

①聚集索引:使用聚集索引的表,记录和索引保持着一致的顺序,这样只要找到索引的值就能直接从叶子节点里面获取到全部列数据;

②非聚集索引:记录和索引的顺序往往不同,可理解为索引下面的叶子节点存储的还是索引,想要获得真正的列数据,还需要再一次查询;

根据上面的描述,聚集索引常常用在重复值不多(数据库通常会自动加内置的rowID保证列成为唯一索引),长度不大的列(比如主键等),而且聚集索引十分适合于顺序查询(order by)和范围查询(between,>,<),但是不适合于频繁修改的列,和大字段的列,因为这会导致数据在磁盘上大量移动的性能消耗;

而非聚集索引更常被用于频繁更新的列,列长度比较大的场景;

有人做过形象的比喻,聚集索引就像是使用拼音查字典(比如b就是100-150页),而非聚集索引是使用部首查字典(比如弓在100页,张在200页)!
索引 区别

聚集索引     数据按索引顺序存储,其中子结点存储真实的物理数据
非聚集索引   存储指向真正数据行的指针

5.索引的优缺点,什么时候使用索引,什么时候不能使用索引

1,表数据不多:表数据不多的时候,磁盘IO本来就少,加索引只会增加IO开销;2,不常使用的列:没必要;3,频繁更新的列:插入和删除时需要额外维护一份索引数据,会影响总的效率;

6.索引的底层实现(B+树,为何不采用红黑树,B树)重点

树    区别
红黑树 增加,删除,红黑树会进行频繁的调整,来保证红黑树的性质,浪费时间
B树也就是B-树    B树,查询性能不稳定,查询结果高度不致,每个结点保存指向真实数据的指针,相比B+树每一层每屋存储的元素更多,显得更高一点。
B+树    B+树相比较于另外两种树,显得更矮更宽,查询层次更浅

7.Sql的优化

①子查询变成left join
②limit 分布优化,先利用ID定位,再分页
③or条件优化,多个or条件可以用union all对结果进行合并(union all结果可能重复)
④不必要的排序
⑤where代替having,having 检索完所有记录,才进行过滤
⑥避免嵌套查询
⑦对多个字段进行等值查询时,联合索引

8.索引最左前缀问题

如果对三个字段建立联合索引,如果第1个字段没有使用索引,第2,3个字段也使用不到索引了,如果第二个字段没有使用索引,第三个字段也使用不到索引了

9.索引分类,索引失效条件

索引类型 概念
普通索引    最基本的索引,没有任何限制
唯一索引    与"普通索引"类似,不同的就是:索引列的值必须唯一,但允许有空值。
主键索引    它是一种特殊的唯一索引,不允许有空值。
全文索引    针对较大的数据,生成全文索引很耗时好空间。
组合索引    为了更多的提高mysql效率可建立组合索引,遵循”最左前缀“原则

失效条件

条件是or,如果还想让or条件生效,给or每个字段加个索引
like查询,以%开发
内部函数
对索引列进行计算
is null不会用,is not null 会用

10.数据库的主从复制

复制方式 操作
异步复制 默认异步复制,容易造成主库数据和从库不一致,一个数据库为Master,一个数据库为slave,通过Binlog日志,slave两个线程,一个线程去读master binlog日志,写到自己的中继日志,另一个线程解析日志,执行sql,master启动一个线程,给slave传递binlog日志
半同步复制 只有把master发送的binlog日志写到slave的中继日志,这时主库,才返回操作完成的反馈,性能有一定降低
并行操作 slave 多个线程去请求binlog日志

11.long_query怎么解决

设置参数,开启慢日志功能,得到耗时超过一定时间的sql

12.数据库连接池的作用

维护一定数量的连接,减少创建连接的时间
更快的响应时间
统一的管理

13.分库分表,主从复制,读写分离都是可提高数据库的性能,支持高并发情况

读写分离,读从库,写主库
spring配置两个数据库,通过AOP(面向切面编程),在写或读方法前面进行判断得到动态切换数据源。

14.有哪些锁,select时怎么加排它锁

锁    概念
乐观锁 自己实现,通过版本号
悲观锁 共享锁,多个事务,只能读不能写,加 lock in share mode
排它锁 一个事务,只能写,for update
行锁  作用于数据行
表锁  作于用表

15.死锁怎么解决

找到进程号,kill 进程

飞龙在天之DB面试资料相关推荐

  1. 海量秋招面试资料等你来拿!你离大厂也许并不远

    秋招在即,你还在为秋招如何准备而发愁吗?你还在为拿不到大厂offer而苦恼吗?工欲善其事,必先利其器.金秋开学季,CSDN助力你的技术学习与成长,为你免费提供海量大厂面试资料,让你的秋招不再慌乱! 即 ...

  2. 不要在桌面保存长期修改的文件否则系统挂了时候面临文件丢失的问题,长期总结面试资料(公司 题目 地址 氛围 加班情况 薪资情况)毁于一旦

    不要在桌面保存长期修改的文件否则系统挂了时候面临文件丢失的问题,长期总结面试资料(公司 题目 地址 氛围 加班情况 薪资情况)毁于一旦! 不要在桌面保存长期修改的文件否则系统挂了时候面临文件丢失的问题 ...

  3. AI:一个20年程序猿的学习资料大全—BAT等面试资料/NECCS大赛资料/一二级建造师/网络编程爬虫等/公务员——只有你不想要的,没有你找不到的

    AI:一个20年程序猿的学习资料大全--前端/后端/架构师/运维各种很多教程资料--只有你不想要的,没有你找不到的 AI:一个20年程序猿的学习资料大全-结构分析软件/办公软件/电气制造控制/高级语言 ...

  4. 超详细百家大厂面试资料,免费送!

    好不容易有个大厂面试机会,面试官才问了两三个问题,就已经回答不上来的,只想找个地缝钻进去,连进入技术面的机会都没有,现在大厂都在大量招聘Java工程师,但面试题怎么都这么难?! Java工程师要进入大 ...

  5. Java开发大厂面试资料,让你的面试不再困难!

    你是否有过因为面试紧张而导致应聘失败的经历?你是否还在因为面试而感到头疼? Java开发大厂面试资料,让你的面试不再困难! Java能力和面试能力,这是两个方面的技能,可以这样说,如果不准备,一些大神 ...

  6. 2021年Android工作或许更难找,面试资料分享

    我们程序员经常迷茫于有太多东西要学,有些找不到方向.不知所措. 很多程序员都愿意说,我想变得更好,但是更好是什么却很模糊,同时我们又不知道该怎么样去做.我们的生命如此短暂,作为程序员的职业生涯可能会更 ...

  7. 2019互联网行业面试资料合集

    2019互联网行业面试资料合集 有需要关注公众号:学霸搜罗

  8. 向大家推荐一下我的笔记APP『百灵』,里面有丰富的面试资料

    本来想晚点介绍的,又因为我想参加博客的活动,<我和程序员的故事>,里面会介绍到我毕业后至今做程序员的一些小故事,这款app也算是我故事的一个小分支,但是我又不能长篇的介绍,会显得主次不分, ...

  9. Android面试资料整理

    文章目录 前言 面试问题整理 Android 问题 一.Activity 1.Activity 的生命周期 2.onStart()和onResume().onPause()和onStop()的区别? ...

  10. 西北工业大学MBA院校提前面试资料题已整理完

    西北工业大学MBA院校提前面试资料已整理完 23届的学生今天给大家带来的是提前面试的内容=提前批面试. 那么老师先甩几个问题出来? 第一:提前面试的院校都有哪些?(已解决) 第二:提前面试的考试内容? ...

最新文章

  1. centos下mysql常用的三种备份方法_centos下mysql自动备份(全量)
  2. HDU5154拓扑排序模版题
  3. Lua date format
  4. 开源Linux 3.3内核首次融合Android代码
  5. 抓包oracle密码,Oracle TNS 协议抓包分析
  6. iOS学习之UItableView
  7. xamarin怎么调用java的_XamarinSQLite教程在Xamarin.Android项目中使用数据库
  8. 计算型存储:异构计算的下一个关键应用
  9. 浙江科技学院计算机辅助教育试卷,(下册).-浙江科技学院经济与管理学院.doc
  10. CentOS 6.4安装本地yum源
  11. 6.S081 Lab 1: Xv6 and Unix utilities
  12. js上传文件获取文件流
  13. 初级电工技术实训考核装置
  14. java号码归属地接口,免费API-手机号码归属地接口
  15. QT5.12.1 ARM开发环境搭建 并 移植到RK3399 ubuntu16.04系统运行【完整版】
  16. 优化 WordPress 网站让百度快速收录
  17. Android stdio之 'adb' 不是内部或外部命令,也不是可运行的程序 或批处理文件。
  18. net: mpls 是什么
  19. C语言 malloc() + 结构体指针定义结构体变量
  20. 基于tensorflow的mnist数据集手写字体分类level-1

热门文章

  1. 解决django admin表的外键关联数据过多响应时间过长问题
  2. 网站HTML SEO优化
  3. php选课删除选课成绩统计,高校选修课平时成绩管理系统
  4. 关于删除/卸载win10自带IE 11浏览器后恢复问题
  5. php liger 表格排序,jQuery LigerUI 使用教程表格篇(1)
  6. python 对接萤石云,录制可播放的MP4视频
  7. 解决Windows10关闭UAC后,开机启动项不生效的问题
  8. 如何做一场视频投票活动
  9. 芯片数据分析步骤4 标准化-affy
  10. sunOracle t4系列小型机服务器配置详解