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

硬件工程师的办公室布局与效率系统:从工具管理到创意激发

1. 我的“极乐之穹”:一个硬件工程师的办公室漫游每次在博客里提到“极乐之穹”,指的都是我的办公室。偶尔,我也会聊起在四处搜罗时遇到并收入囊中的那些令人心动的电子设备或“艺术品”。时间久了,总有人让我拍点照片分享。问题在…...

Ruby开发者指南:使用chatgpt-ruby轻量级封装集成OpenAI API

1. 项目概述:一个为Ruby开发者打造的OpenAI API轻量级封装 如果你是一名Ruby开发者,正琢磨着如何在自己的Rails应用、Sinatra服务或者一个简单的CLI工具里,优雅地集成ChatGPT的能力,那么 chatgpt-ruby 这个Gem很可能就是你正在…...

HealthGPT高级功能:语音交互与聊天记录导出的实用技巧

HealthGPT高级功能:语音交互与聊天记录导出的实用技巧 【免费下载链接】HealthGPT Query your Apple Health data with natural language 💬 🩺 项目地址: https://gitcode.com/gh_mirrors/he/HealthGPT HealthGPT是一款能让你用自然语…...

Excel高效使用技巧(十五):终极技巧汇总:高级玩家必备的邪修操作

“Excel的终极奥义,不是你会多少公式,而是你知道多少’不该用Excel’的时刻,以及如何优雅地让Excel和其他工具联动。” —— 卡兹克 前言:你的Excel到达哪个段位? 经过十四篇文章的洗礼,你现在应该已经掌握了: 数据清洗:Power Query玩得飞起 数据分析:透视表+DAX不在…...

Flutter for OpenHarmony学习资料搜索与PDF阅读器技术文章

Flutter for OpenHarmony学习资料搜索与PDF阅读器技术文章 欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.csdn.net 🚀 Flutter for OpenHarmony 学习资料搜索与 PDF 阅读器开发实战 大家好!今天带大家从零开始打造一款专…...

Polkadot 正在补完 L1 里没人做过的“垂直 RISC-V 集成“

作者: PaperMoon团队 位 Parity 工程师周末买了一块 RISC-V 板子,把节点跑起来看看会断在哪里。配图是一张工程师的桌子,板子、线、调试器、电源。 很多人会觉得这就是一个 maker culture 风格的小实验。但如果你把过去三年 Polkadot 在 IS…...

Navicat导入Excel实战:从数据准备到成功入库的完整避坑指南

1. 数据准备:Excel规范整理实战 第一次用Navicat导入Excel时,我对着报错提示整整折腾了两小时。后来才发现,90%的问题都出在数据准备阶段。就像做饭前要洗菜切配,数据导入前也需要做好这些准备工作: 字段命名要像给变量…...

告别一堆转换头!一个自研小工具搞定USB、网口、485、232、TTL全互连(附配置软件)

极简主义工程师的终极武器:全协议互连调试工具实战指南 每次出差调试设备,我的背包里总塞满了各种转换头——USB转串口、网口转485、232电平转换器...直到上个月在客户现场,当我蹲在机柜旁手忙脚乱切换第五个转换器时,螺丝刀不小心…...

Unity美术资源导入避坑指南:从‘2的N次方’到‘ASTC压缩’,搞懂这些让你的游戏包体瘦身50%

Unity移动端美术资源优化实战:从纹理规范到跨平台压缩策略 移动游戏开发中,美术资源往往占据包体大小的70%以上。上周团队刚把一个150MB的Demo压缩到89MB,关键就在于纹理资源的规范处理。不同GPU架构对纹理格式的解析差异,可能导致…...

Tarjan算法:从DFS序到强连通分量的寻路指南(附C++实战与缩点技巧)

1. 从迷宫探索到强连通王国:Tarjan算法的生活隐喻 想象你正在探索一座巨大的迷宫,手里拿着粉笔和记事本。每走到一个新的岔路口,你就在墙上标记数字(第一个到的路口标1,第二个标2...),这就是DFS…...