java八股文--数据库
数据库
- 1.索引的基本原理
- 2.聚簇和非聚簇索引的区别
- 3.mysql索引的数据结构以及各自的优劣
- 4.索引的设计原则
- 5.事务的基本特性和隔离级别
- 6.mysql主从同步原理
- 7.简述MyISAM和InnoDB的区别
- 8.简述mysql中索引类型及对数据库性能的影响
- 9.Explain语句结果中各个字段分别表示什么
- 10.索引覆盖是什么
- 11.最左前缀原则是什么
- 12.Innodb是如何实现事务的
- 13.B树和B+树的区别,为什么myesql使用B+树
- 14.mysql慢查询该如何优化
- 15.数据库设计三范式
- 16.左连接、右连接、笛卡尔积、全连接和内连接的区别
- 17.SQL约束有哪几种
- 18.事务的特性
- 19.事务的隔离级别
- 20.索引的优缺点,什么时候使用索引,什么时候不能使用索引
- 21.什么是数据库连接池 为什么需要数据库连接池
- 22.B+树
- 23.聚集索引和非聚集索引的区别
- 24.为什么推荐使用整形自增的主键而不是用UUID
1.索引的基本原理
索引用来快速的寻找那些具有特定值的记录,如果没有索引,一般来说执行查询时遍历整张表索引的原理:就是把无序的数据变成有序的查询(1)把创建了索引的列的内容进行排序
(2)对排序结果生成倒排表
(3)在倒排表内容上拼上数据地址链
(4)在查询的时候,先拿到倒排表内容,再取出数据地址链,从而拿到数据
2.聚簇和非聚簇索引的区别
都是B+树的数据结构(1)聚簇索引:将数据存储与索引放到一块,并且是按照一定顺序组织的,找到索引也就找到了数据,数据的物理存放顺序与索引顺序一致。(2)非聚簇索引:叶子节点不存储数据,存储的是数据行地址,也就是根据索引查找到数据行的位置再取磁盘查找数据数据。
3.mysql索引的数据结构以及各自的优劣
4.索引的设计原则
查询更快、占用空间更小
5.事务的基本特性和隔离级别
基本特性:
(1)原子性:一个事务中的操作要么全部成功,要么全部失败
(2)一致性:数据库总是从一个一致性的状态转换到另外一个一致性的状态
(3)隔离性:一个事务的修改在最终提交之前,对其他事务是不可见的
(4)持久性:一个事务一旦提交,所做的修改就会永久的保存到数据库中隔离级别:
(1)读未提交:可能会读到其他事务未提交的数据,也叫做脏读
(2)读已提交:解决了脏读,但是没有解决不可重复读,也就是两次读取的结果不一致
(3)可重复读:解决了不可重复读,但是没有解决幻影读。这是mysql的默认隔离级别
(4)串行:一般是不会使用的,因为他会给每行数据都加锁,会导致大量的超时和锁竞争问题脏读:某个事务已更新一份数据,但是还未提交,另一个事务在此时读取了同一份数据,由于某些原因,前一个事务进行了RollBack操作,则后一个事务读取到的数据就是不正确的不可重复读:在一个事务的两次查询之中数据不一致,这可能是两次查询过程中间插入了一个事务更新的原有的数据
6.mysql主从同步原理
7.简述MyISAM和InnoDB的区别
8.简述mysql中索引类型及对数据库性能的影响
(1)普通索引:允许被索引的数据列包含重复的值(2)唯一索引:可以保证数据记录的唯一性(3)主键索引:是一种特殊的唯一索引,在一张表中只能定义一个主键索引,主键用于唯一标识一条记录(4)联合索引:索引可以覆盖多个数据列(5)全文索引:通过建立倒排索引,可以极大的提升索引效率,解决判断字段是否包含的问题,是目前搜索引擎使用的一种关键技术对数据库性能的影响:
(1)索引可以极大的提高数据的查询速度
(2)通过使用索引,可以在查询过程中,使用优化隐藏器,提高系统的性能
(3)但是会降低插入、更新、删除表的速度,因为在执行这些写操作时,还要操作索引文件
9.Explain语句结果中各个字段分别表示什么
10.索引覆盖是什么
索引覆盖就是在一个SQL执行时,可以利用索引来快速查找,并且此SQL所要查询的字段在当前索引对应的字段中都包含了,
那么此SQL走完索引后不用回表了,所需要的字段都在当前索引的叶子节点上存在,可以直接作为结果返回了
11.最左前缀原则是什么
12.Innodb是如何实现事务的
13.B树和B+树的区别,为什么myesql使用B+树
14.mysql慢查询该如何优化
(1)检查是否走了索引,如果没有则优化SQL利用索引(2)检查所利用的索引是否是最优索引(3)检查所查字段是否都是必须的,是否查询了过多字段,查出了多余数据(4)检查表中数据是否过多,是否应该进行分库分表了
15.数据库设计三范式
(1)第一范式:每个表都应该有主键,并且每个字段要求原子性不可再分(2)第二范式:在第一范式的基础上,所有非主键字段必须完全依赖主键,不能产生部分依赖(3)第三范式:在第二范式的基础上,所有非主键字段必须直接依赖主键,不能产生传递依赖设计范式的目的:减少数据冗余
16.左连接、右连接、笛卡尔积、全连接和内连接的区别
(1)左连接(左外连接):以左表作为基准进行查询,左表数据会全部显示出来,右表如果和左表数据不匹配则显示为null(2)右连接(右外连接):以右表作为基准进行查询,右表数据会全部显示出来,左表如果和右表数据不匹配则显示为null(3)全连接:先以左表进行左外连接,再以右表进行右外连接(4)内连接:显示表之间有连接匹配的所有行(5)笛卡尔积:也叫交叉连接
17.SQL约束有哪几种
(1)NOT NULL(非空约束):用于控制字段的内容一定不能为空(2)UNIQUE(唯一性约束):控制字段内容不能重复,一个表允许有多个Unique约束(3)PRIMARY KEY(主键约束):用于控制字段内容不能重复,但一个表只允许出现一个(4)FOREIGN KEY(外键约束):用于预防破坏表之间连接的动作,也能防止非法数据插入外键列,因为它必须是它指向的那个表中的值之一
18.事务的特性
(1)原子性:事务是最小的执行单位,不允许分割。整个事务中的所有操作,要么全部完成,要么全部不完成,不可能停滞在中间某个环节(2)一致性:在事务开始之前和事务结束以后,数据库的完整性没有被破坏(3)隔离性:并发访问数据库时,一个用户的事务不被其他事务所干扰,各并发事务之间数据库是独立的(4)持久性:在事务完成以后,该事务对数据库中数据的改变是持久的
19.事务的隔离级别
事务的隔离级别越高,并发性就越差,性能就越低(1)读未提交:事务A在事务B未提交前读取数据,如果事务B撤销了修改,那么A会读取到脏数据(2)读已提交:事务A分别在事务B提交前和提交后读取数据,出现不可重复读(3)可重复读(4)序列化
20.索引的优缺点,什么时候使用索引,什么时候不能使用索引
(1)索引最大的好处就是提高查询速度(2)缺点是更新数据时效率低,因为要同时更新索引(3)对需要频繁查询的数据建立索引,对需要频繁更改的数据不建议使用索引
21.什么是数据库连接池 为什么需要数据库连接池
(1)数据库连接池负责分配、管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而不是重新建立一个(2)数据库连接池在初始化时将创建一定数量的数据库连接放到连接池中,这些数据库连接的数量是由最小数据库连接数来设定的(3)数据库连接是一种关键的有限的昂贵的资源,对数据库连接的管理能显著影响到整个应用程序的伸缩性和健壮性,影响到程序的性能指标
22.B+树
(1)非叶子节点不存储数据,只存储索引(冗余),可以放更多的索引(2)叶子节点包含所有索引字段(3)叶子节点用指针连接,提高区间访问的性能(4)所有的元素节点从左到右依次递增排序(5)所有索引元素不重复
23.聚集索引和非聚集索引的区别
(1)聚集索引叶子节点包含了完整的数据(InnoDB采用的聚集索引)(2)非聚集索引:索引文件和数据文件不在一起存储
24.为什么推荐使用整形自增的主键而不是用UUID
(1)查找效率高(2)占用存储空间少(3)尽量自增的原因:采用非自增插入的时候会效率低
相关文章:
java八股文--数据库
数据库1.索引的基本原理2.聚簇和非聚簇索引的区别3.mysql索引的数据结构以及各自的优劣4.索引的设计原则5.事务的基本特性和隔离级别6.mysql主从同步原理7.简述MyISAM和InnoDB的区别8.简述mysql中索引类型及对数据库性能的影响9.Explain语句结果中各个字段分别表示什么10.索引覆…...
vue中名词解释
No名称略写作用应用场景其他1 单页面应用 (Single-page application) SPA 1,控制整个页面 2,抓取更新数据 3,无需加载,进行页面切换 丰富的交互,复杂的业务逻辑的web前端一般要求后端提供api数据…...
基于Java+SSM+Vue的旅游资源网站设计与实现【源码(完整源码请私聊)+论文+演示视频+包运行成功】
博主介绍:专注于Java技术领域和毕业项目实战 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅👇🏻 不然下次找不到哟 Java项目精品实战案例(200套) 目录 一、效果演示 二、…...
用于人工智能研究的开源Python微电网模拟器pymgrid(入门篇)
pymgrid是一个开源Python库,用于模拟微型电网的三级控制,允许用户创建或自行选择的微电网。并可以使用自定义的算法或pymgrid中包含的控制算法之一来控制这些微电网(基于规则的控制和模型预测控制)。 pymgrid还提供了与OpenAI Gy…...
运算放大器:电压比较器、电压跟随器、同相比例放大器
目录一、单限电压比较器二、滞回电压比较器三、窗口电压比较器四、正点原子直流电机驱动器电路分析实战1、电压采集电路2、电流采集电路3、过流检测电路Ⅰ、采用分压后的输入电压:Ⅱ、采用理想电压源的输入电压:Ⅲ、同相输入电压采用的是非理想电压源&am…...
Vector - CAPL - 实时时间on *(续2)
继续继续。。。四、键盘事件这个键盘事件是我个人起的名字,为了方便与其他事件进行区分,为什么要把这一个单独拉出来说呢,因为它的用处实在是太广泛了,基本只要是使用CANoe做一些基本的自动化测试小工具,都会用到它&am…...
数据质量管理的四个阶段
然而,我们需要按照什么流程来对数据质量进行有效的管控,从而提升数据质量,释放数据价值?一般来讲,数据质量控制流程分为4个阶段:启动、执行、检查、处理。在管控过程中这4个阶段需不断循环,螺旋…...
Spring源码面试最难问题——循环依赖
前言 问:Spring 如何解决循环依赖? 答:Spring 通过提前曝光机制,利用三级缓存解决循环依赖(这原理还是挺简单的,参考:三级缓存、图解循环依赖原理) 再问:Spring 通过提前…...
【计组】RAM的深入理解
一、存储机理 RAM的实现逻辑有种,分别是触发器和电容。 SRAM(Static)DRAM(Dynamic)存储方式触发器电容破坏性读出否(触发器具有稳态,能够锁住0或1两种状态)是(电容需要…...
JavaScript 之数据交互
在前后端交互中,前端通常需要对接口返回的数据进行格式转换、遍历、循环等;通常会用到以下函数和方法: forEach()、map()遍历数组(map返回新的数组);forEach()只能使用try catah终止循环;for in…...
Python 十大开源Python库,看看你熟悉几个?
嗨害大家好鸭!我是芝士❤ 对于码农来说, 关注的永远是新近有什么流行的、 既能解决问题又好用的利器。 本文就为你盘点十大开源Python库。 1、Pipenv 第一名非它莫属, 这个工具2017年初才发布, 但它已经能够影响每个Python开发…...
不愧是阿里开发的SpringBoot实战文档:入门+基础+进阶+项目,应有尽有
SpringBoot SpringBoot毋庸置疑,在Java开发中会因为项目流量太大需要切换到SpringCloud(SpringBoot)也会极为顺利。而且现在越来越多的公司都在采用SpringBoot,对SpringBoot关注和使用的开发者也越来越多了! SpringB…...
Vue(3)-vue中的Ajax、Vuex、路由及UI组件库
课程链接 目录4.Vue中的Ajax4.1.vue脚手架配置代理4.1.1.方法一4.1.2.方法二4.2.插槽5.Vuex5.1.理解Vuex5.1.1.概念5.1.2.何时使用?5.1.3.vuex原理5.2.vuex使用5.2.1.搭建vuex环境5.2.2.基本使用5.2.3.getters的使用5.2.4.四个map方法的使用5.2.5.模块化命名空间6.路…...
jwt 学习笔记
概述 JWT,Java Web Token,通过 JSON 形式作为 Web 应用中的令牌,用于在各方之间安全地将信息作为 JSON 对象传输,在数据传输过程中还可以完成数据加密、签名等相关处理 JWT 的作用如下: 授权:一旦用户登…...
网络安全实战从 0 到 1 彻底掌握 XXE
0x01 什么是 XXE个人认为,XXE 可以归结为一句话:构造恶意 DTD介绍 XXE 之前,我先来说一下普通的 XML 注入,这个的利用面比较狭窄,如果有的话应该也是逻辑漏洞。既然能插入 XML 代码,那我们肯定不能善罢甘休…...
如何安装 Composer
下载 Composer 安装前请务必确保已经正确安装了 PHP。打开命令行窗口并执行 php -v 查看是否正确输出版本号。 打开命令行并依次执行下列命令安装最新版本的 Composer: php -r "copy(https://install.phpcomposer.com/installer, composer-setup.php);"p…...
WPF 常用控件
WPF六种常用控件:布局控件、内容控件、带标题内容控件、条目控件、带标题条目控件和特殊内容控件(如:TextBox,TextBlock,Image等)。实例链接:WPF常用控件实例Window(窗体)Winodw窗体派生自ContentControl,有一个Content属性,里面可…...
河南工程学院蓝桥培训(2.21)
1,金币 461. 金币 - AcWing题库 #include <iostream> using namespace std; int n,a,ans,s; int main(){cin>>n;while(n--){if(a0)as;anss,a--;}cout<<ans;return 0; }...
新人使用Git获取远程仓库项目
前言 这篇git技术篇非常的简单基础,写它的原因很简单,因为现在很多的年轻人都很浮躁,刚入门就想学最牛x的,看不起基础的一些技术,比如说git操作、Linux基础命令,编程基础啥的。我身边有很多这样的年轻人&a…...
理解信号的
在日常生活中我们也经常面临许多的信号,手机通知、过红绿灯。。。这些信号在没有发生之前我们就知道这种信号产生我们需要干什么,那Linux里信号产生后,又怎么知道要做什么呢? -- 那当然是由程序员自己去设置啊 由于我们的用户空间…...
SpringSecurity学习(七)授权
授权 什么是权限管理 权限管理核心概念 SpringSecurity权限管理策略 基于URL地址的权限管理 基于方法的权限管理 一、权限管理 二、授权核心概念 在认证的过程成功之后会将当前用户登录信息保存到Authentication对象中,Authentication对象中有一个getAuthorities…...
【Vue3】模板语法
🏆今日学习目标:模板语法 😃创作者:颜颜yan_ ✨个人格言:生如芥子,心藏须弥 ⏰本期期数:第三期 🎉专栏系列:Vue3 文章目录前言声明响应式状态插值文本Attributeÿ…...
Linux基础
环境搭建:linux安装、远程连接常用命令:文件、目录、拷贝、移动、打包、压缩、文本编辑安装软件:文件上传、jdk、tomcat、mysql项目部署:Java应用、Python应用、日志查看、系统管理、用户权限Linux是一套免费使用、自由传播的操作…...
Spark-序列化、依赖关系、持久化
序列化 闭包检查 序列化方法和属性 依赖关系 RDD 血缘关系 RDD 窄依赖 RDD 宽依赖 RDD 任务划分 RDD 持久化 RDD Cache 缓存 RDD CheckPoint 检查点 缓存和检查点区别 序列化 闭包检查 从计算的角度, 算子以外的代码都是在 Driver 端执行, 算子里面的代码都是在 E…...
蓝桥杯刷题冲刺 | 倒计时16天
作者:指针不指南吗 专栏:蓝桥杯倒计时冲刺 🐾马上就要蓝桥杯了,最后的这几天尤为重要,不可懈怠哦🐾 文章目录1.青蛙跳杯子1.青蛙跳杯子 题目 链接: 青蛙跳杯子 - 蓝桥云课 (lanqiao.cn) X 星球的…...
Java设计模式-12 、建造者模式
建造者模式 (将一个 复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。) 建造者模式是一种创建型的模式,有一些对象的创建过程new 是很繁杂的。 什么时候去使用建造者模式 由上文可以得出在一些对象创建…...
一款全新的基于GPT4的Python神器,关键还免费
chartgpt大火之后,随之而来的就是一大类衍生物了。 然后,今天要给大家介绍的是一款基于GPT4的新一代辅助编程神器——Cursor。 它最值得介绍的地方在于它免费,我们可以直接利用它来辅助我们编程,真正做到事半功倍。 注意&#…...
上岸整理:2023前端面试题-vue,小程序,js,css
前端: 今年疫情结束后,前端行情不好,竞争压力很大,现在整理下个人认为面试很频繁的前端问题。 正题:无分类,因为面试官的问题也是随机的 一、基础 1、浏览器常见的报错信息与含义 2、304与204的区别&am…...
Linux下LED设备驱动开发(LED灯实现闪烁)
文章目录一、配置连接说明二、更新设备树(1)将led灯引脚添加到pinctrl子系统(2)设备树中添加LDE灯的设备树节点(3)编译更新设备树三、驱动开发与测试(1)编写设备驱动代码(…...
JavaEE-多线程中wait和notify都有哪些区别?
更多内容请点击了解 本篇文章将详细讲述wait和notify的区别,请往下看 目录 更多内容请点击了解 文章目录 一、wait和notify概念 二、wait()方法详解 三、notify()方法详解 代码如下: 3.1notifyAll()详解 四、wait和sleep的对比 一、wait和notif…...
中国建设银行沈阳铁西支行网站/个人网页制作完整教程
古人很伟大,说了一句符合统计学原理的话。 如果以95%作为置信度,人刚生下来时,应该是有95%的概率是一个好人,5%的概率是个坏蛋。如果人之初,性本恶的话,你走在马路上,遇到100个人,会…...
wordpress手机发布时间/优化排名
转载地址:http://blog.csdn.net/hairetz/article/details/4141043 一、预备知识—程序的内存分配 一个由C/C编译的程序占用的内存分为以下几个部分 1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值࿰…...
电商网站的成本/外贸独立站怎么建站
今天,不谈软件。这一篇,提供初学者一些产品选购上的建议。最近有一篇Scott Guthrie的Hard Drive Speed and Visual Studio Performance谈到了开发工具和硬盘之间的关系。这部分我也感触深刻,所以稍微提一下自己的看法。很久以前我在买NB的时候…...
建设购物网站/百度一下百度搜索
1,Socket通信原理图解 2,Socket套接字概述: 网络上具有唯一标识的IP地址和端口号组合在一起才能构成唯一能识别的标识符套接字。 通信的两端都有Socket。 网络通信其实就是Socket间的通信。 数据在两个Socket间通过IO流传输。 Socket在应…...
广东省交通建设监理检测协会网站/长沙建站优化
Mybatis(二):实现“增删改查”前言一、MyBatis的增删改查1、添加2、修改3、删除4、查询4.1 查询一个实体4.1 查询集合二、MyBatis获取参数值的两种方式(重点)1、单个字面量类型的参数2、多个字面量类型的参数3、map集合…...
广东品牌网站建设多少钱/看广告赚钱的平台
如果觉得我的算法分享对你有帮助,欢迎关注我的微信公众号“ 圆圆的算法笔记”,更多算法笔记和世间万物的学习记录~ 1. 背景 CTR预估是搜索、推荐、广告等领域基础且重要的任务,主要目标是预测用户在当前上下文环境下对某一个候选(视频、商品、广告等) 发生点击的概率。C…...