MySQL1.0
1.数据库的三大范式
范式是为了使数据库设计更加合理,规范,减少数据冗余和数据不一致等问题指定的一系列规则。
- 第一范式:第一范式要求数据表中的每一列都是不可分割的原子数据项。例如:有一个学生信息表,包含 “学生姓名” 和 “联系方式” 两列。如果 “联系方式” 这一列中既包含手机号码又包含电子邮箱地址,那么这个表就不符合第一范式。
- 第二范式:如果关系模式R属于第一范式,且非主键列完全依赖于主键,而不是依赖于主键的一部分,则称R属于第二范式。
- 第三范式:在第二范式的基础上,非主键列只依赖于主键,不依赖于其他非主键
2.MySQL的binlog有几种录入格式,分别有什么区别?
- statement格式(基于SQL语句的复制):binlog 会记录每一条修改数据的 SQL 语句。但是可能出现主从数据不一致的情况
- row格式(基于行的复制):这种格式会记录每一行数据的实际修改情况。例如,当执行
UPDATE users SET age = age + 1 WHERE id = 1;
时,binlog 会记录修改前用户id = 1
这一行的所有数据,以及修改后的所有数据。 - mixed格式(混合模式复制):是两种模式的混合,MySQL会根据具体的操作自动选择合适的记录方式。
3. MySQL存储引擎MyISAM与InnoDB区别?
MyISAM | InnoDB | |
事务 | 不支持事务 | 支持事务 |
存储结构 | MyISAM在磁盘上存储成三个文件,文件名和表明相同,分别为.frm(存储表定义).MYD(存储数据).MYI(存储索引) | InnoDB 存储引擎的数据文件和事务日志文件存储在磁盘上。 |
并发控制 | 只支持表级锁,意味着当一个用户对表进行写操作时,整个表都会被锁住 | 支持行级锁和表级锁,默认使用行级锁,因为它只锁住正在操作的行 |
数据恢复方面 | 表损坏后比较容易恢复,用check table检查表的完整性,用repair table来修复损坏的表 | 由于支持事务和日志功能,数据恢复能力更强,可以通过事务日志来保证数据的持久性和一致性 |
适用场景 | 适用于对事务要求不高,以读操作为主的应用场景 | 适用于对事务完整性要求较高,同时有大量的插入、更新和删除操作,并且存在并发访问的应用场景 |
4.MyISAM索引与InnoDB索引的区别?
索引结构差异:
- MyISAM:使用的是非聚集索引。在这种索引结构中,索引文件和数据文件是分离的,索引叶子节点存储的是指向数据记录的指针,数据存储在独立的数据文件中。
- InnoDB:默认采用聚集索引,数据按照主键的顺序存储在B+树的叶子节点上。
索引与数据存储的关系:
- MyISAM:由于索引和数据是分离的,在进行查询操作时,首先通过索引找到数据的指针,然后根据指针去数据文件中读取数据。
- InnoDB:数据和索引紧密结合在聚集索引中。进行主键查询时,可以直接定位到数据所在的物理位置,效率很高。
二级索引差异:
- MyISAM:二级索引叶子节点存储的是指向数据记录的指针,这个指针直接指向数据文件中的记录位置。所以在查询时,通过二级索引获取指针后,直接去数据文件读取数据。
- InnoDB:二级索引叶子节点存储的是主键值和索引列的值。当通过二级索引查询数据时,先在二级索引中找到主键值,然后再通过主键值在聚集索引中查找完整的数据记录。
5.什么是索引?
索引是一种数据结构,用于快速查找和访问数据库表的数据。
工作原理
- 以常见的B-树和B+树索引结构为例。当在数据库表中创建一个索引时,数据库管理系统会将表中的列值按照一定的顺序构建成树状结构。例如,对于一个存储用户信息的表,其中有 “用户 ID” 列,当在 “用户 ID” 列上创建索引后,数据库会把所有用户 ID 按照大小顺序构建成 B + 树结构。
- B+树是一种平衡树,它的每个节点存储多个索引值和指向子节点的指针
类型
- 主键索引:是一种特殊的索引,用于唯一标识表中的每一行数据。在关系型数据库中,每个表通常都有一个主键,主键索引就是基于这个主键列构建的。例如,在一个订单表中,订单 ID 是主键,主键索引可以确保每个订单 ID 都是唯一的,并且可以通过订单 ID 快速定位到对应的订单记录。
- 唯一索引:和主键索引类似,唯一索引也要求索引列的值是唯一的,但是一个表可以有多个唯一索引,而主键索引只有一个。比如,在用户表中除了用户 ID 作为主键索引外,用户的电子邮件地址可以设置为唯一索引,以确保每个用户的电子邮件地址在表中是唯一的。
- 普通索引:没有唯一性限制,它可以基于表中的任何列创建。普通索引主要用于提高查询性能.
- 组合索引:是基于表中的多个列创建的索引。组合索引在查询涉及多个列条件时非常有用。
作用
- 提高查询速度。
- 保证数据唯一性。
- 支持数据的排序和分组,因为索引中的数据是按照一定顺序存储的,这有助于在执行排序和分组操作时提高性能。
6.索引的设计原则
选择合适的列创建索引
- 频繁用于查询条件的列:如果一个列经常出现在where子句中作为查询条件,那么对该列创建索引可以显著提高查询效率。
- 用于连接操作的列:在多表连接查询中,用于连接的列应该创建索引,可以加速连接操作的执行。
- 用于排序和分组的列。
避免过度索引
- 考虑索引维护成本:索引虽然能提高查询速度,但在数据插入,更新,删除操作时,数据库需要同时维护索引结构。每次数据变动可能导致索引的重新调整,这会增加额外的开销。
- 权衡查询和维护的频率:如果在业务中,查询操作占主导地位,适当多创建一些索引可能是有益的。
使用组合索引的原则
- 遵循最左前缀原则。
- 选择合适的列顺序:在组合索引中,把选择性高的列放在前面。
考虑索引列的数据类型和长度
- 数据类型的一致性:在连接操作中,用于连接的列数据类型应该保持一致。
- 长度的适当性:对于字符类型的列创建索引,要考虑列的长度。
相关文章:
MySQL1.0
1.数据库的三大范式 范式是为了使数据库设计更加合理,规范,减少数据冗余和数据不一致等问题指定的一系列规则。 第一范式:第一范式要求数据表中的每一列都是不可分割的原子数据项。例如:有一个学生信息表,包含 “学生…...

IDEA使用HotSwapHelper进行热部署
目录 前言JDK1.8特殊准备DECVM安装插件安装与配置参考文档相关下载 前言 碰到了一个项目,用jrebel启动项目时一直报错,不用jrebel时又没问题,找不到原因,又不想放弃热部署功能 因此思考能否通过其他方式进行热部署,找…...
简单web项目自定义部署Dockerfile
本意就是弄清楚如何做web自定义项目的镜像。 基础镜像是java:8u261-jdk,其中java路径为/opt/java webdemo1.0.0.1-SNAPSHOT.jar文件里面已经包含了lib文件。 可以设置PATH也可以不设置,但是建议设置JAVA_HOME FROM swr.cn-north-4.myhuaweicloud.com…...

基础Web安全|SQL注入
基础Web安全 URI Uniform Resource Identifier,统一资源标识符,用来唯一的标识一个资源。 URL Uniform Resource Locator,统一资源定位器,一种具体的URI,可以标识一个资源,并且指明了如何定位这个资源…...
SpringBoot -拦截器Interceptor、过滤器 Filter 及设置
Spring Boot拦截器(Interceptor)的概念 - 在Spring Boot中,拦截器是一种AOP的实现方式。它主要用于<font style"color:#DF2A3F;">拦截请求</font>,在请求处理之前和之后执行特定的代码逻辑。与过滤器不同的…...

C++小问题
怎么分辨const修饰的是谁 是限定谁不能被改变的? 在C中,const关键字的用途和位置非常关键,它决定了谁不能被修改。const可以修饰变量、指针、引用等不同的对象,并且具体的作用取决于const的修饰位置。理解const的规则能够帮助我们…...
avcodec_alloc_context3,avcodec_open2,avcodec_free_context,avcodec_close
avcodec_alloc_context3 是创建编解码器上下文,需要使用 avcodec_free_context释放 需要使用avcodec_free_context 释放 /** * Allocate an AVCodecContext and set its fields to default values. The * resulting struct should be freed with avcodec_free_co…...

强化学习的几个主要方法(策略梯度、PPO、REINFORCE实现等)(下)
由于平台字数限制,上文:https://blog.csdn.net/ooblack/article/details/144198538 4. PPO算法 近端策略优化(proximal policy optimization,PPO)算法是OpenAI的默认强化学习算法,在RLHF中也用到了这个算…...

计算机网络:IP协议详细讲解
目录 前言 一、IP网段划分 二、IP报头 三、解决IP地址不足-->NAT技术 前言 在之前,我们学习了传输层中的TCP和UDP,重点是TCP协议,他帮我们解决具体到主机的哪个应用(端口)、传输的可靠(序列号、校验和…...

2024信创数据库TOP30之华为Gauss DB
近日,由DBC联合CIW/CIS共同发布的“2024信创数据库TOP30”榜单正式揭晓,汇聚了国内顶尖的数据库企业及其产品,成为展示中国信创领域技术实力与发展潜力的重要平台。在这份榜单中,华为的GaussDB凭借其卓越的技术实力、广泛的行业应…...

在线家具商城基于 SpringBoot:设计模式与实现方法探究
第3章 系统分析 用户的需求以及与本系统相似的在市场上存在的其它系统可以作为系统分析中参考的资料,分析人员可以根据这些信息确定出本系统具备的功能,分析出本系统具备的性能等内容。 3.1可行性分析 尽管系统是根据用户的要求进行制作,但是…...
九、Spring Boot集成Spring Security之授权概述
文章目录 往期回顾:Spring Boot集成Spring Security专栏及各章节快捷入口前言一、授权概述二、用户权限三、用户授权流程三、Spring Security授权方式1、请求级别授权2、方法级别授权 往期回顾:Spring Boot集成Spring Security专栏及各章节快捷入口 Spr…...
python之Flask入门—路由参数
语法: /routerName/<string:parameter_name> 其中:routerName代表路由名称<>中的string是参数类型,parameter_name为参数名称 参数类型: (1) string 接收任何没有斜杠(/&#x…...
txt地图格式处理
1、txt地图格式 [属性描述] 坐标系2000国家大地坐标系 几度分带3 投影类型高斯克吕格 计量单位米 带号38 精度0.001 转换参数,,,,,, [地块坐标] 5,475.888,1,测试地块1,面,J50G077061,公路用地,地下, J1,1,113.22222222222222,23.129111721551794 J2,1,113.2722314…...

《数据挖掘:概念、模型、方法与算法(第三版)》
嘿,数据挖掘的小伙伴们!今天我要给你们介绍一本超级实用的书——《数据挖掘:概念、模型、方法与算法》第三版。这本书是数据挖掘领域的经典之作,由该领域的知名专家编写,系统性地介绍了在高维数据空间中分析和提取大量…...
GitLab CVE-2024-8114 漏洞解决方案
漏洞 ID 标题严重等级CVE ID通过 LFS 令牌提升权限高CVE-2024-8114 GitLab 升级指南GitLab 升级路径查看版本漏洞查询 漏洞解读 此漏洞允许攻击者使用受害者的个人访问令牌(PAT)进行权限提升。影响从 8.12 开始到 17.4.5 之前的所有版本、从 17.5 开…...
request和websocket
当然,可以为你详细介绍 FastAPI 中的 Request 对象。Request 对象在 FastAPI 中扮演着重要的角色,负责封装来自客户端的 HTTP 请求信息。了解 Request 对象的使用方法和属性,有助于你更高效地处理请求数据、访问请求上下文以及进行各种操作。…...

一键生成后端服务,MemFire Cloud重新定义开发效率
作为开发者,特别是独立开发者和小团队成员,大家都知道开发的最大难题之一就是搭建后端服务。要让一个应用从零开始,除了前端的开发工作外,还需要考虑数据库、接口、认证、存储等等一系列繁琐的后台工作。而MemFire Cloud这款神器&…...

短视频矩阵的营销策略:批量混剪实现高效传播
在当今的商业环境中,短视频营销已成为企业获得市场份额的关键策略。随着消费者注意力的分散,传统营销方法的效果逐渐减弱。因此,短视频营销的重要性不言而喻。通过短视频,品牌能够以更为生动和直观的方式传递信息,从而…...

朗迪锋亮相2024人因工程与智能系统交互国际会议
2024年11月28日至30日,2024人因工程与智能系统交互国际会议在深圳隆重举办。此次大会以推动我国人因工程学科发展为目标,致力于加强国际学术交流,深入探讨人工智能时代的智能系统交互,旨在培育新质生产力,助力经济社会…...

盘古信息PCB行业解决方案:以全域场景重构,激活智造新未来
一、破局:PCB行业的时代之问 在数字经济蓬勃发展的浪潮中,PCB(印制电路板)作为 “电子产品之母”,其重要性愈发凸显。随着 5G、人工智能等新兴技术的加速渗透,PCB行业面临着前所未有的挑战与机遇。产品迭代…...

大型活动交通拥堵治理的视觉算法应用
大型活动下智慧交通的视觉分析应用 一、背景与挑战 大型活动(如演唱会、马拉松赛事、高考中考等)期间,城市交通面临瞬时人流车流激增、传统摄像头模糊、交通拥堵识别滞后等问题。以演唱会为例,暖城商圈曾因观众集中离场导致周边…...
Java多线程实现之Callable接口深度解析
Java多线程实现之Callable接口深度解析 一、Callable接口概述1.1 接口定义1.2 与Runnable接口的对比1.3 Future接口与FutureTask类 二、Callable接口的基本使用方法2.1 传统方式实现Callable接口2.2 使用Lambda表达式简化Callable实现2.3 使用FutureTask类执行Callable任务 三、…...

Java-41 深入浅出 Spring - 声明式事务的支持 事务配置 XML模式 XML+注解模式
点一下关注吧!!!非常感谢!!持续更新!!! 🚀 AI篇持续更新中!(长期更新) 目前2025年06月05日更新到: AI炼丹日志-28 - Aud…...
C++ 基础特性深度解析
目录 引言 一、命名空间(namespace) C 中的命名空间 与 C 语言的对比 二、缺省参数 C 中的缺省参数 与 C 语言的对比 三、引用(reference) C 中的引用 与 C 语言的对比 四、inline(内联函数…...

Springcloud:Eureka 高可用集群搭建实战(服务注册与发现的底层原理与避坑指南)
引言:为什么 Eureka 依然是存量系统的核心? 尽管 Nacos 等新注册中心崛起,但金融、电力等保守行业仍有大量系统运行在 Eureka 上。理解其高可用设计与自我保护机制,是保障分布式系统稳定的必修课。本文将手把手带你搭建生产级 Eur…...

【Zephyr 系列 10】实战项目:打造一个蓝牙传感器终端 + 网关系统(完整架构与全栈实现)
🧠关键词:Zephyr、BLE、终端、网关、广播、连接、传感器、数据采集、低功耗、系统集成 📌目标读者:希望基于 Zephyr 构建 BLE 系统架构、实现终端与网关协作、具备产品交付能力的开发者 📊篇幅字数:约 5200 字 ✨ 项目总览 在物联网实际项目中,**“终端 + 网关”**是…...

多种风格导航菜单 HTML 实现(附源码)
下面我将为您展示 6 种不同风格的导航菜单实现,每种都包含完整 HTML、CSS 和 JavaScript 代码。 1. 简约水平导航栏 <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport&qu…...

【MATLAB代码】基于最大相关熵准则(MCC)的三维鲁棒卡尔曼滤波算法(MCC-KF),附源代码|订阅专栏后可直接查看
文章所述的代码实现了基于最大相关熵准则(MCC)的三维鲁棒卡尔曼滤波算法(MCC-KF),针对传感器观测数据中存在的脉冲型异常噪声问题,通过非线性加权机制提升滤波器的抗干扰能力。代码通过对比传统KF与MCC-KF在含异常值场景下的表现,验证了后者在状态估计鲁棒性方面的显著优…...

android13 app的触摸问题定位分析流程
一、知识点 一般来说,触摸问题都是app层面出问题,我们可以在ViewRootImpl.java添加log的方式定位;如果是touchableRegion的计算问题,就会相对比较麻烦了,需要通过adb shell dumpsys input > input.log指令,且通过打印堆栈的方式,逐步定位问题,并找到修改方案。 问题…...