【MySQL】 事务
【MySQL】 事务Metadatatitle: 【MySQL】 事务
date: 2023-06-25 09:25
tags:
- 行动阶段/完成
- 主题场景/数据存储
- 笔记空间/KnowladgeSpace/ProgramSpace/BasicsSpace
- 细化主题/数据存储
categories:
- 数据存储
keywords:
- 数据存储
description: 【MySQL】 事务
事务的起源举例
银行为了存储人们的账户信息会建立一个account 表:
CREATE TABLE account (
id INT NOT NULL AUTO_INCREMENT COMMENT '自增id',
name VARCHAR(100) COMMENT '客户名称',
balance INT COMMENT '余额',
PRIMARY KEY (id)
) Engine=InnoDB CHARSET=utf8;
每一个操作都相当于现实世界中账户的一次状态转换
UPDATE account SET balance = balance - 10 ...
【MySQL】 InnoDB的Buffer Pool
【MySQL】 InnoDB的Buffer PoolMetadatatitle: 【MySQL】 InnoDB的Buffer Pool
date: 2023-06-24 14:49
tags:
- 行动阶段/完成
- 主题场景/数据存储
- 笔记空间/KnowladgeSpace/ProgramSpace/BasicsSpace
- 细化主题/数据存储
categories:
- 数据存储
keywords:
- 数据存储
description: 【MySQL】 InnoDB的Buffer Pool
概述
磁盘太慢,用内存作为缓存很有必要。
Buffer Pool 本质上是InnoDB 向操作系统申请的一段连续的内存空间,可以通过 innodb_buffer_pool_size 来调整它的大小。
Buffer Pool 向操作系统申请的连续内存由控制块和缓存页组成,每个控制块和缓存页都是一一对应的,在填充足够多的控制块和缓存页的组合后, Buffer Pool 剩余的空间可能产生不够填充一组控制块和缓存页,这部分空间不能被使用,也被称为碎片。
InnoDB ...
【MySQL】 optimizer trace表
【MySQL】 optimizer trace表Metadatatitle: 【MySQL】 optimizer trace表
date: 2023-06-24 14:40
tags:
- 行动阶段/完成
- 主题场景/数据存储
- 笔记空间/KnowladgeSpace/ProgramSpace/BasicsSpace
- 细化主题/数据存储
categories:
- 数据存储
keywords:
- 数据存储
description: 【MySQL】 optimizer trace表
【MySQL】 optimizer trace表查看优化器生成执行计划的整个过程
这个OPTIMIZER_TRACE 表有4个列,分别是:
QUERY :表示我们的查询语句。
TRACE :表示优化过程的JSON格式文本。
MISSING_BYTES_BEYOND_MAX_MEM_SIZE :由于优化过程可能会输出很多,如果超过某个限制时,多余的文本将不会被显示,这个字段展示了被忽略的文本字节数。
INSUFFICIENT_PRIVILEGES :表示是否没有权限查看优化 ...
【MySQL】 Explain详解
【MySQL】 Explain详解Metadatatitle: 【MySQL】 Explain详解
date: 2023-06-24 12:50
tags:
- 行动阶段/完成
- 主题场景/数据存储
- 笔记空间/KnowladgeSpace/ProgramSpace/BasicsSpace
- 细化主题/数据存储
categories:
- 数据存储
keywords:
- 数据存储
description: 【MySQL】 Explain详解
概述EXPLAIN 语句帮助理解 MySQL 如何执行 SQL 查询。每个输出列都有特定的含义。主要列:
table: 显示访问的表名。
id: 对于每个 SELECT 关键字,都会分配一个唯一的 id 值。
select_type: 描述了查询中各部分的类型(例如,SIMPLE, PRIMARY, UNION等)。
partitions: 显示涉及到的分区信息。
type:显示了 MySQL 使用哪种内部机制来查找行。可能是全索引扫描、范围扫描、全表扫描等方式之一。
possible_keys 和 key:显示 ...
【MySQL】 MySQL基于规则的优化
【MySQL】 MySQL基于规则的优化Metadatatitle: 【MySQL】 MySQL基于规则的优化
date: 2023-06-23 16:19
tags:
- 行动阶段/完成
- 主题场景/数据存储
- 笔记空间/KnowladgeSpace/ProgramSpace/BasicsSpace
- 细化主题/数据存储
categories:
- 数据存储
keywords:
- 数据存储
description: 【MySQL】 MySQL基于规则的优化
概述把这个很糟糕的语句转换成某种可以比较高效执行的形式,这个过程也可以被称作查询重写
条件化简
移除不必要的括号
常量传递(constant_propagation)
等值传递(equality_propagation)
移除没用的条件(trivial_condition_removal)
表达式计算
HAVING子句和WHERE子句的合并
常量表检测
外连接消除
在外连接查询中,指定的WHERE 子句中包含被驱动表中的列不为NULL 值的条件称之为空值拒绝
符合空值拒绝的条件后,外连接和内 ...
【MySQL】 InnoDB 的统计数据收集
【MySQL】 InnoDB 的统计数据收集Metadatatitle: 【MySQL】 InnoDB 的统计数据收集
date: 2023-06-23 15:44
tags:
- 行动阶段/完成
- 主题场景/数据存储
- 笔记空间/KnowladgeSpace/ProgramSpace/BasicsSpace
- 细化主题/数据存储
categories:
- 数据存储
keywords:
- 数据存储
description: 【MySQL】 InnoDB 的统计数据收集
概述
InnoDB 以表为单位来收集统计数据,这些统计数据可以是基于磁盘的永久性统计数据,也可以是基于内存的非永久性统计数据。
innodb_stats_persistent 控制着是否使用永久性统计数据;
innodb_stats_persistent_sample_pages 控制着永久性统计数据的采样页面数量;
innodb_stats_transient_sample_pages 控制着非永久性统计数据的采样页面数量;
innodb_stats_auto_recalc 控制着是 ...
【MySQL】 MySQL基于成本的优化
【MySQL】 MySQL基于成本的优化Metadatatitle: 【MySQL】 MySQL基于成本的优化
date: 2023-06-23 13:57
tags:
- 行动阶段/完成
- 主题场景/数据存储
- 笔记空间/KnowladgeSpace/ProgramSpace/BasicsSpace
- 细化主题/数据存储
categories:
- 数据存储
keywords:
- 数据存储
description: 【MySQL】 MySQL基于成本的优化
什么是成本I/O 成本从磁盘到内存这个加载的过程损耗的时间
CPU 成本读取以及检测记录是否满足对应的搜索条件、对结果集进行排序等这些操作损耗的时间
规定读取一个页面花费的成本默认是1.0 ,读取以及检测一条记录是否符合搜索条件的成本默认是0.2 。
单表查询的成本准备工作CREATE TABLE single_table (
id INT NOT NULL AUTO_INCREMENT,
key1 VARCHAR(100),
key2 INT,
key3 VARCHAR(100),
key_pa ...
【MySQL】 连接的原理
【MySQL】 连接的原理Metadatatitle: 【MySQL】 连接的原理
date: 2023-06-23 13:26
tags:
- 行动阶段/完成
- 主题场景/数据存储
- 笔记空间/KnowladgeSpace/ProgramSpace/BasicsSpace
- 细化主题/数据存储
categories:
- 数据存储
keywords:
- 数据存储
description: 【MySQL】 连接的原理
概述连接简介:
连接的本质是通过笛卡尔积将两个表中的记录相互匹配组合。
连接过程涉及单表条件和涉及两表条件。
连接查询的执行过程包括确定驱动表和在驱动表和被驱动表之间查找匹配记录。
连接分为内连接和外连接,内连接只返回匹配的记录,而外连接会包括未匹配的记录。
外连接可以进一步细分为左外连接和右外连接。
连接的原理总结:
嵌套循环连接是一种连接算法,驱动表只访问一次,而被驱动表可能被多次访问。
使用索引可以加快连接速度。
基于块的嵌套循环连接是优化的方法,通过减少被驱动表的访问次数来提高性能。
基于块的嵌套循环连接使用join buffe ...
【MySQL】 单表访问方法
【MySQL】 单表访问方法Metadatatitle: 【MySQL】 单表访问方法
date: 2023-06-22 23:07
tags:
- 行动阶段/完成
- 主题场景/数据存储
- 笔记空间/KnowladgeSpace/ProgramSpace/BasicsSpace
- 细化主题/数据存储
categories:
- 数据存储
keywords:
- 数据存储
description: 【MySQL】 单表访问方法
概述
MySQL Server使用查询优化器对查询语句进行优化,生成执行计划。
单表查询的访问方法主要有两种:全表扫描和使用索引。
全表扫描通过逐行扫描表中的记录来找到符合搜索条件的记录。
使用索引可以细分为多种类型,如针对主键或唯一二级索引的等值查询、普通二级索引的等值查询、索引列的范围查询和直接扫描整个索引等。
const访问方法是通过主键或唯一二级索引来定位一条记录,具有常数级别的访问代价。
ref访问方法适用于普通二级索引,其访问代价取决于等值匹配到的二级索引记录条数。
ref_or_null访问方法是针对二级索引列值为NU ...
【MySQL】 InnoDB的表空间
【MySQL】 InnoDB的表空间Metadatatitle: 【MySQL】 InnoDB的表空间
date: 2023-06-22 05:36
tags:
- 行动阶段/完成
- 主题场景/数据存储
- 笔记空间/KnowladgeSpace/ProgramSpace/BasicsSpace
- 细化主题/数据存储
categories:
- 数据存储
keywords:
- 数据存储
description: 【MySQL】 InnoDB的表空间
概述
独立表空间
区: 连续的64个页就是一个区,也就是说一个区默认占用1MB空间大小。每256个区被划分成一组。
第一个组最开始的3个页面的类型是固定的,也就是说extent 0 这个区最开始的3个页面的类型是固定的,分别是:
FSP_HDR 类型: 这个类型的页面是用来登记整个表空间的一些整体属性以及本组所有的区,也就是extent 0 ~ extent 255 这256个区的属性
IBUF_BITMAP 类型: 这个类型的页面是存储本组所有的区的所有页面关于INSERT BUFFER 的信息。
INOD ...