mysql 进阶 几个重要知识点

mysql 进阶 几个重要知识点

书本上学到的都是一些mysql 知识都是很基础的,很难深入理解mysql的底层原理。直接去看源码又有几个人能做到?
记录mysql的一些重点难点,以期未来整合深入理解mysql

InnoDB逻辑存储单元主要分为表空间、段、区、页

1、mysql 页 (16KB)

页是InnoDB存储引擎磁盘管理的最小单位,每个页默认16KB
也就是1024 * 16 = 16384 B。

SHOW GLOBAL STATUS LIKE 'Innodb_page_size';

在这里插入图片描述
参考:https://jishuin.proginn.com/p/763bfbd33765

2、MySQL 行 (mysql表的内部表示具有65,535字节的最大行大小限制)

InnoDB存储引擎是按行进行存放的,每个页存放的行记录也是有硬性定义的,最多允许存放16KB/2-200,即7992行记录
InnoDB 对于4KB,8KB,16KB和32KB innodb_page_size 设置,表 的最大行大小(适用于本地存储在数据库页面内的数据)略小于页面的一半 。例如:
对于默认的16KB InnoDB页面大小,最大行大小略小于8KB 。

3. Mysql 区 (extent)

在 InnoDB 存储引擎中,一个区会分配 64 个连续的页。因为 InnoDB 中的页大小默认是 16KB,所以一个区的大小是 64*16KB=1MB。在任何情况下每个区大小都为1MB,为了保证页的连续性,InnoDB存储引擎每次从磁盘一次申请4-5个区。

4、Mysql 段(segment)

段 由一个或多个区组成,区在文件系统是一个连续分配的空间 ,不过在段中不要求区与区之间是相邻的。段是数据库中的分配单位,不同类型的数据库对象以不同的段形式存在。当我们创建数据表、索引的时候,就会相应创建对应的段,比如创建一张表时会创建一个表段,创建一个索引时会创建一个索引段。

5、数据页分裂

假设你现在已经有两个数据页了。并且你正在往第二个数据页中写数据。
关于B+Tree,你肯定知道B+Tree中的叶子结点之间是通过双向链表关联起来的。
在InnoDB索引的设定中,要求主键索引是递增的,这样在构建索引树的时候才更加方便。

那假设你自定义了主键索引,而且你自定义的这个主键索引并不一定是自增的。
然后随着你将数据写入。就导致后一个数据页中的所有行并不一定比前一个数据页中的行的id大。
这时就会触发页分裂的逻辑。
页分裂的目的就是保证:后一个数据页中的所有行主键值比前一个数据页中主键值大。

6、SQL执行顺序

  • 给定sql
SELECT DISTINCT <select_list>
FROM  <left_table> <join_type>
JOIN  <right_table> ON <join_condition>
WHERE  <where_condition>
GROUP BY  <group_by_list>
HAVING <having_condition>
ORDER BY <order_by_condition>
LIMIT <limit_number>
  • 解析顺序
FROM  <left_table>
ON <join_condition>
<join_type> JOIN  <right_table> 
WHERE  <where_condition>
GROUP BY  <group_by_list>
HAVING <having_condition>
SELECT
DISTINCT <select_list>
ORDER BY <order_by_condition>
LIMIT <limit_number>

7、再回头 理解 MySQL索引-B+树

https://blog.csdn.net/qq_24935119/article/details/108222141

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值