首页 > 其他分享 >4.2面试题

4.2面试题

时间:2023-04-02 16:45:04浏览次数:38  
标签:面试题 范式 读取 4.2 幻读 数据库 索引 主键

面试题

4.2面试题

1 数据库三大范式是什么
2 mysql有哪些索引类型,分别有什么作用
3 事务的特性和隔离级别
第一遍自我理解回答
数据库的三大范式:
数据库的范式:关系型数据库中,数据表设计的基本原则、规则称为范式
1NF:数据库最基本原则------->>!!!属性不可分割
2NF:满足第一范式,且不存在部分依赖
3NF:满足第二范式,且不存在传递依赖

在这里插入图片描述

第二遍自我理解回答
数据库三大范式:
范式:关系型数据库中,数据表设计的基本原则、规则称为范式,是我们在设计数据库中需要遵循的规则和方法
1NF:最基本的原则,属性不可再分割
    必须确保数据表中每个字段的值具有原子性,就是数据表中某个字段的值是不可拆分最小数据单元
    
2NF:满足第一范式,且不存在部分依赖
    在满足第一范式的基础上,还要满足表里的每条数据记录,都是可唯一标识的,而且非主键字段必须完全依赖主键,不能只依赖主键的部分
    
3NF:满足第二范式,且不存在传递依赖
    在满足第二范式的基础上,数据表中的所有非主键字段不能依赖其他非主键字段(意思就是所有的非主键之间不能有依赖关系,他们是互相独立的)
第一遍自我理解回答
mysql有哪些索引类型,分别有什么作用
索引:对于数据库中的一行或者多行值进行排序的一种结构------->>可以加快检索表中的数据
索引类型:
逻辑区分:
1.普通索引:最基本的索引类型,---->他没有唯一性之类的限制,仅用来加速查询
2.全文索引:用来查找文本中的关键字
3.唯一索引:唯一索引列的值必须唯一,允许有空值,目的是为了避免数据出现重复,创建唯一索引通常使用unique关键字
4.主键索引:主键索引是特殊的唯一索引,不允许值重复或者值为空
5.空间索引:对于空间数据类型的字段建立的索引,使用spatial关键字进行扩展,很少用到

存储方式区分:
1.哈希索引:可以根据索引列对应的哈希值的方法获取表的记录行
		  哈希索引可以一次定位,不需要像树索引一样逐层查找,高效是在“=”和“in”的条件下高效的
2.B-树索引:又称BTREE索引,目前大部分的索引都是采用B-树索引

实际使用区分:
1.单列索引:单列索引就是索引包含原表的一个列,在表中单个字段上创建索引
          单列索引可以是普通索引,也可以是唯一性索引,还可以是全文索引。只要保证该索引只对应一个字段即可。
例:CREATE INDEX index_addr ON tb_student(address(4));
2.多列索引:也叫组合索引或者多列索引,,是将原表的多个列共同组合成一个索引,在表的多个字段上创建索引
B-树索引
B-树索引是一个典型的数据结构,其包含的组件有以下几个:
叶子节点:包含的条目直接指向表里的数据行,叶子节点之间彼此相连,一个叶子节点有一个指向下一个叶子节点的指针
分支节点:包含的条目指向索引里其他分支节点或者叶子节点
根节点:一个B-树索引只有一个根节点,实践上就是位于树的最顶端的分支节点

基于这种树形数据结构,表中的每一行都会在索引上有一个对应值。因此,在表中进行查询的时候,可以根据索引值一步一步定位到数据所在行
第一遍自我理解回答

img

事务的特性和隔离级别
事务的四大特性:
原子性:数据库中的事物执行是作为原子粒度,即不可再分,整个语句要么执行,要么不执行
一致性:事物开始之前和事物结束以后,数据库的完整性约束没有被破坏
隔离性:事物的执行是互不干扰的
永久性:该事物对于数据库所作的更改是永久保存到数据库中的,不会回滚
事务的并发问题:
1.脏读:事物A读取了事物B更新的数据,然后B进行了回滚,A读取到的数据是脏数据
2.不可重复读:事物A多次读取同一数据,事物B 在A读取的过程中对数据进行了更新并提交,导致A多次读取同一数据时,结果不一致
3.幻读:指的是一个事物在前后两次查询同一个范围的时候,后一个查询看到了前一次没有看到的行
(系统管理员A将数据库中所有学生的成绩从具体分数改为ABCDE等级,但是系统管理员B就在这个时候插入了一条具体分数的记录,当系统管理员A改结束后发现还有一条记录没有改过来,就好像发生了幻觉一样,这就叫幻读。)

不可重复读和幻读很容易混淆的,不可重复读侧重于修改,幻读侧重于新增或者删除
不可重复读------》》解决需要锁满足条件就好了
幻读--------》》解决幻读需要表锁

!!!Innodb存储引擎已解决幻读
MySQL事务隔离级别:
读取未提交:最低的隔离级别,允许读取尚未提交的数据变更,可能造成脏读,不可重复读,幻读

读取已提交:允许读取并发事物已经提交的数据,可以避免脏读,但是可能造成不可重复读,幻读

可重复读:对于同一字段多次读取的结果都是一致的,除非本身事物修改,可避免脏读和不可重复读,但是可能会造成幻读
    
可串行化:最高的隔离级别,完全服从隔离级别,所有的事物依次执行,可以避免脏读、不可重复读、幻读

image

标签:面试题,范式,读取,4.2,幻读,数据库,索引,主键
From: https://www.cnblogs.com/zx0524/p/17280731.html

相关文章

  • Elasticsearch 学习-面试题目
    Elasticsearch学习-面试题目第7章Elasticsearch面试题7.1为什么要使用Elasticsearch?系统中的数据,随着业务的发展,时间的推移,将会非常多,而业务中往往采用模糊查询进行数据的搜索,而模糊查询会导致查询引擎放弃索引,导致系统查询数据时都是全表扫描,在百万级别的数据库中,查......
  • Redis面试题
    NoSQL是什么?NoSQL(NotOnlySQL的缩写)泛指非关系型的数据库,主要针对的是键值、文档以及图形类型数据存储。并且,NoSQL数据库天生支持分布式,数据冗余和数据分片等特性,旨在提供可扩展的高可用高性能数据存储解决方案。一个常见的误解是NoSQL数据库或非关系型数据库不能很好地存......
  • 面试题45(Java)-把数组排成最小的数(中等)
    题目:输入一个非负整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。示例1:输入:[10,2]输出:"102"示例 2:输入:[3,30,34,5,9]输出:"3033459"提示:0<nums.length<=100说明:输出结果可能非常大,所以你需要返回一个字符串而不......
  • Java IO面试题
    JavaIO概览JavaIO流的40多个类都是从如下4个抽象类基类中派生出来的。InputStream/Reader:所有的输入流的基类,前者是字节输入流,后者是字符输入流。OutputStream/Writer:所有输出流的基类,前者是字节输出流,后者是字符输出流。InputStream字节输入流InputStream用于......
  • 跨屏零代码saas建站平台2023.4.2发布更新
    跨屏零代码saas建站平台2023.4.2发布更新,主要更新了官网的UI,使其更加的简约,我们花了3年时间开发了这款零代码saas建站平台,然后正式运营以后,一直在致力于做简化工作,也就是化繁为简,不仅局限于官网的模板ui简化,以及用户的后台简化,注册登录、发布操作流程的简化,以及模板的简化。跨屏平......
  • 这可能是最全面的Spring面试题总结了
    Spring是什么?Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。Spring的优点通过控制反转和依赖注入实现松耦合。支持面向切面的编程,并且把应用业务逻辑和系统服务分开。通过切面和模板减少样板式代码。声明式事务的支持。可以从单调繁冗的事务管理代码中解脱......
  • sql面试题目
    sql逻辑:createtableods.product(product_idint,product_namevarchar(255))ENGINE=InnoDBDEFAULTCHARSET=utf8mb3;insertintoods.productvalues(1,'LCPhone');insertintoods.productvalues(2,'LCT-Shirt');select*fromods.product;cre......
  • 别逛了,送你一份2023年Java核心篇JVM(虚拟机)面试题整理
    Java内存区域说一下JVM的主要组成部分及其作用?JVM包含两个子系统和两个组件,两个子系统为Classloader(类装载)、Executionengine(执行引擎);两个组件为Runtimedataarea(运行时数据区)、NativeInterface(本地接口)。●Classloader(类装载):根据给定的全限定名类名(如:java.......
  • 面试题
    目录可变类型与不可变类型常用的魔法方法类中的装饰器双写一致性断点续传内网穿透缓存击穿http与https数据库如何处理的?用过什么云产品看看数据库celery多线程mysql1千万w,性别字段(男女),查询时候,这个字段要不要加索引实现踢下线实现黑名单功能深浅拷贝是什么魔法方法new和init有什......
  • 测试面试题
    软件测试1、软件的定义?软件是一系列按特定顺序组织的计算机数据和指令的集合,包括与计算机系统操作有关的程序、规程、规则、文件、文档和数据。软件被划分为系统软件、应用软件和中间件。软件不仅包括电脑程序,还包括与这些程序相关的文档,可简单地理解为程序和文档的集合。2、......