分布式设计-Redis集群-Mysql集群-Cloud
分布式系统的概念 分布式系统是建立在网络之上的软件系统,拥有软件特性,所以分布式系统具有高度内聚性,和透明性。是建设于网络之上的高层软件,而不是硬件。 分布式系统特点 分布式系统是多个服务器通过网络互联而构建的松耦合系统,其具备以下特点: …
标记为「MySQL」的文章集合。
分布式系统的概念 分布式系统是建立在网络之上的软件系统,拥有软件特性,所以分布式系统具有高度内聚性,和透明性。是建设于网络之上的高层软件,而不是硬件。 分布式系统特点 分布式系统是多个服务器通过网络互联而构建的松耦合系统,其具备以下特点: …
深度分页问题描述 分页语法 为什么深度分页会变慢? 设置一个 表结构 假设深度分页的执行SQL如下 执行流程: - 通过 普通二级索引树 idx update time,过滤 update time 条件,找到满足条件的记录ID。 - 通过…
窗口函数 MySQL8 窗口函数是一种特殊的函数,它可以在 一组查询行上执行类似于聚合的操作 ,但是 不会将查询行折叠为单个输出行 ,而是为每个查询行生成一个结果。窗口函数可以用来处理复杂的报表统计分析场景,例如计算移动平均值、累计和、排名…
查询优化的百科全书-Explain详解(下) 执行计划输出中各列详解 Extra Extra 列是用来说明一些额外信息的,我们可以通过这些额外信息来更准确的理解 MySQL 到底将如何执行给定的查询语句。 MySQL 提供的额外信息有好几十…
查询优化的百科全书-Explain详解(上) 一条查询语句在经过 MySQL 查询优化器的各种基于成本和规则的优化会后生成一个所谓的 执行计划 ,这个执行计划展示了接下来具体执行查询的方式,比如多表连接的顺序是什么,对于每个表采用什么访问方…
MySQL基于规则的优化(关于子查询优化二三事儿) 设计 MySQL 的大叔依据一些规则,竭尽全力的把很糟糕的语句转换成某种可以比较高效执行的形式,这个过程也可以被称作 查询重写 条件化简 移除不必要的括号 有时候表达式里有许多无用的括号,…
InnoDB统计数据是如何收集的 两种不同的统计数据存储方式 InnoDB 提供了两种存储统计数据的方式: - 永久性的统计数据 统计数据存储在磁盘上,也就是服务器重启之后这些统计数据还在。 - 非永久性的统计数据 统计数据存储在内存中,当…
MySQL基于成本的优化 什么是成本 MySQL 执行一个查询可以有不同的执行方案,它会选择其中成本最低,或者说代价最低的那种方案去真正的执行查询。不过我们之前对 成本 的描述是非常模糊的,其实在 MySQL 中一条查询语句的执行成本是由下…
连接的原理 连接简介 连接的本质 为了故事的顺利发展,我们先建立两个简单的表并给它们填充一点数据: 我们成功建立了 t1 、 t2 两个表,这两个表都有两个列,一个是 INT 类型的,一个是 CHAR 1 类型的,填充好数据的两个表长这样:…
单表访问方法 为了故事的顺利发展,我们先得有个表: 我们为这个 single table 表建立了1个聚簇索引和4个二级索引,分别是: - 为 id 列建立的聚簇索引。 - 为 key1 列建立的 idx key1 二级索引。 - 为 ke…
InnoDB的表空间 表空间 是一个抽象的概念,对于系统表空间来说,对应着文件系统中一个或多个实际文件;对于每个独立表空间来说,对应着文件系统中一个名为 表名.ibd 的实际文件。大家可以把表空间想象成被切分为许许多多个 页 的池子,当我们…
MySQL的数据目录 数据库和文件系统的关系 像 InnoDB 、 MyISAM 这样的存储引擎都是把表存储在文件系统上的。当我们想读取数据的时候,这些存储引擎会从文件系统中把数据读出来返回给我们,当我们想写入数据的时候,这些存储引擎会把这…
B+树索引 页和记录的关系示意图如下: 页a、页b、页c ... 页n 这些页可以不在物理结构上相连,只要通过双向链表相关联即可。 没有索引的查找 先只唠叨搜索条件为对某个列精确匹配的情况,所谓精确匹配,就是搜索条件中用等于 = 连接起的表…
InnoDB数据页结构 数据页:存放我们表中记录的页,官方称这种存放记录的页为索引( INDEX )页,这些表中的记录就是我们日常口中所称的数据,所以也可以称这种存放记录的页为数据页 数据页结构的快速浏览 数据页代表的这块 16KB 大小的…
B+树索引的使用 我们必须熟悉下边这些结论: - 每个索引都对应一棵 B+ 树, B+ 树分为好多层,最下边一层是叶子节点,其余的是内节点。所有 用户记录都存储在 B+ 树的叶子节点,所有 目录项记录 都存储在内节点。 - InnoDB 存…
InnoDB记录结构 MySQL 服务器上负责对表中数据的读取和写入工作的部分是 存储引擎 ,而服务器又支持不同类型的存储引擎。真实数据在不同存储引擎中存放的格式一般是不同的,甚至有的存储引擎比如 Memory 都不用磁盘来存储数据,也就是…
字符集和比较规则简介 字符集简介 在计算机中只能存储二进制数据,那该怎么存储字符串呢?当然是建立字符与二进制数据的映射关系了,建立这个关系最起码要搞清楚两件事儿 - 你要把哪些字符映射成二进制数据?也就是界定清楚字符范围。 - 怎么映射?将…
启动命令 mysql --help 可以看到 mysql 程序支持的启动选项。 mysqld safe --help 可以看到 mysqld safe 程序支持的启动选项。 查看 mysqld 支持的启动选项有些特别,需要使用 mysqld…
MySQL的客户端/服务器架构 MySQL 服务器程序和客户端程序本质上都算是计算机上的一个进程,这个代表着 MySQL 服务器程序的进程也被称为 MySQL数据库实例 ,简称 数据库实例 。 MySQL 服务器进程的默认名称为 mysql…