MySQL进阶学习一(2024.10.07版)

2024-10-06

--------------------------------------------------------------------------------------------------------------------------------

1.一条SQL语句是如何执行的

单进程的多线程模型

MySQL的物理目录

show global variables like "%basedir%";

InnoDB是如何存储表数据的

  • InnoDB其实是使用页为基本单位来管理存储空间的,默认的页大小为16KB。
  • 对于InnoDB存储引擎来说,每个索引都对应着一棵B+树,该B+树的每个节点都是一个数据页,数据页之间不必要是物理连续的,因为数据页之间有双向链表来维护着这些页的顺序
  • InnoDB的聚簇索引的叶子节点存储了完整的用户记录,也就是所谓的索引即数据,数据即索引

系统表空间(system tablespace)
系统表空间可以对应文件系统上一个或多个实际的文件,默认,InnoDB会在数据目录下创建一个名为ibdata
独立表空间(file-per-table tablespace)
在MySQL5.6.6以及之后的版本中,InnoDB默认为每一个表建立一个独立表空间,根据参数innodb_file_per_table控制

客户端与服务端的交互

数据库的核心在于存储引擎

MySQl逻辑架构

向MySQl发送一个请求---连接器

客户端如果长时间没有动静,连接器会将其断开,由wait_timeout控制,默认是8

长期使用长连接会导致内存飙升

向MySQl发送一个请求---查询缓存

将缓存放入一个引用表之中,通过哈希值进行引用

查询缓存时按需使用的,参数querycache type设置成DEMAND(默认不使用查询缓存)
虽然查询缓存有时可以提千系统性能,但也不得不因维护这块缓存而造成一些开销,比如每次都要去查询缓存中检索,查询请求处理完需要更新查询缓存,维护该查询缓存对应的内存区域。从MySQL 5.7.20开始,不推荐使用查询缓存,并在MySQL8.0中删除。

向MySQl发送一个请求---分析器

向MySQl发送一个请求---优化器

基于成本的查询优化器(Cost-Based Optimizer),IO和CPU

向MySQl发送一个请求---执行引擎

三个阶段的权限判断

各种不同的存储引擎向上边的MySQL服务器层提供统一的调用接口(也就是存储引擎API)包含了几十个底层函数,像"读取索引第一条内容"、"读取索引下一条内容"、"插入记录"等等。

存储引擎

从 MySQL5.5之后,默认的存储引擎是 InnoDB。InnoDB 是一个通用的存储引擎,除非有特殊需求,推荐使用InnoDB.
SHOW ENGINES;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值