当前位置: 首页 > 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…...

微信小程序之bind和catch

这两个呢,都是绑定事件用的,具体使用有些小区别。 官方文档: 事件冒泡处理不同 bind:绑定的事件会向上冒泡,即触发当前组件的事件后,还会继续触发父组件的相同事件。例如,有一个子视图绑定了b…...

MFC内存泄露

1、泄露代码示例 void X::SetApplicationBtn() {CMFCRibbonApplicationButton* pBtn GetApplicationButton();// 获取 Ribbon Bar 指针// 创建自定义按钮CCustomRibbonAppButton* pCustomButton new CCustomRibbonAppButton();pCustomButton->SetImage(IDB_BITMAP_Jdp26)…...

CentOS下的分布式内存计算Spark环境部署

一、Spark 核心架构与应用场景 1.1 分布式计算引擎的核心优势 Spark 是基于内存的分布式计算框架,相比 MapReduce 具有以下核心优势: 内存计算:数据可常驻内存,迭代计算性能提升 10-100 倍(文档段落:3-79…...

家政维修平台实战20:权限设计

目录 1 获取工人信息2 搭建工人入口3 权限判断总结 目前我们已经搭建好了基础的用户体系,主要是分成几个表,用户表我们是记录用户的基础信息,包括手机、昵称、头像。而工人和员工各有各的表。那么就有一个问题,不同的角色&#xf…...

vue3 定时器-定义全局方法 vue+ts

1.创建ts文件 路径&#xff1a;src/utils/timer.ts 完整代码&#xff1a; import { onUnmounted } from vuetype TimerCallback (...args: any[]) > voidexport function useGlobalTimer() {const timers: Map<number, NodeJS.Timeout> new Map()// 创建定时器con…...

docker 部署发现spring.profiles.active 问题

报错&#xff1a; org.springframework.boot.context.config.InvalidConfigDataPropertyException: Property spring.profiles.active imported from location class path resource [application-test.yml] is invalid in a profile specific resource [origin: class path re…...

springboot整合VUE之在线教育管理系统简介

可以学习到的技能 学会常用技术栈的使用 独立开发项目 学会前端的开发流程 学会后端的开发流程 学会数据库的设计 学会前后端接口调用方式 学会多模块之间的关联 学会数据的处理 适用人群 在校学生&#xff0c;小白用户&#xff0c;想学习知识的 有点基础&#xff0c;想要通过项…...

群晖NAS如何在虚拟机创建飞牛NAS

套件中心下载安装Virtual Machine Manager 创建虚拟机 配置虚拟机 飞牛官网下载 https://iso.liveupdate.fnnas.com/x86_64/trim/fnos-0.9.2-863.iso 群晖NAS如何在虚拟机创建飞牛NAS - 个人信息分享...

uniapp 小程序 学习(一)

利用Hbuilder 创建项目 运行到内置浏览器看效果 下载微信小程序 安装到Hbuilder 下载地址 &#xff1a;开发者工具默认安装 设置服务端口号 在Hbuilder中设置微信小程序 配置 找到运行设置&#xff0c;将微信开发者工具放入到Hbuilder中&#xff0c; 打开后出现 如下 bug 解…...

论文阅读:LLM4Drive: A Survey of Large Language Models for Autonomous Driving

地址&#xff1a;LLM4Drive: A Survey of Large Language Models for Autonomous Driving 摘要翻译 自动驾驶技术作为推动交通和城市出行变革的催化剂&#xff0c;正从基于规则的系统向数据驱动策略转变。传统的模块化系统受限于级联模块间的累积误差和缺乏灵活性的预设规则。…...