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

Java面试数据库

目录

一、关系型数据库 

数据库权限

表设计及创建

表数据相关

数据库架构优化

二、非关系型数据库

redis


今天给大家稍微整理了一下,内容有数据表设计的三大范式原则、sql查询如何优化、redis数据的击穿、穿透、雪崩等...,以及相关的面试题,希望即将面试的朋友们看了后能有帮助。

一、关系型数据库 

关系型数据库有SQLserver、Oracle、MySQL

问题一:关系型数据库与非关系型数据库区别?
都是数据库,用来存储数据;

关系型数据库存储数据是以表的形式进行存储,表之间有存在主外键关系,那也就是说数据之间存在关系;
非关系型数据库数据存储是以键值对的形式存储;数据之间没有关系/联系;


数据库权限

mysql

端口号:3306
数据库权限分类:mysql库
    user、db、table_priv表权限表、columns_priv
    生产环境:
    项目经理:Create、drop、grant、select、Update、delete、insert...
    项目组长:select、Update、delete、insert...
    普通开发:select
    
    测试环境:一般也是拥有所有权限
    
    开发环境:一切自己说了算,拥有所有权限


表设计及创建

工具:powerdesign

#三大范式

第一范式:列不可再分

例:地址填时湖南省长沙市岳麓区天顶街道浪琴湾清水22栋,用一个字段address存储,违反了第一范式,应该用四个字段Provence---湖南省 city---长沙市 area---岳麓区 address---天顶街道浪琴湾清水22栋。

为什么要遵循第一范式?

如果要统计湖南省的某物品销量时,可以直接统计Provence字段。

把表设计字段力度越大,未来应对变化的可能性越强。


第二范式:主键约束        非主属性与非主属性不能存在关系

例:购物车下单,多个订单项对应一个订单,当订单入库时,数据库表设计字段是以下两种
        违反:在建表中设计4个字段:名称 数量 单价 小计
        遵循:在建表中设计3个字段:名称 数量 单价

第三范式:外键约束        关联表的数据不一致
举例:看病流程表:Doctorid,userId
如果需要在页面上显示医生的姓名以及患者的姓名的话,需要连接看病流程表,医生表,患者档案表;有以下表设计

        违反:Doctorid,DoctorName,userId,userName
        遵循:Doctorid,userId


六大约束:

NOT NULL (非空约束)、unique(唯一约束)、primary key(主键约束)、Foreignkey(外键约束)、CHECK (检查约束)、default(默认约束)

表数据相关

问题二:drop/delete/truncate的区别

drop删除表和数据,delete删除数据和索引,truncate删除数据不包括索引。

如果现在有一个表,表里面有10条数据,drop连着表和数据一起删除,delete删除where条件后面的数据,当这个时候后面表再有新增的话,会在where已经删除数据的索引上进行新增;而truncate相反。
查询笔试题
链表查询:子查询、外连接、内连接、Union all

问题三:sql查询如何优化
            1.该sql语句是否建立索引
            2.如果有索引,是否失效  如:like '%%'已失效  
            3.索引泛滥    通过explain执行计划查询sql语句的执行效率

数据库架构优化

方法一:集群

(读写分离)
将数据库读与写解耦,一定程度上提高性能;
成本降低,可以资源在利用
技术实现:数据库中间件Mycat

方法二:分库分表

(水平分库)
场景:当遇到大量需要查询数据时,我们可以按月份分库,如果需要查找指定数据,可以按月份进行查询。      

实现:
1.每月凌晨00:00代码自动构建新表====>通过用任务调用框架quartz实现

create t_order_${month} as

select * from t_order where 1=2

2.insert into t_order_${month} values(?,?,?)
(垂直分库)

按照数据区分:热数据与冷数据分开,将一张表拆成两张一对一关系的表,分别是常用数据表与冷数据表。一般情况下,只需要查询常用数据表就行了,提升数据查询效率。如果需要查询冷数据表时,也可以进行连表查询。

二、非关系型数据库

redis

存储类型:string、set、hash、zset、list

作用:redis作为缓存就是为了减少对数据库的访问压力,当我们访问一个数据的时候,首先我们从redis中查看是否有该数据,如果没有,则从数据库中读取,将从数据库中读取的数据存放到缓存中,下次再访问同样的数据的是,还是先判断redis中是否存在该数据,如果有,则从缓存中读取,不访问数据库了。

#问题四:击穿、穿透、雪崩

图解如下

 

击穿------就是大量请求到达redis,正好该请求的key过期,大量请求到达Mysql数据库。

穿透-----指的是访问一个压根不存在的数据,那么每一次请求都会穿透redis,到达MySQL。
解决方法就是给不存在的数据设置一个默认值;

雪崩-----就是大量请求到达redis,访问的不同的key时在同一时间失效,如果在redis拿不到值,那么大量的请求会到达MySQL,导致MySQL宕机。
解决就是给不同的缓存key,设置不同的时间; 

相关文章:

Java面试数据库

目录 一、关系型数据库 数据库权限 表设计及创建 表数据相关 数据库架构优化 二、非关系型数据库 redis 今天给大家稍微整理了一下,内容有数据表设计的三大范式原则、sql查询如何优化、redis数据的击穿、穿透、雪崩等...,以及相关的面试题&#xff0…...

关于进行vue-cli过程中的解决错误的问题

好久没发文章了,直到今天终于开始更新了,最近想进军全端,准备学习下vue,但是这东西真的太难了,我用了一天的时间来解决在配置中遇到的问题!主要问题:cnpm文件夹和vue-cli文件夹的位置不对并且vu…...

Rockchip Linux USB Gadget

一:概述 USB Gadget 是运行在 USB Peripheral 上配置 USB 功能的子系统,正常可被枚举的 USB 设备至少有 3 层逻辑层,有些功能还会在用户空间多跑一层逻辑代码。Gadget API 就是具体功能和硬件底层交互的中间层。从上到下,逻辑层分布为: USB Controller: USB上最底层的软…...

Linux -文件系统操作与帮助命令

1、Linux -文件系统操作 df — 查看磁盘的容量 df -h —以人类可以看懂的方式显示磁盘的容量,易读 du 命令查看目录的容量 # 默认同样以块的大小展示 du # 加上 -h 参数,以更易读的方式展示 du -h-d 参数指定查看目录的深度: # 只查看 1…...

UMI 创建react目录介绍及配置

UMI 生成react项目目录介绍及配置 react项目目录介绍umi多种配置方案运行时配置app.ts 的使用 1、umi创建的项目目录大致如下 ├─package.json 配置依赖以及启动打包所需的命令 ├─.umirc.ts 配置文件,包含 umi 内置功能和插件的配置 ├── dist 打包后生成的…...

基于matlab使用机器学习和深度学习进行雷达目标分类

一、前言此示例展示了如何使用机器学习和深度学习方法对雷达回波进行分类。机器学习方法使用小波散射特征提取与支持向量机相结合。此外,还说明了两种深度学习方法:使用SqueezeNet的迁移学习和长短期记忆(LSTM)递归神经网络。请注…...

Protocol Buffers V3语法全解

目录protobuf介绍protobuf使用protoc命令语法定义消息类型指定字段类型分配字段编号指定字段规则添加更多消息类型注释保留字段从.proto文件生成了什么?值类型默认值枚举使用其他消息类型导入定义嵌套类型更新消息类型未知字段any任意类型oneofoneof 特性兼容性问题…...

MediaPipe之人体关键点检测>>>BlazePose论文精度

BlazePose: On-device Real-time Body Pose tracking BlazePose:设备上实时人体姿态跟踪 论文地址:[2006.10204] BlazePose: On-device Real-time Body Pose tracking (arxiv.org) 主要贡献: (1)提出一个新颖的身体姿态跟踪解决…...

CSS从入门到精通专栏简介

先让我们来欣赏几个精美的网站: Matt Brett - Freelance Web Designer and WordPress Expert ‎2022 Year in Review • Letterboxd NIO蔚来汽车官方网站 小米官网 Silk – Interactive Generative Art 大屏数据可视化 你是否也有过这样的“烦恼”: * …...

day01常用DOS命令

day01课堂笔记(第一章 Java开发环境的搭建) 1、常用的DOS命令 1.1、怎么打开DOS命令窗口 win键 r (组合键):可以打开“运行”窗口 在运行窗口文本框中输入: cmd 然后回车 1.2、什么是DOS命令呢? 在DOS命令…...

Java设计模式-生成器模式(建造模式)

1.1定义 维基百科定义 生成器模式(英:Builder Pattern)是一种设计模式,又名:建造模式,是一种对象构建模式。 它可以将复杂对象的建造过程抽象出来(抽象类别),使这个抽象…...

ansible的常用模块介绍

ansible 常用命令/usr/bin/ansible  #Ansibe AD-Hoc 临时命令执行工具,常用于临时命令的执行/usr/bin/ansible-doc #Ansible 模块功能查看工具/usr/bin/ansible-galaxy  #下载/上传优秀代码或Roles模块 的官网平台,基于网络的/usr/bin/ansible-playbo…...

你不会还不知道如何监测用户的网络是否在线吧?

我最近遇到一个需求,要给网站添加一个用户网络离线提醒。要求我们要实时监测用户的网络状态,当用户断网了,我们要立马给用户弹出一个断网提醒。 那你可能会问,为什么要做这么一个需求呢?用户断网了,网页不…...

ASM Quorum FailGroup RAC on Extended Distance Clusters

法定容错组,和它失去联系也不影响集群运行 参考: How to Manually Add NFS voting disk to an Extended Cluster using ASM in 11.2 (Doc ID 1421588.1) Mount Options for Oracle files when used with NFS on NAS devices (Doc ID 359515.1) RAC: Fre…...

VHDL语言基础-时序逻辑电路-触发器

目录 触发器: D触发器: 触发器的VHDL描述: 触发器的仿真波形如下:​编辑 时钟边沿检测的三种方法: 方法一: 方法二: 方法三: 带有Q非的D触发器: 带有Q非的D触发器的描述&am…...

也许你应该学学 postman了

使用 最简单的方法就是直接在浏览器中复制 Copy as cURL ,然后把数据导入 postman,然后 send ,收工。 我们这里拿 知乎首页 举例 在对应的请求下复制 cURL 打开 postman , 点击左上角的 Import , 选择Paste Raw Tex…...

VHDL语言基础-状态机设计-ASM图法状态机设计

目录 有限状态机的描述方法: ASM图: 状态转移图: 状态转移列表: MDS图: ASM图法状态机设计: ASM图的组成: 状态框: 判断框: 条件框: 状态框与条件框…...

Python文件的属性获取,重命名,目录的创建,显示和改变

1. 文件的属性获取 os.stat()函数可以获取文件的属性,该函数会返回一个和系统平台有关的stat_result对象, 具备一组可访问的属性,可以通过 stat_result.attribute 这样的格式来访问各个属性的值。 字 段描 述st_modeinode 保护模式st_inoin…...

好用的iPhone 数据恢复软件精选

随着 Apple 的 iTunes / iCloud 备份服务的兴起,我们总是假设这些信息在我们需要的时候可以随时访问。然而,事实是,意想不到的“不幸”发生了,比如 iOS 升级失败、忘记密码,或者更严重的情况,如进水或被盗。…...

Linux搭建redis集群6.x版本【超简单】

Linux搭建redis集群6.x版本【超简单】::::本文主要展示如何在一台服务器上搭建集群,核心思想就是复制实例,修改启动端口,实际上跟在几台服务器的操作都是一样的。一.安装redis wget http://dow…...

HarmonyOS6 ArkTS List 跳转准确

文章目录一、功能概述二、官方核心知识点1. 为什么普通 scrollTo 跳转不准?2. childrenMainSize3. ListScroller.scrollTo三、完整可运行代码四、代码核心逻辑解析1. 声明 ChildrenMainSize2. 配置不规则子项高度3. List 绑定 childrenMainSize4. 执行精准滚动跳转总…...

MOVA开源:AI同步生成音视频的全新突破

MOVA开源:AI同步生成音视频的全新突破 【免费下载链接】MOVA-360p 项目地址: https://ai.gitcode.com/OpenMOSS/MOVA-360p 导语:MOVA-360p模型正式开源,标志着AI音视频生成领域告别"无声时代",首次实现视频与音…...

GitHub中文界面插件:3分钟告别英文障碍,专注代码协作

GitHub中文界面插件:3分钟告别英文障碍,专注代码协作 【免费下载链接】github-chinese GitHub 汉化插件,GitHub 中文化界面。 (GitHub Translation To Chinese) 项目地址: https://gitcode.com/gh_mirrors/gi/github-chinese 你是否曾…...

nlp_structbert_sentence-similarity_chinese-large保姆级教程:前端React界面二次开发与定制化UI集成指南

nlp_structbert_sentence-similarity_chinese-large保姆级教程:前端React界面二次开发与定制化UI集成指南 1. 引言:为什么需要定制化UI? 如果你已经体验过基于StructBERT-Large的语义相似度工具,可能会发现它的基础界面虽然功能…...

AI教材生成法宝!低查重完成教材编写,快来获取高性价比方案!

选择AI教材生成工具,摆脱创作难题 在编写教材的过程中,选择合适的工具真是个让人头疼的问题!如果用办公软件,功能局限,很多格式和框架都需要自己手动调整;而如果试图使用一些专业的AI写教材工具&#xff0…...

UNet全维度改进模型库重磅发布

突破边界,赋能工业质检:UNet全维度改进模型库重磅发布 在工业缺陷检测领域,分割精度与效率的平衡始终是技术落地的核心命题。我们倾力打造**「UNet全维度改进模型库」,以37项原创性结构创新为引擎,深度融合注意力机制…...

《Origin画百图》之矩阵散点图进阶:从数据洞察到模型诊断

1. 矩阵散点图在数据科学中的进阶价值 第一次接触矩阵散点图时,我只把它当作一个简单的可视化工具。直到在一次房价预测项目中,我发现这个看似基础的图表竟然能帮我发现数据中的多重共线性问题,才真正意识到它的威力。矩阵散点图就像数据科学…...

交互式社会工程学攻击的演进与防御:基于2025年语音钓鱼激增现象的深度分析

摘要 随着人工智能生成内容(AIGC)技术的成熟与普及,网络攻击的初始访问向量正经历从自动化、非交互式向高度个性化、实时交互式的范式转变。本文基于Google Cloud Mandiant发布的《M-Trends 2026》报告数据,深入剖析了2025年语音钓…...

哈尔滨全屋定制厂家:值得信赖的筛选逻辑深度解析

哈尔滨全屋定制厂家筛选逻辑深度解析:5步找到值得信赖的本地品牌 “哈尔滨全屋定制厂家选择,不是看广告多响,而是这5个筛选逻辑能帮你避开90%的坑”。对于准备在哈尔滨做全屋定制的业主来说,选对厂家直接决定了最终效果与性价比&…...

如何用 AI + OpenSpec 驱动团队迭代开发

一个真实的痛点你是否遇到过这样的场景:写个正则表达式?AI 秒杀我。写个独立脚本?AI 真香。写个炫酷网页?AI 真牛 X!但是一旦将 AI 扔进一个庞大的微服务项目里,它似乎立刻降智为了“新手小白”&#xff1f…...