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人因工程与智能系统交互国际会议在深圳隆重举办。此次大会以推动我国人因工程学科发展为目标,致力于加强国际学术交流,深入探讨人工智能时代的智能系统交互,旨在培育新质生产力,助力经济社会…...
C++实现分布式网络通信框架RPC(3)--rpc调用端
目录 一、前言 二、UserServiceRpc_Stub 三、 CallMethod方法的重写 头文件 实现 四、rpc调用端的调用 实现 五、 google::protobuf::RpcController *controller 头文件 实现 六、总结 一、前言 在前边的文章中,我们已经大致实现了rpc服务端的各项功能代…...
label-studio的使用教程(导入本地路径)
文章目录 1. 准备环境2. 脚本启动2.1 Windows2.2 Linux 3. 安装label-studio机器学习后端3.1 pip安装(推荐)3.2 GitHub仓库安装 4. 后端配置4.1 yolo环境4.2 引入后端模型4.3 修改脚本4.4 启动后端 5. 标注工程5.1 创建工程5.2 配置图片路径5.3 配置工程类型标签5.4 配置模型5.…...
树莓派超全系列教程文档--(62)使用rpicam-app通过网络流式传输视频
使用rpicam-app通过网络流式传输视频 使用 rpicam-app 通过网络流式传输视频UDPTCPRTSPlibavGStreamerRTPlibcamerasrc GStreamer 元素 文章来源: http://raspberry.dns8844.cn/documentation 原文网址 使用 rpicam-app 通过网络流式传输视频 本节介绍来自 rpica…...
转转集团旗下首家二手多品类循环仓店“超级转转”开业
6月9日,国内领先的循环经济企业转转集团旗下首家二手多品类循环仓店“超级转转”正式开业。 转转集团创始人兼CEO黄炜、转转循环时尚发起人朱珠、转转集团COO兼红布林CEO胡伟琨、王府井集团副总裁祝捷等出席了开业剪彩仪式。 据「TMT星球」了解,“超级…...
1.3 VSCode安装与环境配置
进入网址Visual Studio Code - Code Editing. Redefined下载.deb文件,然后打开终端,进入下载文件夹,键入命令 sudo dpkg -i code_1.100.3-1748872405_amd64.deb 在终端键入命令code即启动vscode 需要安装插件列表 1.Chinese简化 2.ros …...
ESP32 I2S音频总线学习笔记(四): INMP441采集音频并实时播放
简介 前面两期文章我们介绍了I2S的读取和写入,一个是通过INMP441麦克风模块采集音频,一个是通过PCM5102A模块播放音频,那如果我们将两者结合起来,将麦克风采集到的音频通过PCM5102A播放,是不是就可以做一个扩音器了呢…...
04-初识css
一、css样式引入 1.1.内部样式 <div style"width: 100px;"></div>1.2.外部样式 1.2.1.外部样式1 <style>.aa {width: 100px;} </style> <div class"aa"></div>1.2.2.外部样式2 <!-- rel内表面引入的是style样…...
mac 安装homebrew (nvm 及git)
mac 安装nvm 及git 万恶之源 mac 安装这些东西离不开Xcode。及homebrew 一、先说安装git步骤 通用: 方法一:使用 Homebrew 安装 Git(推荐) 步骤如下:打开终端(Terminal.app) 1.安装 Homebrew…...
【Android】Android 开发 ADB 常用指令
查看当前连接的设备 adb devices 连接设备 adb connect 设备IP 断开已连接的设备 adb disconnect 设备IP 安装应用 adb install 安装包的路径 卸载应用 adb uninstall 应用包名 查看已安装的应用包名 adb shell pm list packages 查看已安装的第三方应用包名 adb shell pm list…...
【 java 虚拟机知识 第一篇 】
目录 1.内存模型 1.1.JVM内存模型的介绍 1.2.堆和栈的区别 1.3.栈的存储细节 1.4.堆的部分 1.5.程序计数器的作用 1.6.方法区的内容 1.7.字符串池 1.8.引用类型 1.9.内存泄漏与内存溢出 1.10.会出现内存溢出的结构 1.内存模型 1.1.JVM内存模型的介绍 内存模型主要分…...
