作者简介
前言
博主之前写过一个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操作,主要包含以下内容:
- 什么是MySQL
- 关系型、非关系型数据库区别
- MySQL的架构
- MySQL的一些基础概念
- MySQL的数据类型
- MySQL的SQL
1.什么是MySQL
开源、轻量级的一款关系型数据库,在业内有着广泛应用。
2.关系型、非关系型数据库的区别
其实就是数据组织方式的不同,关系型数据库中数据有严格的格式约束,而非关系型数据库里没有。
3.MySQL的架构
MySQL的逻辑架构由三层组成,一个MySQL实例中可以有多个库,一个库里面可以有多张表,一张表里面可以有多个字段。
4.MySQL的一些基础概念
主要就是要搞清楚,什么是主键?什么是外键?什么是索引?
5.MySQL的数据类型
MySQL下设三大类的数据类型:数值、字符串、日期/时间,三大类型中会各自包含具体的小类型,比如数值中会包含BIGINT、FLOAT、DOUBLE等,字符串中会包含CHAR、VARCHAR等。
6.SQL
SQL上重要的内容主要分为两个方面:
- 操作表和库,包含创建、删除、调整结构等
- 操作数据,包含对数据的增加、删除、修改、查询
2.SQL调优
文章链接:
详解MySQL索引失效_mysql复合索引失效__BugMan的博客-CSDN博客
当MySQL在实际生产环境中,数据量堆积到一定量级后原来的一些查询SQL的速度会变慢,这时候就需要对原来的SQL进行调优,使得其速度能够重新起来。SQL调优也是数据库优化的一个核心点。SQL调优的核心其实就是建出合理的索引,用空间换时间。
这一部分包含:
- B树、B+树
- 哪些情况索引会失效
1.B树、B+树
B树是一种常见的自平衡树数据结构,广泛用于数据库系统和文件系统等需要高效插入、删除和查找操作的应用中。因为MySQL是将数据存在磁盘上的,如果查找的层级很多的话,意味着寻道、磁头的机械动作就会出现多次,这无疑是很耗时的,所以如果查找的层级少的话,会有很不错的效率。B树就是一种层级很少,但是能存海量数据的树形结构。文中会对B树的数据结构、完整的建树过程、存储数据的容量给出详述,以及对B树的优化结构B+树给出介绍。
2.哪些情况索引会失效
其实索引会失效的根本原因就是违反了B树的数据结构,让精准匹配无法走下去了。文章中将会对以下几类常见的索引失效的情况做出详细介绍:
- 没有用到索引
- 违反左前缀原则
- 范围查询断索引
- like需要分情况
- 结果数据超过半数
3.优化索引
文章链接:
详解MySQL覆盖索引、索引下推__BugMan的博客-CSDN博客
SQL调优,只是建了合适的索引,但是有时候索引机制自身也是需要优化的,这一部分会围绕如何优化索引机制来聊一聊,包含:
- 覆盖索引
- 索引下推
1.覆盖索引
MySQL天生自带“回表查询”问题,覆盖索引,是为了避免“回表查询”,从而降低查询耗时的一种使用索引的方法。文章中会详细讲述什么是“回表查询”以及如何使用覆盖索引来解决回表问题。
2.索引下推
索引下推,是自MySQL5.6版本引入的一个新特性,目的也是减少“回表查询”,从而提升整体的查询效率。文中会详细聊一下什么是索引下推,如何解决的回表问题。
4.一些工程问题
文章链接:
数据库如何合理生成主键:UUID、雪花算法_主键算法__BugMan的博客-CSDN博客
实际工程中如何合理生成数据库主键是个问题。首先在实际工程中我们很少用1,2,3……这样的自增主键,比如我要跨数据库进行数据同步、或者在分布式系统中跨“分区”进行数据同步,不难想象,1,2,3……这种递增的单数字是极容易产生冲突的。文章中将会详细介绍主键的一些生成算法,比如UUID、雪花算法等。