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

Mysql知识点整理

一、关系型数据库

mysql属于关系型数据库,它具备以下特点
关系模型:数据以二维表格形式存储,易于理解和使用。
数据一致性:通过事务处理机制(ACID特性:原子性、一致性、隔离性、持久性)保证数据的一致性和完整性。
数据完整性:支持定义各种约束条件(如主键、外键、唯一性、非空等),确保数据的正确性和有效性。
SQL支持:使用SQL(Structured Query Language)作为标准的数据库查询语言,可以方便地进行数据的检索、更新和管理。
并发控制:允许多个用户同时访问数据库,通过锁机制等手段防止数据冲突。
安全性:支持用户权限管理和认证机制,保护敏感数据的安全。

二、MySQL的字段类型

数值类型:整型(TINYINT、SMALLINT、MEDIUMINT、INT 和 BIGINT)、浮点型(FLOAT 和 DOUBLE)、定点型(DECIMAL)
字符串类型:CHAR、VARCHAR、TINYTEXT、TEXT、MEDIUMTEXT、LONGTEXT、TINYBLOB、BLOB、MEDIUMBLOB 和 LONGBLOB 等。
日期时间类型:YEAR、TIME、DATE、DATETIME 和 TIMESTAMP 等。

三、MySQL的存储引擎

默认引擎:InnoDB
特点:支持事务、支持外键、支持行级锁、但保存不了具体的行数、支持数据崩溃的数据恢复(redo log)、支持MVCC
Mysql事务
是一组针对数据库操作的集合,要么全部执行完成,要么不执行。
事务的特性ACID
1.原子性:一个数据库事务的操作全部完成,或者全部不完成
2.隔离性:并发的数据库事务之间相互独立
3.持久性:事务对数据库的改变是持久的,即使发生故障也不影响
4.一致性:事务操作,对数据保持一致

并发事务影响
多个事务并发运行,可能会互相造成影响,A事务操作为完成时,B进行了某种操作,可能会对A事务的结果造成一定的影响。
1.脏读(Dirty Read):
发生情况:一个事务读取了另一个未提交事务的数据。
影响:如果后续事务回滚,那么先前事务读取的数据就会变得无效,这可能导致不一致的数据状态。
2.幻读(Phantom Read):
发生情况:一个事务读取同一范围的数据多次,但每次读取的结果不同,因为在两次读取之间有另一个事务插入了新的记录。
影响:即使两次查询的条件完全相同,但结果却不同,就像出现了“幻影”记录一样。
3.丢失更新(Lost Update):
发生情况:两个或多个事务同时对同一数据项进行修改,但其中一个事务所做的修改被另一个事务覆盖,导致第一个事务的修改丢失。
影响:最新的数据可能不会反映所有事务所做的修改。
4.不可重复读(Non-repeatable Read):
发生情况:一个事务内多次读取同一数据,在两次读取之间另一个事务更新了该数据,导致第一次读取和第二次读取的结果不一致。
影响:同一事务内的不同时间点读取同一数据可能得到不同的结果。

隔离级别
读未提交(Read Uncommitted):最低的隔离级别,允许脏读、幻读和不可重复读。
读已提交(Read Committed):允许幻读和不可重复读,但禁止脏读。
可重复读(Repeatable Read):禁止脏读和不可重复读,但可能允许幻读。
序列化(Serializable):最高的隔离级别,完全避免了脏读、幻读和不可重复读,但可能导致更多的锁定,从而影响性能。

默认级别为可重复读,实现原理为**多版本并发控制(MVCC,Multi-Version Concurrency Control)**来实现可重复读隔离级别。MVCC 允许事务看到不同时间点的数据版本,并且这些版本可以在事务的生命周期内保持不变。

四、MySQL的索引

1.索引介绍
索引是一种数据结构,合理利用便于提升Mysql性能
优点:加快数据的检索速度和IO次数
缺点:创建和维护索引需要时间,消耗资源。索引占用物理内存空间。
2.索引的底层结构
B+树
B+树只有叶子节点存放 key 和 data,其他内节点只存放 key。
B+树的叶子节点有一条引用链指向与它相邻的叶子节点。
而 B+树的检索效率更加稳定了,任何查找都是从根节点到叶子节点的过程,叶子节点的顺序检索很明显
B+树的范围查询,对链表进行遍历。
3.索引的分类
按照底层存储方式角度划分:
聚簇索引(聚集索引):索引结构和数据一起存放的索引,InnoDB 中的主键索引就属于聚簇索引。
非聚簇索引(非聚集索引):索引结构和数据分开存放的索引,二级索引(辅助索引)就属于非聚簇索引。
按照应用维度划分:
主键索引:加速查询 + 列值唯一(不可以有 NULL)+ 表中只有一个。
普通索引:仅加速查询。唯一索引:加速查询 + 列值唯一(可以有 NULL)。
覆盖索引:一个索引包含(或者说覆盖)所有需要查询的字段的值。
联合索引:多列值组成一个索引,专门用于组合搜索,其效率大于索引合并。
全文索引:对文本的内容进行分词,进行搜索。
最左匹配原则
最左前缀匹配原则指的是在使用联合索引时,MySQL 会根据索引中的字段顺序,从左到右依次匹配查询条件中的字段。如果查询条件与索引中的最左侧字段相匹配,那么 MySQL 就会使用索引来过滤数据,这样可以提高查询效率。
如何选取字段创建索引
不为 NULL 的字段、被频繁查询的字段、被作为条件查询的字段、频繁需要排序的字段、被经常频繁用于连接的字段
索引失效的场景
创建了组合索引,但查询条件未遵守最左匹配原则;
在索引列上进行计算、函数、类型转换等操作;
以 % 开头的 LIKE 查询比如 LIKE ‘%abc’;
查询条件中使用 OR,且 OR 的前后条件中有一个列没有索引,涉及的索引都不会被使用到;.
如何知道语句是否命中索引.
在sql语句前加上explain命令,利用查询优化器、运行后可展示语句的详情

五、MySQL的日志

错误日志(Error Log)
记录 MySQL 服务的启动、关闭过程以及运行过程中发生的错误信息。如果 MySQL 在运行中遇到故障或错误信息,错误日志会详细记录这些问题,便于排查故障。
通用查询日志(General Query Log)
记录客户端对 MySQL 所发出的每一条 SQL 语句。这些日志会详细记录所有的查询内容,通常用于排查 SQL 执行问题或监控查询行为。
慢查询日志(Slow Query Log)
记录执行时间超过指定阈值的 SQL 语句,常用于优化性能。可以通过配置参数 long_query_time 来设置慢查询的时间标准。
二进制日志(Binary Log)
记录所有导致数据更改的语句(如 INSERT、UPDATE、DELETE),通常用于数据恢复、主从复制和审计目的。
中继日志(Relay Log)
这是从库在主从复制中使用的日志。从库会从主库获取二进制日志,并将其存储为中继日志,从中读取并执行数据更改操作。
撤销日志(Undo Log)
主要用于事务的回滚和 MVCC(多版本并发控制),记录事务未提交前的数据状态,用于在事务回滚时恢复数据。
事务日志(Transaction Log / Redo Log)
用于记录事务提交后的更改,主要用于崩溃恢复,在系统重启时重新执行已提交的事务以确保数据一致性。

六、MySQL读写分离

单个数据库压力过大,导致性能降低,此时需要多个数据库进行读写分离。将多个数据库分为主从库,将读操作和写操作分离,提高数据库的性能。

一般数据库组由一个数据库负责向数据库进行写操作,其余数据库负责完成读操作。

实现原理
通过二进制日志文件MySQL的binlog日志、从库的relay log日志实现主从复制,文件中记录了影响MySQL数据变化的所有语句。根据日志对数据进行同步。
1.主库将数据库中数据的变化写入到 binlog
2.从库连接主库
3.从库会创建一个 I/O 线程向主库请求更新的 binlog
4.主库会创建一个 binlog dump 线程来发送 binlog ,从库中的 I/O 线程负责接收
5.从库的 I/O 线程将接收的 binlog 写入到 relay log 中。
6.从库的 SQL 线程读取 relay log 同步数据到本地(也就是再执行一遍 SQL )。

七、分库分表

1.分库
垂直分库:根据业务内容将数据划分为多个库
水平分库:根据业务内容将数据表进行切分,并放置在不同的数据库中
2.分表
垂直分表:拆分数据表中的字段,放置在新表中
水平分表:拆分数据表中的行,放置在多张表中,解决单一表数据过大的问题。

相关文章:

Mysql知识点整理

一、关系型数据库 mysql属于关系型数据库,它具备以下特点 关系模型:数据以二维表格形式存储,易于理解和使用。 数据一致性:通过事务处理机制(ACID特性:原子性、一致性、隔离性、持久性)保证数据…...

ISA-95制造业中企业和控制系统的集成的国际标准-(4)

ISA-95 文章目录 ISA-95ISA-95 & MES一、ISA-95是MES的系统标准二、ISA-95对MOM/MES的活动定义三、MES/MOM如何遵循ISA-95四、MES/MOM功能划分和边界定义 ISA-95 & MES ISA-95 作为企业系统与控制系统集成国际标准,提供了一个通用的框架,有助于…...

Redis篇(Redis原理 - 数据结构)(持续更新迭代)

目录 一、动态字符串 二、intset 三、Dict 1. 简介 2. Dict的扩容 3. Dict的rehash 4. 知识小结 四、ZipList 1. 简介 2. ZipListEntry 3. Encoding编码 五、ZipList的连锁更新问题 六、QuickList 七、SkipList 八、RedisObject 1. 什么是 redisObject 2. Redi…...

Disco公司的DBG工艺详解

知识星球里的学员问:可以详细介绍下DBG工艺吗?DBG工艺的优势在哪里? 什么是DBG工艺? DBG工艺,即Dicing Before Grinding,划片后减薄。Dicing即金刚石刀片划切,Grinding即背面减薄,…...

大学学校用电安全远程监测预警系统

1.概述: 该系统是基于移动互联网、云计算技术,通过物联网传感终端,将办公建筑、学校、医院、工厂、体育场馆、宾馆、福利院等人员密集场所的电气安全数据,实时传输至安全用申管理服务器,为用户提供不间断的数据跟踪&a…...

C++网络编程之IP地址和端口

概述 IP地址和端口共同定义了网络通信中的源和目标。IP地址负责将数据从源设备正确地传输到目标设备,而端口则确保在目标设备上数据被交付到正确的应用或服务。因此,在网络编程中,IP地址和端口是密不可分的两个概念,共同构成了网络…...

陶瓷4D打印有挑战,水凝胶助力新突破,复杂结构轻松造

大家好!今天要和大家聊聊一项超酷的技术突破——《Direct 4D printing of ceramics driven by hydrogel dehydration》发表于《Nature Communications》。我们都知道4D打印很神奇,能让物体随环境变化而改变形状。但陶瓷因为太脆太硬,4D打印一…...

网络安全的详细学习顺序

网络安全的详细学习顺序可以按照由浅入深、逐步递进的原则进行。以下是一个建议的网络安全学习顺序: 1. 基础知识学习 计算机网络基础:理解网络架构、TCP/IP协议栈、OSI七层模型、数据链路层到应用层的工作原理。 操作系统基础:了解Window…...

人工智能与机器学习原理精解【28】

文章目录 随机森林随机森林详解随机森林的详细解释1. 随机森林的基本概念、原理和应用场景、公式和计算2. 随机森林在机器学习、深度学习等领域的重要性3. 实际应用案例及其优势和局限性4. 随机森林在解决实际问题中的价值和意义 随机森林局限性的详细归纳随机森林主要的应用领…...

StarRocks 中如何做到查询超时(QueryTimeout)

背景 本文基于 StarRocks 3.1.7 主要是分析以下两种超时设置的方式: SESSION 级别 SET query_timeout 10;SELECT sleep(20);SQL 级别 select /* SET_VAR(query_timeout10) */ sleep(20); 通过本文的分析大致可以了解到在Starrocks的FE端是如何进行Command的交互以及数据流走…...

Windows 开发工具使用技巧 Visual Studio使用安装和使用技巧 Visual Studio 快捷键

一、Visual Studio配置详解 1. 安装 Visual Studio 安装时,选择你所需要的组件和工作负载。Visual Studio 提供多种工作负载,例如: ASP.NET 和 Web 开发:用于 Web 应用的开发。 桌面开发(使用 .NET 或 C&#xff09…...

计算机网络-系分(5)

目录 计算机网络 DNS解析 DHCP动态主机配置协议 网络规划与设计 层次化网络设计 网络冗余设计 综合布线系统 1. 双栈技术 2. 隧道技术 3. 协议转换技术 其他网络技术 DAS(Direct Attached Storage,直连存储) NAS(Net…...

React Native使用高德地图

在React Native项目中使用高德地图,主要涉及到几个关键步骤:安装高德地图相关的React Native模块、配置项目、申请高德地图API Key、以及在实际组件中使用高德地图功能。以下是一个详细的步骤指南: 一、安装高德地图React Native模块 首先&…...

排序算法的理解

排序算法借鉴了数学里面的不等式的思想 计算机不能直接继承不等式的传递性特征,这个时候才用递归调用去人为的分成不同的部分。或者说,一部分已经大致排序好的数放在一边,另外一边再排。 这是由于计算机只能两两比较数字才会出现的情况。它…...

Yocto - 使用Yocto开发嵌入式Linux系统_04 使用Toaster来创建一个image

Using Toaster to Bake an Image 既然我们已经知道了如何在 Poky 中使用 BitBake 构建图像,那么接下来我们就来学习如何使用 Toaster 构建图像。我们将重点介绍 Toaster 最直接的使用方法,并介绍它的其他功能,让你了解它的能力。 Now that we…...

【C#生态园】后端服务与网络库:选择适合你游戏开发的利器

网络通信不再难题:六种常用游戏开发网络库详解 前言 随着网络游戏行业的蓬勃发展,对于实时多玩家游戏服务和网络通信库的需求也日益增长。在游戏开发中,选择合适的后端服务和网络库可以极大地影响游戏的性能、稳定性和用户体验。本文将介绍…...

计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-09-30

计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-09-30 目录 文章目录 计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-09-30目录1. Proof Automation with Large Language Models概览:论文研究背景:技术挑战:如何破局…...

【漏洞复现】JeecgBoot 积木报表 queryFieldBySql sql注入漏洞

》》》产品描述《《《 积木报表,是一款免费的企业级Web报表工具,像搭建积木一样在线设计报表!功能涵盖,数据报表、打印设计、图表报表、大屏设计等! 》》》漏洞描述《《《 JeecgBoot 积木报表 queryFieldBySq| 接口存在一个 SQL 注入漏洞&…...

Qt6 中相对于 Qt5 的新增特性及亮点

Qt 是一个领先的跨平台应用开发框架,涵盖了桌面、移动、嵌入式等多个平台。随着 Qt6 的发布,Qt 框架经历了重大升级和变革,带来了大量新特性和架构上的改进,使开发者可以更高效地开发现代化应用程序。本文将重点讨论 Qt6 相对于 Q…...

超轻巧modbus调试助手使用说明

一、使用说明 1.1 数据格式 和其他的modbus采集工具一样,本组件也支持各种数据格式,其实就是高字节低字节的顺序。一般是2字节表示一个数据,后面又有4字节表示一个数据,目前好像还有8字节表示一个数据的设备。不同厂家的设备对应…...

Qt5新手必看:3分钟搞定你的第一个控制台程序(附完整代码)

Qt5入门实战:从零构建控制台应用的完整指南 引言:为什么选择Qt5作为开发起点? 对于刚接触C图形界面开发的程序员来说,Qt框架提供了一个绝佳的起点。它不仅拥有跨平台特性,还具备完善的工具链和丰富的模块库。控制台程序…...

65R125-ASEMI超结MOS管TO-220封装

编辑:LL65R125-ASEMI超结MOS管TO-220封装型号:65R125品牌:ASEMI沟道:NPN封装:TO-220漏源电流:31A漏源电压:650VRDS(on):125mΩ批号:最新引脚数量:3封装尺寸:如…...

Qwen3.5-4B-Claude-Opus垂直场景:工业IoT设备告警根因的多条件推演

Qwen3.5-4B-Claude-Opus垂直场景:工业IoT设备告警根因的多条件推演 1. 工业IoT告警分析的挑战与机遇 在现代工业物联网环境中,设备告警分析面临着前所未有的复杂性。一个典型的制造工厂可能同时运行着数千台联网设备,每天产生数以万计的告警…...

如何用LeetDown实现iOS设备降级?3个步骤轻松搞定

如何用LeetDown实现iOS设备降级?3个步骤轻松搞定 【免费下载链接】LeetDown a GUI macOS Downgrade Tool for A6 and A7 iDevices 项目地址: https://gitcode.com/gh_mirrors/le/LeetDown 还在为老旧iOS设备升级后卡顿烦恼吗?想让iPhone 5s或iPad…...

从KITTI到TUM:利用evo工具链实现轨迹真值的格式转换与可视化分析

1. 理解KITTI与TUM轨迹格式的本质差异 第一次接触SLAM评估时,我被各种轨迹格式搞得头晕眼花。KITTI和TUM这两种最常见的格式,就像两个说着不同方言的技术专家。KITTI格式简单粗暴,直接记录12个数字代表相机的位姿变换矩阵(去掉最后…...

WSABuilds旧版本归档:如何获取v2311及更早版本安装包

WSABuilds旧版本归档:如何获取v2311及更早版本安装包 【免费下载链接】WSABuilds Run Windows Subsystem For Android on your Windows 10 and Windows 11 PC using prebuilt binaries with Google Play Store (MindTheGapps) and/or Magisk or KernelSU (root solu…...

VRCT:打破虚拟社交语言壁垒的创新解决方案

VRCT:打破虚拟社交语言壁垒的创新解决方案 【免费下载链接】VRCT VRCT(VRChat Chatbox Translator & Transcription) 项目地址: https://gitcode.com/gh_mirrors/vr/VRCT 在全球化的虚拟社交平台中,语言差异往往成为跨文化交流的最大障碍。当…...

DeepSeek-OCR开源镜像多场景实践:跨境电商多语言产品说明书自动本地化预处理

DeepSeek-OCR开源镜像多场景实践:跨境电商多语言产品说明书自动本地化预处理 1. 项目背景与价值 跨境电商企业在全球化运营中面临着一个共同挑战:产品说明书的多语言本地化。传统方式需要人工翻译、重新排版设计,整个过程耗时耗力且成本高昂…...

Connect to Oracle Database with JDBC Driver

1. Overview The Oracle Database is one of the most popular relational databases. In this tutorial, we’ll learn how to connect to an Oracle Database using a JDBC Driver. 2. The Database To get us started, we need a database. If we don’t have access to …...

Iceoryx(冰羚):无锁队列与并发控制的设计与实现3(源码解析)

接上篇设计4: 索引管理层( MpmcIndexQueue / CyclicIndex)Subscriber存储数据使用的是queue,是为了保证数据的读取顺序。MpmcLockFreeQueue 为了满足多个进程同时写的情况,采用了索引数据分离的方案(底层的索引实现为 …...