数据库面试题

MySQL数据库面试题(一)(MySQL Database Interview Questions I) MySQL数据库面试题涵盖了从基础知识到高级概念的广泛内容,包括数据库设计、事务处理、查询优化、存储引擎等多个方面。本章详细介绍MySQL数据库面试题希望对大家有帮助。 阅读详情

第一章:数据库事务

一、事务的特性:

①原子性:事务作为一个整体被执行,要么全部执行,要么全部不执行。
②一致性:保证数据库的状态从一个一致状态转变为另一个一致状态。
③隔离性:多个事务并发执行时,一个事务的执行并不影响其他事务的执行。
④持久性:一个事务一旦提交,对数据库的修改应该永久保存。

事务的并发访问问题(由隔离性引起):
①脏读:B事务读取到了A事务尚未提交的数据。
②不可重复读:一个事务中,两次读取的数据的内容不一致。
③幻读/虚读:一个事务中,两次读取的数据的数量不一致。

事务的隔离级别:
答:读未提交、读已提交、可重复读和序列化
①读取尚未提交的数据:哪个问题都不能解决。
②读取已经提交的数据:可以解决脏读。oracle默认。
③重读读取:可以解决脏读,不可重复读。mysql默认。
④串行化:都可以解决。---相当于锁表,一般没人用,效率太低。

二、数据库锁之悲观锁和乐观锁:

悲观锁的含义:锁如其名,他对世界是悲观的,他认为别人访问正在改变的数据的概率是很高的,所以从数据开始更改时就将数据锁住,直到更改完成才释放。

缺点:悲观锁可能会造成加锁的时间很长,并发性不好,特别是长事务,影响系统的整体性能。
悲观锁的实现方式:
  悲观锁,也是基于数据库的锁机制实现。 传统的关系型数据库里边就用到了很多这种锁机制,比如行锁,表锁等,读锁,写锁等,都是在做操作之前先上锁。

乐观锁的含义:他对世界比较乐观,认为别人访问正在改变的数据的概率是很低的,所以直到修改完成,准备提交所做的修改到数据库的时候才会将数据锁住, 当你读取以及改变该对象时并不加锁,完成更改后释放。乐观锁不能解决脏读的问题。
优点:乐观锁加锁的时间要比悲观锁短,大大提升了大并发量下的系统整体性能表现。
乐观锁的实现方式:

1、大多是基于数据版本(Version )记录机制实现, 需要为每一行数据增加一个版本标识(也就是每一行数据多一个字段 version),每次更新数据都要更新对应的版本号+1。

2、使用时间戳来实现
  同样是在需要乐观锁控制的 table 中增加一个字段,名称无所谓,字段类型使用时间戳(timestamp),和上面的 version 类似,也是在更新提交的时候检查当前数据库中数据的时间戳和自己更新前取到的时间戳进行对比,如果一致则 OK,否则就是版本冲突。

更加详细的数据库锁,请参考博客https://blog.youkuaiyun.com/zengxiantao1994/article/details/90141792

三、数据库索引

创建索引:

Create Index <Index-Name> On <Table_Name>(Column_Name);

什么样的字段适合建索引

唯一、不为空、经常被查询的字段、两表连接的字段。

创建索引可以大大提高系统的性能(优点):

1.通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。

2.可以大大加快数据的检索速度,这也是创建索引的最主要的原因。

3.可以加速表和表之间的连接,特别是在实现数据的参考完整性方面特别有意义。

4.在使用分组和排序子句进行数据检索时,同样可以显著减少查询中分组和排序的时间。

5.通过使用索引,可以在查询的过程中,使用优化隐藏器,提高系统的性能。

增加索引也有许多不利的方面(缺点):

1.创建索引和维护索引要耗费时间,这种时间随着数据量的增加而增加。

2.索引需要占物理空间,除了数据表占数据空间之外,每一个索引还要占一定的物理空间,如果要建立聚簇索引,那么需要的空间就会更大。

3.当对表中的数据进行增加、删除和修改的时候,索引也要动态的维护,这样就降低了数据的维护速度。

什么时候索引失效:

① Not Null/Null 如果某列建立索引,当进行Select * from emp where depto is not null/is null。 则会是索引失效。
② 索引列上不要使用函数,SELECT Col FROM tbl WHERE substr(name ,1 ,3 ) = 'ABC' 
或者SELECT Col FROM tbl WHERE name LIKE '%ABC%' 而SELECT Col FROM tbl WHERE name LIKE 'ABC%' 会使用索引。

③ 索引列上不能进行计算SELECT Col FROM tbl WHERE col / 10 > 10 则会使索引失效,应该改成
SELECT Col FROM tbl WHERE col > 10 * 10

④ 索引列上不要使用NOT ( != 、 <> )如:SELECT Col FROM tbl WHERE col ! = 10 
应该 改成:SELECT Col FROM tbl WHERE col > 10 OR col < 10 。

四、MySQL索引

MySQL中的索引设计成树,order by,group by,< >这种排序查询,遇到这种情况,hash就会退化成O(n),而树因为它的有序性依然保持O(log(n))高效率。

B树和B+树:

1.B+树的非叶子节点只保存索引,不保存行记录。而B树叶子节点和非叶子节点都存储索引和行记录,这样的话,同样的空间,B+树能存储更多的索引。这就意味着同样的数据,B+树比B树更”矮胖“,减少IO次数。
2.查询的时候,由于B树叶子节点和非叶子节点都存在行记录,也就是是说,B树查询其实是不稳定的(好的时候,只查根节点,坏的时候,查到叶子节点)。而B+树查询最终必须到叶子节点,查询销量稳定。
3.B树范围查询只能通过中序遍历查询来定位最小和最大值,而B+树通过链表就能实现,查询更方便。
综合起来:B+树比B树优势有三个:1.IO次数更少;2.查询性能更稳定;3.范围查询简便。

MYSQL的俩种存储引擎区别(事务、锁级别等等),各自的使用场所

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

Innodb存储引擎

使用的是B+树,他存在有一个主键索引和辅助索引两种索引,主键索引是在生成主键时就有的索引,他的叶子节点中存放的就是数据行,所以又称之为聚集索引。

而另一类索引,辅助索引,就是我们人为新建的索引,他的叶子节点中存放的是主键,当我们通过辅助索引查找到主键之后,再通过查找的主键去查找主键索引。

MyIsam存储引擎

MyIsam虽然他用的是B+树,但是没有用聚集索引,他的主键索引和辅助索引没有任何区别,都是在叶子中存储数据行的物理地址,这也使得他的读性能更高。

总结:

1、innodb支持事务,且默认是Autocommit,所以每一条SQL语句都会封装成一个事务,如果执行多条事务,最好加上begin和commit。MyIsam不支持事务,也就无法回滚;

2、另外Innodb支持行锁,MyIsam进行写操作会全表上锁,所以MyIsam的写操作性能会差些;

3、所以,在查询较多的表中,使用MyIsam较优,写比较多的表,使用Innodb;
 

数据仓库面试题 文章目录数据仓库的定义?数据仓库和数据库的区别?如何构建数据仓库?什么是数据中台?数据中台、数据仓库、大数据平台的关键区别是什么?基础能力上的区别业务能力上的区别大数据的一些相关系统?如何建设数据中台?数据湖的理解?数仓最重要的是什么?概念数据模型、逻辑数据模型、物理数据模型概念数据模型CDM逻辑数据模型LDM物理数据模型PDMSCD的常用处理方式?元数据的理解?技术元数据业务元数据元数据管理系统?元数据管理功能元数据管理标准元数据管理系统印象最深刻的项目是什么?为什么?亮点与优势?数仓如何确定主题域?主题 阅读详情

相关推荐

【数仓】数据仓库高频面试题题英文版(1)

数仓

每天更新大数据面经和技术 1448

数据库索引相关面试题

https://blog.youkuaiyun.com/qq_34988624/article/details/85838850 1、索引的底层实现原理和优化 B+树,经过优化的B+树,主要是在所有的叶子结点中增加了指向下一个叶子节点的指针,因此InnoDB建议为大部分表使用默认自增的主键作为主索引。 3、什么情况下设置了索引但无法使用 以“%”开头的LIKE语句,模糊匹配 OR语句前后没有同时使用索引 数据类型出现隐式转化(如varchar不加单引号的话可能会自动转换为int型) 4、简单描...

703

【数据仓库面试题合集①】数据建模高频面试题及解析

这是《数据仓库面试题合集》系列的第一篇,后续我还会围绕:ETL 设计与调度策略实时数仓建模思路SQL 性能调优数据治理与血缘追踪。

晴天彩虹雨的博客 1193

校招数据库笔试基础面试题

校招数据库笔试面试题汇总详解 原创 ...

不想搞技术的的cc不是好cc 407

2024年最全数据仓库|数据库面试题总结_面试题 数据仓库(1),【绝对干货】

聚簇索引:将数据存储与索引放到了一块,找到索引也就找到了数据非聚簇索引:将数据存储于索引分开结构,索引结构的叶子节点指向了数据的对应行,myisam通过key_buffer把索引先缓存到内存中,当需要访问数据时(通过索引访问数据),在内存中直接搜索索引,然后通过索引找到磁盘相应数据,这也就是为什么索引不在key buffer命中时,速度慢的原因。

2401_84166497的博客 689

【数仓面试】数据仓库专家面试题(上)

数据仓库专家面试题,涵盖初级、中级和高级水平问题,并附上详细答案。面试题将围绕工作职责(数据仓库需求对接、ETL 实施、性能优化、数据治理等 、数据仓库架构、3NF 多维模型、大数据生态、MySQL/NoSQL 等)展开。

在路上的专栏 555

复试面试题——数据库

什么是存储过程?用什么来调用?有哪些优缺点? 存储过程是一个预编译的SQL语句,优点是允许模块化的设计,就是说只需创建一次,以后在该程序中就可以调用多次。如果某次操作需要执行多次SQL,使用存储过程比单纯SQL语句执行要快。 调用: 1)可以用一个命令对象来调用存储过程。 2)可以供外部程序调用,比如:java程序。 优点: 1)存储过程是预编译过的,执行效率高。 2)存储过程的代码直接存放于...

weixin_44690183的博客 1144

【数仓面试】数据仓库专家面试题(中)

数据仓库面试题解析:从基础到高级 初级问题聚焦基础概念,如星型模型(扁平结构、查询快)与雪花模型(层级化、冗余少)的区别,以及元数据管理(支持数据追踪与治理)。 中级问题涉及实践设计,包括ETL调度系统(使用Airflow)、DWD层表结构(如电商订单星型模型)、Spark优化(分区调整与缓存)。 高级问题探讨复杂场景解决方案,如容灾方案(HDFS多副本+异地备份)、数据质量监控(Great Expectations工具)、ClickHouse性能优化(索引与分区调整)。 通过分层问题设计,全面考察候选人的

在路上的专栏 964

MySQL索引练习

表结构如下: writers表结构 字段名 数据类型 主键 外键 非空 唯一 自增 w_id SMALLINT(11) 是 否 是 是 是 w_name VARCHAR(255) 否 否 是 否 否 w_address VARCHAR(255) 否 否 否 否 否 w_age CHAR(2) 否 否 是 否 否 w_note VARCHAR(255) 否 否 否 否 否 (1)在数据库里创建表writers,存储引擎为MyISAM,创建表的同时在w_id字段上添加名称为UniqIdx的唯一索

weixin_45361917的博客 492

CANOCO5.0实现冗余分析(RDA)最详细步骤

在地理及生态领域会常使用RDA分析,RDA的实现路径也有很多,今天介绍一下CANOCO软件的实现方法。1.不同样点和环境因子之间夹角是锐角 是正相关,是钝角是负相关。2.夹角越大 说明相关性较小,夹角越小,相关性越大。得有不同的物种或者样点数值,再加上环境因子数据。3.箭头越长 相关性越大。时间调整到2010年。

Along6的博客 1万+

博途 V16(TIA portal V16)安装教程

本文提供了西门子TIA Portal V16软件的完整安装指南。内容包括百度网盘下载链接(提取码kv69)、详细安装步骤(关闭安全保护、典型安装设置)、授权破解方法,以及PLCSIM仿真功能的使用说明。重点演示了S7-1200 PLC程序的仿真过程,解析了仿真界面各元素功能,包括状态指示灯(RUN/STOP/ERROR)、操作按钮(RUN/STOP/MRES)和网络接口状态等。通过图文并茂的方式,完整呈现了从软件安装到PLC程序仿真的全流程操作。

lingchen1906的博客 6688

索引面试题复习

一、什么是索引? 一种用于提升查询效率的数据库对象; 通过快速定位数据的方法,减少磁盘I/O操作; 索引信息与表独立存放; ORACLE数据库自动使用和维护索引; 二、索引的分类 唯一性索引; 非唯一性索引; 三、索引的创建 自动创建:在定义主键或唯一键约束时系统会自动在相应的字段创建唯一性索引; 手动创建:用户可以在其他列上创建非唯一性索引; 四、索引优缺点 优点: 1.大大加快数据的检索速度; 2.创建唯一性索引,保证数据库表中每一行数据的唯一性; 3.加速表和表之间的连接; 4.在使用分组和排序子句进

Vaeling0818的博客 1013

PID详解

1、什么是PID及其作用 设定一个输出目标,反馈系统传回输出值,如与目标不一致,则存在一个误差,PID 根据此误差调整输入值,直至输出达到设定值. 为什么需要PID呢,比如控制温度,我们需要设置一个要达到的目标温度值,当将温度稳定在目标温度值 例如,我们希望水的目标温度值为70°,其希望无非就是可以快速而且无抖动的达到70°,并稳定在70° 如果我们使用普通的方式加热,当温度到达70°后就以及停止加热,岂不是简单快速,当然用在要求不高的场合也可以,但是如果要求更高的场合呢,会出现温度到达70°后......

weixin_48435215的博客 5万+

数据仓库面试题资源介绍:助你求职无忧

数据仓库面试题资源介绍:助你求职无忧 去发现同类优质开源项目:https://gitcode.com/ 数据仓库面试题资源,为数据仓库岗位求职量身定制,全面覆盖面试重点,提升实战能力。 项目介绍 在求职数据仓库相关岗位时,你是否感到面试的压力?面试官会问哪些问题?如何准备才能更有信心?《数据仓库面试题.pdf》正是为了解决这些问题而诞生。这份资源整理了数据仓库领域的常见面试题,旨在帮助求职者快速掌...

gitblog_06749的博客 397

GEE入门之路(从【初学者】角度,大白话)——附海面风速插值代码

非常初级的GEE入门教程!大白话!有手就行!附海面风速插值代码,克里金插值,时间插值。

weixin_46812066的博客 4085

【ComfyUI】SD1.5 + ControlNet 边缘检测融合动漫转真人

本文介绍了一个基于ComfyUI的动漫转真人图像生成工作流,通过多模型协同实现高质量的二次元图像转换。该工作流集成了Canny线稿预处理、ControlNet结构控制、VAE编码解码和人脸精细化处理等核心环节,采用majicmixRealistic_v7作为主模型,配合yolov8、SAM等辅助模型。整个流程包含11个标准化步骤,从图像输入、预处理到最终超分输出,通过ControlNet引导和CLIP语义控制确保生成图像的写实感和结构准确性,特别针对人脸区域进行专业优化,最终可输出高分辨率写实人像。

Mr数据杨 1121

数据仓库面试题集锦

数据仓库面试集锦

xiaodong1893的博客 432

【Python_Zebra斑马打印机编程学习笔记(二)】基于BarTender将btw文件转换为zpl文件

本文介绍如何基于 BarTender 软件将 btw 格式的文件转换为 zpl 格式的文件,有需要的读者可以点赞收藏,也欢迎在评论区进行讨论。

禾戊之昂的博客 3375

数据仓库工程师面试题集

数据仓库工程师面试题集 去发现同类优质开源项目:https://gitcode.com/ 此文档包含了一系列数据仓库工程师面试时可能遇到的问题。这些问题可能不是全面的,但它们覆盖了数据仓库领域的基础知识,是作者在学习过程中的笔记总结。该文档旨在帮助那些准备数据仓库相关职位的求职者复习和巩固关键概念。 文件内容 数据仓库基础概念 ETL(提取、转换、加载)流程 数据建模技术 数据仓库设计原则 常用...

gitblog_06798的博客 443

华为OD机考2025C卷 - 高矮个子排队(Java & Python& JS & C++ & C)

华为OD机考2025C卷 - 高矮个子排队。提供在线OJ刷题。Java、C++、Python、C语言、JavaScript题解,并提供完整思路讲解。

算法大师! 1680

100天精通Python(基础篇)——第4天:数据类型全解析_从基础到转换

数据类型全解析_从基础到转换

努力让自己发光,对的人才能迎着光而来 11万+

【数据仓库金典面试题】—— 包含详细解答

数据仓库是一个面向主题的、集成的、随时间变化的、但信息本身相对稳定的数据集合,用于支持管理决策过程。与传统数据库相比,数据仓库更注重数据的集成、非易失性和面向主题的组织方式。传统数据库主要用于支持企业的日常运营,如事务处理、客户服务和订单管理等,强调的是数据的实时性和事务处理性能;而数据仓库则主要用于支持企业的决策分析,如销售分析、市场预测和风险管理等,强调的是数据的全面性和历史性。维度是描述数据的属性或特征,如时间、地点、产品等,用于对数据进行分类和分组。度量。

摇光是颗星 2171

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

数据仓库面试题资源介绍

数据仓库面试题资源介绍 去发现同类优质开源项目:https://gitcode.com/ 欢迎来到我们的资源仓库!这里为你提供了一个关于数据仓库面试的重要学习资料——《数据仓库面试题.pdf》。以下是该文件的详细介绍: 资源简介 《数据仓库面试题.pdf》是一份专为数据仓库岗位面试准备的学习材料。内容涵盖数据仓库的基本概念、技术原理、实践应用等多个方面,旨在帮助求职者快速掌握数据仓库的核心知识,为...

gitblog_06759的博客 359

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

mysql数据库相关面试题_20个MySQL-DB相关的经典面试题

本文主要向大家介绍了20个MySQL中DB相关的经典面试题,通过具体的实例让大家了解,希望对大家学习MySQL有所帮助。1、MySQL的复制原理以及流程基本原理流程,3个线程以及之间的关联;2、MySQL中myisam与innodb的区别,至少5点(1)、问5点不同;(2)、innodb引擎的4大特性(3)、2者selectcount(*)哪个更快,为什么3、MySQL中varchar与char的...

weixin_39890633的博客 219

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

数据仓库|数据库面试题总结

文章目录 数据库基础知识 为什么要使用数据库 什么是SQL? 什么是MySQL? 数据库三大范式是什么 mysql有关权限的表都有哪几个 MySQL的binlog有有几种录入格式?分别有什么区别? 数据类型 mysql有哪些数据类型 引擎 MySQL存储引擎MyISAM与InnoDB区别 MyISAM索引与InnoDB索引的区别? InnoDB引擎的4大特性 存储引擎选择 索引 什么是索引? 索引有哪些优缺点? 索引使用场景(重点) 索引有哪几种类型? 索引的数据结构(b树,hash) 索引的基本原理 索引

Maynor的博客 910
上一篇: maven+ssm框架,自动生成实体类、DAO接口和Mapping映射文件
下一篇: 数据库的优化问题
sky_2247371097
博客等级 码龄8年 5粉丝 11原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值