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

【MySQL】一文详解MySQL,从基础概念到调优

作者简介

前言
博主之前写过一个MySQL的系列,从基础概念、SQL到底层原理、优化,专栏地址:

https://blog.csdn.net/joker_zjn/category_12305262.html?spm=1001.2014.3001.5482

本文会是这个系列的清单,拉通来聊一聊Mysql从基础概念一直到优化的相关内容。

目录

目录

1.基础概念和SQL

2.SQL调优

3.优化索引

4.一些工程问题


1.基础概念和SQL

文章链接:

MySQL基础概念和SQL__BugMan的博客-CSDN博客

这一部分会聊一下MySQL的基础概念和SQL操作,主要包含以下内容:

  1. 什么是MySQL
  2. 关系型、非关系型数据库区别
  3. MySQL的架构
  4. MySQL的一些基础概念
  5. MySQL的数据类型
  6. MySQL的SQL

1.什么是MySQL

开源、轻量级的一款关系型数据库,在业内有着广泛应用。

2.关系型、非关系型数据库的区别

其实就是数据组织方式的不同,关系型数据库中数据有严格的格式约束,而非关系型数据库里没有。

3.MySQL的架构

MySQL的逻辑架构由三层组成,一个MySQL实例中可以有多个库,一个库里面可以有多张表,一张表里面可以有多个字段。

4.MySQL的一些基础概念

主要就是要搞清楚,什么是主键?什么是外键?什么是索引?

5.MySQL的数据类型

MySQL下设三大类的数据类型:数值、字符串、日期/时间,三大类型中会各自包含具体的小类型,比如数值中会包含BIGINT、FLOAT、DOUBLE等,字符串中会包含CHAR、VARCHAR等。

6.SQL

SQL上重要的内容主要分为两个方面:

  1. 操作表和库,包含创建、删除、调整结构等
  2. 操作数据,包含对数据的增加、删除、修改、查询

2.SQL调优

文章链接:

详解MySQL索引失效_mysql复合索引失效__BugMan的博客-CSDN博客

当MySQL在实际生产环境中,数据量堆积到一定量级后原来的一些查询SQL的速度会变慢,这时候就需要对原来的SQL进行调优,使得其速度能够重新起来。SQL调优也是数据库优化的一个核心点。SQL调优的核心其实就是建出合理的索引,用空间换时间。

这一部分包含:

  1. B树、B+树
  2. 哪些情况索引会失效

1.B树、B+树

B树是一种常见的自平衡树数据结构,广泛用于数据库系统和文件系统等需要高效插入、删除和查找操作的应用中。因为MySQL是将数据存在磁盘上的,如果查找的层级很多的话,意味着寻道、磁头的机械动作就会出现多次,这无疑是很耗时的,所以如果查找的层级少的话,会有很不错的效率。B树就是一种层级很少,但是能存海量数据的树形结构。文中会对B树的数据结构、完整的建树过程、存储数据的容量给出详述,以及对B树的优化结构B+树给出介绍。

2.哪些情况索引会失效

其实索引会失效的根本原因就是违反了B树的数据结构,让精准匹配无法走下去了。文章中将会对以下几类常见的索引失效的情况做出详细介绍:

  • 没有用到索引
  • 违反左前缀原则
  • 范围查询断索引
  • like需要分情况
  • 结果数据超过半数

3.优化索引

文章链接:

详解MySQL覆盖索引、索引下推__BugMan的博客-CSDN博客

SQL调优,只是建了合适的索引,但是有时候索引机制自身也是需要优化的,这一部分会围绕如何优化索引机制来聊一聊,包含:

  1. 覆盖索引
  2. 索引下推

1.覆盖索引

MySQL天生自带“回表查询”问题,覆盖索引,是为了避免“回表查询”,从而降低查询耗时的一种使用索引的方法。文章中会详细讲述什么是“回表查询”以及如何使用覆盖索引来解决回表问题。

2.索引下推

索引下推,是自MySQL5.6版本引入的一个新特性,目的也是减少“回表查询”,从而提升整体的查询效率。文中会详细聊一下什么是索引下推,如何解决的回表问题。

4.一些工程问题

文章链接:

数据库如何合理生成主键:UUID、雪花算法_主键算法__BugMan的博客-CSDN博客

实际工程中如何合理生成数据库主键是个问题。首先在实际工程中我们很少用1,2,3......这样的自增主键,比如我要跨数据库进行数据同步、或者在分布式系统中跨“分区”进行数据同步,不难想象,1,2,3......这种递增的单数字是极容易产生冲突的。文章中将会详细介绍主键的一些生成算法,比如UUID、雪花算法等。

相关文章:

【MySQL】一文详解MySQL,从基础概念到调优

作者简介 前言 博主之前写过一个MySQL的系列,从基础概念、SQL到底层原理、优化,专栏地址: https://blog.csdn.net/joker_zjn/category_12305262.html?spm1001.2014.3001.5482 本文会是这个系列的清单,拉通来聊一聊Mysql从基础概…...

机器学习——boosting之提升树

提升树和adaboost基本流程是相似的 我看到提升树的时候,懵了 这…跟adaboost有啥区别??? 直到看到有个up主说了,我才稍微懂 相当于,我在adaboost里的弱分类器,换成CART决策树就好了呗&#xff1…...

解决Spring Boot启动错误的技术指南

🌷🍁 博主猫头虎(🐅🐾)带您 Go to New World✨🍁 🦄 博客首页——🐅🐾猫头虎的博客🎐 🐳 《面试题大全专栏》 🦕 文章图文…...

使用Spring Security保障你的Web应用安全

🌷🍁 博主猫头虎(🐅🐾)带您 Go to New World✨🍁 🦄 博客首页——🐅🐾猫头虎的博客🎐 🐳 《面试题大全专栏》 🦕 文章图文…...

PostgreSQL本地化

本地化的概念 本地化的目的是支持不同国家、地区的语言特性、规则。比如拥有本地化支持后,可以使用支持汉语、法语、日语等等的字符集。除了字符集以外,还有字符排序规则和其他语言相关规则的支持,例如我们知道(‘a’,‘b’)该如何排序&…...

MySQL——日志

日志的作用 1.用来排错 2.用来做数据分析 3.了解程序的运行情况,是否健康--》了解MySQL的性能,运行情况 分类 mysql很多有类型的日志,按照组件划分的话,可以分为 服务层日志 和 存储引擎层日志 : - 服务层…...

玩转Mysql系列 - 第18篇:流程控制语句(高手进阶)

这是Mysql系列第18篇。 环境:mysql5.7.25,cmd命令中进行演示。 代码中被[]包含的表示可选,|符号分开的表示可选其一。 上一篇存储过程&自定义函数,对存储过程和自定义函数做了一个简单的介绍,但是如何能够写出复…...

LED屏幕电流驱动设计原理

LED电子显示屏作为户外最大的应用产品,是大型娱乐,体育赛事,广场大屏幕等场所不可或缺的产品,从单双色简单的文字展示到今天的高清全彩,显示屏的技术一直都在进步,全球80%的LED电子显示屏皆产自于中国。显示…...

shell知识点复习

1、shell能做什么( Shell可以做任何事(一切取决于业务需求) ) 自动化批量系统初始化程序 自动化批量软件部署程序 应用管理程序 日志分析处理程序 自动化备份恢复程序 自动化管理程序 自动化信息采集及监控程序 配合Zabbix信息采集 自动化扩容 2、获取当…...

【Sentinel Go】新手指南、流量控制、熔断降级和并发隔离控制

随着微服务的流行,服务和服务之间的稳定性变得越来越重要。Sentinel 是面向分布式、多语言异构化服务架构的流量治理组件,主要以流量为切入点,从流量路由、流量控制、流量整形、熔断降级、系统自适应过载保护、热点流量防护等多个维度来帮助开…...

iOS自定义滚动条

引言 最近一直在做数据通信相关的工作,导致了UI上的一些bug一直没有解决。这两天终于能腾出点时间大概看了一下Redmine上的bug,发现有很多bug都是与系统滚动条有关系的。所以索性就关注一下这个小小的滚动条。 为什么要自定义ScrollIndictor 原有的Scrol…...

C++知识点2:把数据写进switch case结构,和写进json结构,在使用上有什么区别

将数据存储在Switch Case结构和JSON结构中有明显的区别,它们用于不同的目的和方式。以下是它们之间的主要区别: 1、用途和结构: Switch Case结构:Switch Case是一种条件语句,通常用于根据条件执行不同的代码块。它通常…...

肖sir__linux详解__003(vim命令)

linux 文本编辑命令 作用:用于编辑一个文件 用法:vim 文件名称 或者vi (1)编辑一个存在的文档 例子:编辑一个file1文件 vim aa (2)编辑一个文件不存在,会先创建文件,再…...

瑞芯微RK3588开发板:虚拟机yolov5模型转化、开发板上python脚本调用npu并部署 全流程

目录 0. 背景1. 模型转化1.1 基础环境1.2 创建python环境1.3 将yolov5s.pt转为yolov5s.onnx1.4 将yolov5s.onnx转为yolov5s.rknn 2. 开发板部署2.1. c版本2.1. python版本(必须是python 3.9) 3. 性能测试 0. 背景 全面国产化,用瑞芯微rk3588…...

【Redis专题】RedisCluster集群运维与核心原理剖析

目录 课程内容一、Redis集群架构模型二、Redis集群架构搭建(单机搭建)2.1 在服务器下新建各个节点的配置存放目录2.2 修改配置(以redis-8001.conf为例) 三、Java代码实战四、Redis集群原理分析4.1 槽位定位算法4.2 跳转重定位4.3 …...

我眼中的《视觉测量技术基础》

为什么会写这篇博客: 首先给大家说几点:看我的自我介绍对于学习这本书没有任何帮助,如果你是为了急切的想找一个视觉测量的解决方案那可以跳过自我介绍往下看或者换一篇博客看看,如果你是刚入门想学习计算机视觉的同学&#xff0…...

【Cisco Packet Tracer】管理方式,命令,接口trunk,VLAN

💐 🌸 🌷 🍀 🌹 🌻 🌺 🍁 🍃 🍂 🌿 🍄🍝 🍛 🍤 📃个人主页 :阿然成长日记 …...

深入协议栈了解TCP的三次握手、四次挥手、CLOSE-WAIT、TIME-WAIT。

TCP网络编程的代码网上很多,这里就不再赘述,简单用一个图展示一下tcp网络编程的流程: 1、深入connect、listen、accept系统调用,进一步理解TCP的三次握手 这三个函数都是系统调用,我们可以分为请求连接方和被…...

接口自动化测试系列-yml管理测试用例

项目源码 目录结构及项目介绍 整体目录结构,目录说明参考 测试用例结构类似httprunner写法,可参考demo 主要核心函数 用例读取转换json import yaml import main import os def yaml_r():curpath f{main.BASE_DIR}/quality_management_logic/ops_ne…...

开源对象存储系统minio部署配置与SpringBoot客户端整合访问

文章目录 1、MinIO安装部署1.1 下载 2、管理工具2.1、图形管理工具2.2、命令管理工具2.3、Java SDK管理工具 3、MinIO Server配置参数3.1、启动参数:3.2、环境变量3.3、Root验证参数 4、MinIO Client可用命令 官方介绍: MinIO 提供高性能、与S3 兼容的对…...

大数据学习栈记——Neo4j的安装与使用

本文介绍图数据库Neofj的安装与使用,操作系统:Ubuntu24.04,Neofj版本:2025.04.0。 Apt安装 Neofj可以进行官网安装:Neo4j Deployment Center - Graph Database & Analytics 我这里安装是添加软件源的方法 最新版…...

基于当前项目通过npm包形式暴露公共组件

1.package.sjon文件配置 其中xh-flowable就是暴露出去的npm包名 2.创建tpyes文件夹,并新增内容 3.创建package文件夹...

[ICLR 2022]How Much Can CLIP Benefit Vision-and-Language Tasks?

论文网址:pdf 英文是纯手打的!论文原文的summarizing and paraphrasing。可能会出现难以避免的拼写错误和语法错误,若有发现欢迎评论指正!文章偏向于笔记,谨慎食用 目录 1. 心得 2. 论文逐段精读 2.1. Abstract 2…...

3403. 从盒子中找出字典序最大的字符串 I

3403. 从盒子中找出字典序最大的字符串 I 题目链接:3403. 从盒子中找出字典序最大的字符串 I 代码如下: class Solution { public:string answerString(string word, int numFriends) {if (numFriends 1) {return word;}string res;for (int i 0;i &…...

【HTTP三个基础问题】

面试官您好!HTTP是超文本传输协议,是互联网上客户端和服务器之间传输超文本数据(比如文字、图片、音频、视频等)的核心协议,当前互联网应用最广泛的版本是HTTP1.1,它基于经典的C/S模型,也就是客…...

Fabric V2.5 通用溯源系统——增加图片上传与下载功能

fabric-trace项目在发布一年后,部署量已突破1000次,为支持更多场景,现新增支持图片信息上链,本文对图片上传、下载功能代码进行梳理,包含智能合约、后端、前端部分。 一、智能合约修改 为了增加图片信息上链溯源,需要对底层数据结构进行修改,在此对智能合约中的农产品数…...

springboot整合VUE之在线教育管理系统简介

可以学习到的技能 学会常用技术栈的使用 独立开发项目 学会前端的开发流程 学会后端的开发流程 学会数据库的设计 学会前后端接口调用方式 学会多模块之间的关联 学会数据的处理 适用人群 在校学生,小白用户,想学习知识的 有点基础,想要通过项…...

Modbus RTU与Modbus TCP详解指南

目录 1. Modbus协议基础 1.1 什么是Modbus? 1.2 Modbus协议历史 1.3 Modbus协议族 1.4 Modbus通信模型 🎭 主从架构 🔄 请求响应模式 2. Modbus RTU详解 2.1 RTU是什么? 2.2 RTU物理层 🔌 连接方式 ⚡ 通信参数 2.3 RTU数据帧格式 📦 帧结构详解 🔍…...

Java 与 MySQL 性能优化:MySQL 慢 SQL 诊断与分析方法详解

文章目录 一、开启慢查询日志,定位耗时SQL1.1 查看慢查询日志是否开启1.2 临时开启慢查询日志1.3 永久开启慢查询日志1.4 分析慢查询日志 二、使用EXPLAIN分析SQL执行计划2.1 EXPLAIN的基本使用2.2 EXPLAIN分析案例2.3 根据EXPLAIN结果优化SQL 三、使用SHOW PROFILE…...

归并排序:分治思想的高效排序

目录 基本原理 流程图解 实现方法 递归实现 非递归实现 演示过程 时间复杂度 基本原理 归并排序(Merge Sort)是一种基于分治思想的排序算法,由约翰冯诺伊曼在1945年提出。其核心思想包括: 分割(Divide):将待排序数组递归地分成两个子…...