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

Java面试题-数据库

数据库相关

  1. MySQL的索引使用

    默认会有主键索引。

    索引分类:单值索引、复合索引、唯一索引

    详细文章

  2. MySQL explain 分析

    MySQL通过explain关键字分析SQL的执行计划。(Oracle通过EXPLAIN PLAN FOR sql

    IDSELECT_TYPETABLEPARTITIONSTYPEPOSSIBLE_KEYSKEYKEY_LENREFROWSFILTEREDEXTRA
    • ID:执行顺序由上至下,ID值越大越先执行。
    • SELECT_TYPE:查询的类型。
    • TABLE:输出结果集的表。
    • PARTITIONS:分区表命中的分区情况,非分区表为空。
    • TYPE:重要指标之一,访问类型。性能由好->差的连接类型为:system -> const -> eq_ref -> ref -> ref_or_null -> index_merge -> index_subquery -> range -> index -> all
    • POSSIBLE_KEYS:可能使用到的索引。
    • KEY:实际使用到的索引。
    • KEY_LEN:KEY的长度,越短越好。
    • REF:表连接的匹配条件。const:常数等值查询;func:表达式或函数或内部隐式转换。
    • ROWS:扫描行的数量。(估算)
    • FILTERED:条件过滤后,对比总数的百分比。
    • EXTRA:执行情况的说明和描述。

    详细文章

  3. 说说反模式设计

    数据库范式能够使数据库表的设计更加规范,但会导致业务模型涉及的表过多,一次查询需要多次关联,导致性能变差。出于对性能的保护,提出了反模式设计。核心思想是:空间换时间,数据冗余避免表关联过多产生的问题。

  4. 说说分库与分表设计

    一般表数据大于500万行或单表容量超过2GB。

    分库分表策略(分片策略):1、日期 2、Hash 3、范围 4、税率

    数据库中间件:MyCat 、 ShadingJDBC

    分库分表后查询逻辑:

    • 携带分片字段:对具体表进行分页查询。
    • 不携带分片字段:对每张表进行分页查询,然后通过中间件进行整合二次分页后返回给客户端。
  5. 分库与分表带来的分布式困境与应对之策

    产生的问题含有:跨库JOIN问题、排序分页问题、分布式ID问题

    跨库JOIN应对之策:

    1)建立全局表,存放所有模块可能依赖的字段,但只能存不怎么修改的字段。

    2)字段冗余设计,也就是反模式设计

    排序分页应对之策:

    1)增大PageSize

    2)禁止跳页查询,只允许下一页

    分布式ID应对之策:

    1)UUID

    2)数据库自增

    3)号段模式

    4)类似雪花算法

  6. 说说SQL优化之道

    1)定位慢SQL

    2)分析执行计划

    3)增加索引或修改SQL

    详细文章

  7. MySQL遇到的死锁问题

    1、本人经历过的数据库连接数导致生产死锁的问题

    正常逻辑为:A请求B数据->请求C数据->释放连接。

    数据库连接数为8,恰逢8个请求占有了连接数,连接未释放;此时新进的请求需要连接,相互等待资源释放,却又因为B->C连接数满无法等到,导致死锁。

  8. 存储引擎MyISAM和InnoDB

    MyISAM不支持事务

    由于多数系统都需要数据库的事务支持,MyISAM不支持事务,因此现有大部分都是InnoDB存储引擎。

    详细文章

  9. 数据库索引的原理

    Mysql以B+树为数据结构,通过树结构存储索引的数据,并在叶子结点存储索引的值。

  10. 为什么要使用B树

    查询效率高。

  11. 聚集索引与非聚集索引的区别

    聚集索引:一个表只能有一个。占用空间较非聚集索引小。

  12. limit 20000 加载很慢,如何处理

    MySQL的性能低是因为数据库要去扫描N + M条记录,然后又要放弃之前N 条记录,开销很大。

    1、缓存进行优化

    2、延迟关联:先通过limit查找索引字段,再通过原表和索引字段关联获得需要的数据

  13. 选择合适的分布式主键方案

    根据每个方案进行分析:

    1)UUID

    简单,长度过长,没有具体业务含义,不利于索引

    2)数据库自增

    2.1 单节点:创建一个表,每次插入一条数据,根据返回的自增主键为分布式主键。单节点有宕机风险

    2.2 集群:不同集群的自增设置起始值和步长。后期扩容时,需要考虑冲突。

    3)号段模式

    一批号段的主键ID,用完再次申请。

    4)类似雪花算法

    64位的ID,各大厂商有自己的一些开源框架,自行查看。

相关文章:

Java面试题-数据库

数据库相关 MySQL的索引使用 默认会有主键索引。 索引分类:单值索引、复合索引、唯一索引 详细文章 MySQL explain 分析 MySQL通过explain关键字分析SQL的执行计划。(Oracle通过EXPLAIN PLAN FOR sql) IDSELECT_TYPETABLEPARTITIONSTYPEPOSS…...

select 与 where、group by、order by、limit 子句执行优先级比较

当 select 和 其他三种语句的一者或者多者同时出现时,他们之间是存在执行先后顺序的。 他们的优先级顺序是:where > group by > select > order by > limit 目录 1、select 与 where 2、group by 与 where 、select 2、select 与 order…...

【Docker】用开源umami监控你的站点访问量

新年到,祝大家兔年吉祥!🎉 1.介绍 umami是一个开源的站点访问量监看程序,其支持docker部署到自己的服务器上。相比较百度等收费的网站信息监看,这种方式对于小站长来说更加实惠一些 2.docker安装的坑 2.1 docker-co…...

java环境配置

java环境配置步骤下载jdk安装jdk配置环境变量通过控制台命令验证配置是否成功大功告成安装教程: https://blog.csdn.net/m0_37220730/article/details/103585266 下载jdk 若不理解JDK/JRE/JVM的关系,可以点此查看初识Java(概念、版本迭代、…...

Linux系统服务:Apache安装及配置应用

目录 一、Apache安装 1、Apache简介 2、Yum安装 3、编译安装 4、服务管理 5、编译安装实现systemctl服务管理 二、Apache配置应用 1、基础应用 2、隐藏版本号 3、更改监听端口 一、Apache安装 1、Apache简介 Apache即阿帕奇是一款开源的、世界使用排名第一的Web服务…...

动态规划(Dynamic Programming)——背包问题

动态规划(Dynamic Programming) 背包问题 目录动态规划(Dynamic Programming)背包问题01背包问题输入格式输出格式数据范围输入样例输出样例:二维一维完全背包问题多重背包问题输入格式输出格式数据范围输入样例输出样例:数据范围二进制优化分组背包问题…...

JVM学习02:内存结构

JVM学习02:内存结构 1. 程序计数器 1.1、定义 Program Counter Register 程序计数器(寄存器) 作用:是记住下一条jvm指令的执行地址 特点: 是线程私有的不会存在内存溢出 1.2、作用 程序计数器物理上是由寄存器来实…...

6年软件测试经验,从我自己的角度理解自动化测试

接触了不少同行,由于他们之前一直做手工测试,现在很迫切希望做自动化测试,其中不乏工作5年以上的人。 本人从事软件自动化测试已经近6年,从server端到web端,从API到mobile,切身体会到自动化带来的好处与痛楚…...

三种方式查看linux终端terminal是否可以访问外网ping,curl,wget

方法1:ping注意不要用ping www.google.com.hk来验证,因为有墙,墙阻止了你接受网址发回的响应数据。即使你那啥过,浏览器都可以访问Google,terminal里面也是无法得到响应 百度在墙内,所以可以正常拿到响应信…...

【Call for papers】SIGCOMM-2023(CCF-A/计算机网络/2023年2月15日截稿)

ACM SIGCOMM is the flagship annual conference of the ACM Special Interest Group on Data Communication (SIGCOMM). ACM SIGCOMM 2023, the 37th edition of the conference series, will be held in New York City, US, September 10 - 14, 2023. 文章目录1.会议信息2.时…...

Chapter5:机器人感知

ROS1{\rm ROS1}ROS1的基础及应用,基于古月的课,各位可以去看,基于hawkbot{\rm hawkbot}hawkbot机器人进行实际操作。 ROS{\rm ROS}ROS版本:ROS1{\rm ROS1}ROS1的Melodic{\rm Melodic}Melodic;实际机器人:Ha…...

[acwing周赛复盘] 第 90 场周赛20230211 补

[acwing周赛复盘] 第 90 场周赛20230211 补 一、本周周赛总结二、 4806. 首字母大写1. 题目描述2. 思路分析3. 代码实现三、4807. 找数字1. 题目描述2. 思路分析3. 代码实现四、4808. 构造字符串1. 题目描述2. 思路分析3. 代码实现六、参考链接一、本周周赛总结 T1 模拟T2 模拟…...

数组

一、数组中重复的数字题目描述:在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。 例如,如果输入长度为7的数组{2,3,1…...

MicroBlaze系列教程(4):AXI_UARTLITE的使用

文章目录 @[toc]AXI_UARTLITE简介MicroBlaze添加串口IP常用函数使用示例参考资料工程下载本文是Xilinx MicroBlaze系列教程的第4篇文章。 AXI_UARTLITE简介 axi_uartlite是Xilinx提供axi-lite接口的通用串口IP核,用AXI-Lite总线接口和用户进行交互,速度可以根据不同的芯片调…...

GO 中的 init 函数

前言 go 语言中有一个非常神奇的函数 init ,它可以在所有程序执行开始前被执行,并且每个 package 下面可以存在多个 init 函数,我们一起来看看这个奇怪的 init 函数。 init 特性 init 函数在 main 函数之前执行,并且是自动执行&#xff1b…...

使用C#编写k8s CRD Controller

本文项目地址:k8s-crd - Repos (azure.com)CRDCRD指的是Custom Resource Definition。开发者更多的关注k8s对于容器的编排与调度,这也是k8s最初惊艳开发者的地方。而k8s最具价值的地方是它提供了一套标准化、跨厂商的 API、结构和语义。k8s将它拥有的一切…...

Ansible---playbook剧本

目录 引言:什么是playbook? 一、Playbook 1.1、playbook中的核心元素 1.2、playbook中的基础组件 1.3、playbook格式说明 1.4、实例:httpd服务剧本 二、playbook中的模块 2.1、Templates 模块 2.2、tags 模块 2.3、Roles 模块 引言&…...

Delphi 中TImageCollection和TVirtualImageList 控件实现high-DPI

一、概述RAD Studio允许你通过使用TImageCollection组件和TVirtualImageList组件,在你的Windows VCL应用程序中包含缩放、高DPI、多分辨率的图像。这两个组件位于Windows 10面板中:注意:如果你使用FireMonkey进行跨平台应用,请看T…...

Ros中如何给UR5配置自定义工具 | 在Rviz中给UR5机器人装载定义工具 | UR5配置自定义末端执行器

前言 在学习和项目研究的过程中,我需要在Ur5e上装上工具,以对现实场景进行仿真。网上会有一些装载/配置现成的夹爪,例如Robotiq等。但和我们装载自定义工具的场景还有些差异,因此写一篇博客记录,可能有偏差。如果有问…...

数据库 delete 表数据后,磁盘空间为什么还是被一直占用?

插: 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。 坚持不懈,越努力越幸运,大家一起学习鸭~~~ 最近有个上位机获取下位机上报数据的项目&#xff0c…...

docker-微服务篇

docker学习笔记1.docker简介1.1为什么会出现docker?1.2docker理念1.3虚拟机(virtual machine)1.4容器虚拟化技术1.5一次构建到处运行2.docker安装2.1前提条件2.2docker基本构成2.3docker安装步骤*2.4测试镜像3.docker常用命令3.1 启动docker3…...

图像优化篇

目录(1)矢量图(2)位图 2.1 分辨率2,图像格式格式选择建议:(1)矢量图 被定义为一个对象,包括颜色,大小,形状,以及屏幕位置等属性&…...

在surface go 2上安装ubuntu 20.04

在surface go 2上安装ubuntu 20.04 1.制作安装盘 下载ubuntu系统的iso文件 使用Rufus软件将u盘制作为ubuntu系统的安装盘 2.在surface go 2上操作 禁用快速启动 在 Windows 中,禁用“电源选项”中的“快速启动”>选择电源按钮的功能 禁用 Bitlocker 在 Wi…...

Java:SpringMVC的使用(1)

目录第一章、SpringMVC基本了解1.1 概述1.2 SpringMVC处理请求原理简图第二章、SpringMVC搭建框架1、搭建SpringMVC框架1.1 创建工程【web工程】1.2 导入jar包1.3 编写配置文件(1) web.xml注册DispatcherServlet(2) springmvc.xml(3) index.html1.4 编写请求处理器【Controller…...

自动化测试岗位求职简历编写规范+注意事项,让你的简历脱颖而出

目录 前言 1.个人信息 2.教育背景(写最高学历) 3.个人技能(按精通/掌握/熟练/了解层次来写) 4.工作经历 5.工作经验/项目经历 6.自我评价 总结 前言 挑选一个阅读舒适度不错的模板 HR和面试官看的简历多,都是快速阅读,舒适度特别重要&#xff1b…...

C 字符串

在 C 语言中,字符串实际上是使用空字符 \0 结尾的一维字符数组。因此,\0 是用于标记字符串的结束。空字符(Null character)又称结束符,缩写 NUL,是一个数值为 0 的控制字符,\0 是转义字符&#…...

【每日一题Day115】LC2335装满杯子需要的最短总时长 | 贪心

装满杯子需要的最短总时长【LC2335】 You have a water dispenser that can dispense cold, warm, and hot water. Every second, you can either fill up 2 cups with different types of water, or 1 cup of any type of water. You are given a 0-indexed integer array amo…...

Flink流计算处理-旁路输出

使用Flink做流数据处理时,除了主流数据输出,还自定义侧流输出即旁路输出,以实现灵活的数据拆分。 定义旁路输出标签 首先需要定义一个OutputTag,代码如下: // 这需要是一个匿名的内部类,以便我们分析类型…...

nginx正向代理的配置和使用

nginx正向代理的配置和使用 nginx正向代理的配置和使用nginx正向代理的配置和使用安装包准备下载nginx安装包下载正向代理模块的包版本与模块对照表部署nginx服务上传nginx包和正向模块包解压,改名安装nginx配置正向代理创建nginx用户检查nginx配置并启动nginx服务所在服务器验…...

Oracle Trace File Analyzer 介绍及简单使用

一、什么是Oracle Trace File Analyzer Oracle Autonomous Health Framework(AHF) 包含 Oracle ORAchk, Oracle EXAchk, and Oracle Trace File Analyzer(TFA). AHF工具包包含了Oracle常用的多种诊断工具,如 ORAchk, Oracle EXAchk, and Oracle Trace File Analyzer…...

哪个网站可以做设计比赛/自己如何制作一个网页

题目描述 众所周知&#xff0c;chenzeyu97有无数的妹子(阿掉&#xff01;>_<)&#xff0c;而且他还有很多恶趣味的问题&#xff0c;继上次纠结于一排妹子的排法以后&#xff0c;今天他有非(chi)常(bao)认(cheng)真(zhe)去研究一个奇怪的问题。有一堆他的妹子站成一排&…...

如何建设网站兴田德润可以吗/新闻发稿平台有哪些

内容&#xff1a;2019年大连市各类型POI。 数据格式&#xff1a;.csv格式&#xff0c;经纬度为wgs1984坐标系 数据类型&#xff1a;餐饮、公共设施、公司企业、购物、交通设施服务、金融保险服 务、科教文化服务、商务住宅、生活服务、体育休闲服务、医疗保健服务、政府机构及社…...

陕西建设网站/百度推广怎么看关键词排名

1.什么是反射&#xff1f; 反射就是把java类中各种成分映射成相应的类 2.在通过反射构造类的时候&#xff0c;并不知道constructor是什么类型&#xff0c;只知道是个Objec所以要向下转型 ①得到方法的时候需要类型 ②去调用方法的时候也需要传递同样类型的对象 Constructor…...

局网站建设方案word/九易建网站的建站流程

如何在项目中引入 framework 源代码 我们需要在项目中以源代码的方式引入 framewwork&#xff0c;是方便我们对框架进行修改。当 framework 构建出来以后&#xff0c;可以通过 Cocoapods 或者 .a 文件的方式引入到我们的项目中。但是如果这个框架需要在项目中进行修改、升级或…...

如何修改单页网站/个人网页制作完整教程

互联网安全是一个老生常谈的问题&#xff0c;而数据库更是信息资源的命脉所在&#xff0c;纵然SQL Server使用已经足够普遍&#xff0c;攻击手段更是层出不穷&#xff0c;作为最寻常使用的SQL语句&#xff0c;也可能因为注入攻击&#xff0c;而遭受恶意侵害&#xff0c;本文将简…...

重庆网站建设沛宣/seo推广沧州公司电话

文章目录1. 概述2. 示例1. 概述 一般情况下&#xff0c;大家使用redis去put/get都是先拿到一个jedis实例&#xff0c;然后操作&#xff0c;然后释放连接&#xff0c;这种模式是 请求-响应&#xff0c;请求-响应 这种模式&#xff0c;下一次请求必须得等第一次请求响应回来之后…...