当前位置: 首页 > 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字节表示一个数据的设备。不同厂家的设备对应…...

【磁盘】每天掌握一个Linux命令 - iostat

目录 【磁盘】每天掌握一个Linux命令 - iostat工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景 注意事项 【磁盘】每天掌握一个Linux命令 - iostat 工具概述 iostat(I/O Statistics)是Linux系统下用于监视系统输入输出设备和CPU使…...

macOS多出来了:Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用

文章目录 问题现象问题原因解决办法 问题现象 macOS启动台(Launchpad)多出来了:Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用。 问题原因 很明显,都是Google家的办公全家桶。这些应用并不是通过独立安装的…...

Python实现prophet 理论及参数优化

文章目录 Prophet理论及模型参数介绍Python代码完整实现prophet 添加外部数据进行模型优化 之前初步学习prophet的时候,写过一篇简单实现,后期随着对该模型的深入研究,本次记录涉及到prophet 的公式以及参数调优,从公式可以更直观…...

短视频矩阵系统文案创作功能开发实践,定制化开发

在短视频行业迅猛发展的当下,企业和个人创作者为了扩大影响力、提升传播效果,纷纷采用短视频矩阵运营策略,同时管理多个平台、多个账号的内容发布。然而,频繁的文案创作需求让运营者疲于应对,如何高效产出高质量文案成…...

MySQL 8.0 事务全面讲解

以下是一个结合两次回答的 MySQL 8.0 事务全面讲解,涵盖了事务的核心概念、操作示例、失败回滚、隔离级别、事务性 DDL 和 XA 事务等内容,并修正了查看隔离级别的命令。 MySQL 8.0 事务全面讲解 一、事务的核心概念(ACID) 事务是…...

深入理解Optional:处理空指针异常

1. 使用Optional处理可能为空的集合 在Java开发中,集合判空是一个常见但容易出错的场景。传统方式虽然可行,但存在一些潜在问题: // 传统判空方式 if (!CollectionUtils.isEmpty(userInfoList)) {for (UserInfo userInfo : userInfoList) {…...

MySQL的pymysql操作

本章是MySQL的最后一章,MySQL到此完结,下一站Hadoop!!! 这章很简单,完整代码在最后,详细讲解之前python课程里面也有,感兴趣的可以往前找一下 一、查询操作 我们需要打开pycharm …...

小木的算法日记-多叉树的递归/层序遍历

🌲 从二叉树到森林:一文彻底搞懂多叉树遍历的艺术 🚀 引言 你好,未来的算法大神! 在数据结构的世界里,“树”无疑是最核心、最迷人的概念之一。我们中的大多数人都是从 二叉树 开始入门的,它…...

LLaMA-Factory 微调 Qwen2-VL 进行人脸情感识别(二)

在上一篇文章中,我们详细介绍了如何使用LLaMA-Factory框架对Qwen2-VL大模型进行微调,以实现人脸情感识别的功能。本篇文章将聚焦于微调完成后,如何调用这个模型进行人脸情感识别的具体代码实现,包括详细的步骤和注释。 模型调用步骤 环境准备:确保安装了必要的Python库。…...

高考志愿填报管理系统---开发介绍

高考志愿填报管理系统是一款专为教育机构、学校和教师设计的学生信息管理和志愿填报辅助平台。系统基于Django框架开发,采用现代化的Web技术,为教育工作者提供高效、安全、便捷的学生管理解决方案。 ## 📋 系统概述 ### 🎯 系统定…...