当前位置: 首页 > news >正文

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&#xff0c;金币 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技术篇非常的简单基础&#xff0c;写它的原因很简单&#xff0c;因为现在很多的年轻人都很浮躁&#xff0c;刚入门就想学最牛x的&#xff0c;看不起基础的一些技术&#xff0c;比如说git操作、Linux基础命令&#xff0c;编程基础啥的。我身边有很多这样的年轻人&a…...

理解信号的

在日常生活中我们也经常面临许多的信号&#xff0c;手机通知、过红绿灯。。。这些信号在没有发生之前我们就知道这种信号产生我们需要干什么&#xff0c;那Linux里信号产生后&#xff0c;又怎么知道要做什么呢&#xff1f; -- 那当然是由程序员自己去设置啊 由于我们的用户空间…...

KubeSphere 容器平台高可用:环境搭建与可视化操作指南

Linux_k8s篇 欢迎来到Linux的世界&#xff0c;看笔记好好学多敲多打&#xff0c;每个人都是大神&#xff01; 题目&#xff1a;KubeSphere 容器平台高可用&#xff1a;环境搭建与可视化操作指南 版本号: 1.0,0 作者: 老王要学习 日期: 2025.06.05 适用环境: Ubuntu22 文档说…...

大话软工笔记—需求分析概述

需求分析&#xff0c;就是要对需求调研收集到的资料信息逐个地进行拆分、研究&#xff0c;从大量的不确定“需求”中确定出哪些需求最终要转换为确定的“功能需求”。 需求分析的作用非常重要&#xff0c;后续设计的依据主要来自于需求分析的成果&#xff0c;包括: 项目的目的…...

.Net框架,除了EF还有很多很多......

文章目录 1. 引言2. Dapper2.1 概述与设计原理2.2 核心功能与代码示例基本查询多映射查询存储过程调用 2.3 性能优化原理2.4 适用场景 3. NHibernate3.1 概述与架构设计3.2 映射配置示例Fluent映射XML映射 3.3 查询示例HQL查询Criteria APILINQ提供程序 3.4 高级特性3.5 适用场…...

【Java学习笔记】Arrays类

Arrays 类 1. 导入包&#xff1a;import java.util.Arrays 2. 常用方法一览表 方法描述Arrays.toString()返回数组的字符串形式Arrays.sort()排序&#xff08;自然排序和定制排序&#xff09;Arrays.binarySearch()通过二分搜索法进行查找&#xff08;前提&#xff1a;数组是…...

WordPress插件:AI多语言写作与智能配图、免费AI模型、SEO文章生成

厌倦手动写WordPress文章&#xff1f;AI自动生成&#xff0c;效率提升10倍&#xff01; 支持多语言、自动配图、定时发布&#xff0c;让内容创作更轻松&#xff01; AI内容生成 → 不想每天写文章&#xff1f;AI一键生成高质量内容&#xff01;多语言支持 → 跨境电商必备&am…...

UR 协作机器人「三剑客」:精密轻量担当(UR7e)、全能协作主力(UR12e)、重型任务专家(UR15)

UR协作机器人正以其卓越性能在现代制造业自动化中扮演重要角色。UR7e、UR12e和UR15通过创新技术和精准设计满足了不同行业的多样化需求。其中&#xff0c;UR15以其速度、精度及人工智能准备能力成为自动化领域的重要突破。UR7e和UR12e则在负载规格和市场定位上不断优化&#xf…...

【MATLAB代码】基于最大相关熵准则(MCC)的三维鲁棒卡尔曼滤波算法(MCC-KF),附源代码|订阅专栏后可直接查看

文章所述的代码实现了基于最大相关熵准则(MCC)的三维鲁棒卡尔曼滤波算法(MCC-KF),针对传感器观测数据中存在的脉冲型异常噪声问题,通过非线性加权机制提升滤波器的抗干扰能力。代码通过对比传统KF与MCC-KF在含异常值场景下的表现,验证了后者在状态估计鲁棒性方面的显著优…...

基于PHP的连锁酒店管理系统

有需要请加文章底部Q哦 可远程调试 基于PHP的连锁酒店管理系统 一 介绍 连锁酒店管理系统基于原生PHP开发&#xff0c;数据库mysql&#xff0c;前端bootstrap。系统角色分为用户和管理员。 技术栈 phpmysqlbootstrapphpstudyvscode 二 功能 用户 1 注册/登录/注销 2 个人中…...

elementUI点击浏览table所选行数据查看文档

项目场景&#xff1a; table按照要求特定的数据变成按钮可以点击 解决方案&#xff1a; <el-table-columnprop"mlname"label"名称"align"center"width"180"><template slot-scope"scope"><el-buttonv-if&qu…...

高效的后台管理系统——可进行二次开发

随着互联网技术的迅猛发展&#xff0c;企业的数字化管理变得愈加重要。后台管理系统作为数据存储与业务管理的核心&#xff0c;成为了现代企业不可或缺的一部分。今天我们要介绍的是一款名为 若依后台管理框架 的系统&#xff0c;它不仅支持跨平台应用&#xff0c;还能提供丰富…...