Mysql
文章平均质量分 96
Evan_su
天道酬勤
展开
-
事务的实现机制
原子性是指一个事务是一个不可分割的工作单位,其中的操作要么都做,要么都不做;如果事务中一个sql语句执行失败,则已执行的语句也必须回滚,数据库退回到事务前的状态。持久性是指事务一旦提交,它对数据库的改变就应该是永久性的。接下来的其他操作或故障不应该对其有任何影响。与原子性、持久性侧重于研究事务本身不同,隔离性研究的是不同事务之间的相互影响。隔离性是指,事务内部的操作与其他事务是隔离的,并发执行的各个事务之间不能互相干扰。原创 2024-06-20 11:38:06 · 1026 阅读 · 0 评论 -
一颗B+树可以存储多少数据?
InnoDB 的数据是按「数据页」为单位来读写的,默认数据页大小为 16 KB。每个数据页之间通过双向链表的形式组织起来,物理上不连续,但是逻辑上连续。数据页内包含用户记录,每个记录之间用单向链表的方式组织起来,为了加快在数据页内高效查询记录,设计了一个页目录,页目录存储各个槽(分组),且主键值是有序的,于是可以通过二分查找法的方式进行检索从而提高效率。为了高效查询记录所在的数据页,InnoDB 采用 b+ 树作为索引,每个节点都是一个数据页。原创 2024-06-18 16:39:34 · 1891 阅读 · 0 评论 -
Mysql的联合索引
Mysql从物理存储上将索引上分为:分为聚簇索引和非聚簇索引主键索引也被称为聚簇索引(clustered index),也叫作聚集索引。其余都称呼为非主键索引也被称为二级索引(secondary index),也叫作辅助索引。聚簇索引的叶子节点存放的是实际数据,所有完整的用户记录都存放在聚簇索引的叶子节点;二级索引的叶子节点存放的是主键值,而不是实际数据。2.1、原创 2024-06-16 00:29:40 · 3284 阅读 · 0 评论 -
Mysql中索引详解
明确一点:MySQL跟B+树没有直接的关系,真正与B+树有关系的是MySQL的默认存储引擎InnoDB,MySQL中存储引擎的主要作用是负责数据的存储和提取,除了InnoDB之外,MySQL中也支持比如MyISAM等其他存储引擎。原创 2024-06-12 18:10:46 · 959 阅读 · 2 评论 -
B+索引的分裂及选择率和索引基数
B+树索引页的分裂并不总是从页的中间记录开始,这样可能会导致页空间的浪费。例子比如下面这个记录:由于插入是以自增的顺序进行的,若这时插入第10条记录然后进行页的分裂操作,那么根据上一节的方法,会将5作为分割点,得到下面两个页:然而由于插入是顺序的,P1这个页中将不会再有记录插入,从而导致空间浪费。而P2又会再次进行分裂。通过这几个信息,InnoDB可以决定是向左还是向右进行分裂,同时决定将哪个作为分裂点。若插入是随机的,则取页的中间记录作为分裂点,这和之前介绍的是相同的。原创 2024-06-14 17:55:18 · 939 阅读 · 0 评论 -
Mysql数据类型解析
MySQL 支持多种类型,大致可以分为三类:数值、日期/时间和字符串(字符)类型。原创 2024-06-13 18:52:44 · 1029 阅读 · 0 评论 -
MySQL数据记录如何存储?
MySQL 的 NULL 值是怎么存放的?MySQL 的 Compact 行格式中会用「NULL值列表」来标记值为 NULL 的列,NULL 值并不会存储在行格式中的真实数据部分。NULL值列表会占用 1 字节空间,当表中所有字段都定义成 NOT NULL,行格式中就不会有 NULL值列表,这样可节省 1 字节的空间。MySQL 怎么知道 varchar(n) 实际占用数据的大小?MySQL 的 Compact 行格式中会用「变长字段长度列表」存储变长字段实际占用的数据大小。原创 2024-06-07 15:38:50 · 1201 阅读 · 0 评论 -
Mysql执行一条语句都有哪些操作
执行一条 SQL 查询语句,期间发生了什么?连接器:建立连接,管理连接、校验用户身份;查询缓存:查询语句如果命中查询缓存则直接返回,否则继续往下执行。MySQL 8.0 已删除该模块;解析 SQL,通过解析器对 SQL 查询语句进行词法分析、语法分析,然后构建语法树,方便后续模块读取表名、字段、语句类型;执行 SQL:执行 SQL 共有三个阶段:预处理阶段:检查表或字段是否存在;将select *中的符号扩展为表上的所有列。优化阶段:基于查询成本的考虑, 选择查询成本最小的执行计划;原创 2024-06-06 17:10:33 · 1019 阅读 · 0 评论