当前位置: 首页 > 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、雪花算法等。

http://www.lryc.cn/news/161634.html

相关文章:

  • 机器学习——boosting之提升树
  • 解决Spring Boot启动错误的技术指南
  • 使用Spring Security保障你的Web应用安全
  • PostgreSQL本地化
  • MySQL——日志
  • 玩转Mysql系列 - 第18篇:流程控制语句(高手进阶)
  • LED屏幕电流驱动设计原理
  • shell知识点复习
  • 【Sentinel Go】新手指南、流量控制、熔断降级和并发隔离控制
  • iOS自定义滚动条
  • C++知识点2:把数据写进switch case结构,和写进json结构,在使用上有什么区别
  • 肖sir__linux详解__003(vim命令)
  • 瑞芯微RK3588开发板:虚拟机yolov5模型转化、开发板上python脚本调用npu并部署 全流程
  • 【Redis专题】RedisCluster集群运维与核心原理剖析
  • 我眼中的《视觉测量技术基础》
  • 【Cisco Packet Tracer】管理方式,命令,接口trunk,VLAN
  • 深入协议栈了解TCP的三次握手、四次挥手、CLOSE-WAIT、TIME-WAIT。
  • 接口自动化测试系列-yml管理测试用例
  • 开源对象存储系统minio部署配置与SpringBoot客户端整合访问
  • Matlab之数组字符串函数汇总
  • 基于深度学习网络的火灾检测算法matlab仿真
  • 【Linux】高级IO和多路转接 | select/poll/epoll
  • el-select 支持多选 搜索远程数据 组件抽取
  • el-table纵向垂直表头
  • Pinyin4j介绍和简单使用
  • 【数据结构】查找
  • 第一次面试
  • Nacos配置文件更新+热更新+多环境配置共享+集群搭建
  • 李宏毅-机器学习hw4-self-attention结构-辨别600个speaker的身份
  • 记一次使用NetworkManager管理Ubuntu网络无效问题分析