MySQL体系架构和存储引擎

本文深入解析MySQL的四种存储引擎:MyISAM、InnoDB、MEMORY和ARCHIVE的特点及应用场景。涵盖了C/S架构、体系架构、索引机制、锁机制、事务支持等关键概念。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

体系架构

C/S架构

客户端 进程名mysql
服务器 进程名mysqld (连接池、服务管理模块、SQL API、SQL解析器、SQL优化器、缓冲区、数据库文件set在磁盘,存储引擎、记录日志模块log)

由客户端发起连接请求(mysql -uroot -p),在服务器端由连接池接受请求,服务管理模块拿到用户信息进行匹配,匹配成功则连接成功。

然后阻塞等待客户端发起SQL语句请求,SQL语句到达 SQL API,API将语句交给解析器分析(词法、语法)然后交给优化器优化(就会产生N个执行策略计划,根据算法选择最合适的一条执行)执行前首先从缓冲区查数据,如果不存在就将查询请求交给某个存储引擎,存储引擎根据它自己针对数据库底层文件的读写查询方式在底层的数据库文件中拿到数据,并做日志记录,然后将数据一份交给缓冲区,一份沿着API接口交给客户端。

存储引擎
MyISAM

支持全文索引,不支持外键,B+树索引,锁机制是表锁,不支持事务,数据在磁盘存储

数据和索引分离,在索引树的叶子节点中只存放数据的地址。

一个MyISAM的表生成三个文件:.frm(创建表的信息和配置信息),.myd(数据信息a) .myi(索引)

数据可以离散或随机分布 非聚集索引

select *from stu where name=“xxx”;
只需要查询一次,叶子节点上存储的是数据。

InnoDB

不支持全文索引,支持外键,B+树索引,锁机制是行锁,支持事务,数据在磁盘存储

索引当成数据的一部分,数据直接在叶子节点上存储

数据范围比较聚集

如果设计过程中没有给出索引,没有主键没有唯一键,就会自动添加一个6字节的隐藏的字段作为主键,为每一行生产一个6字节的id作为主键。

select *from stu where name=“xxx”;
需要查询两次:

  1. 查询辅助索引,找主索引的索引值
  2. 查询主索引,找数据
MEMORY

支持哈希、B+树索引,默认是哈希索引

数据在内存存储(数据不安全,容易丢失),临时表只做临时使用
将varchar当作char处理
不支持.text字段,BLOB图片类型字段

在真实处理过程中,MEMROY会只处理text种可处理的字段,不可处理的会交给MyISAM处理,则数据就会有一部分在内存,一部分在磁盘所以在使用过程中尽量避免这两个字段。

ARCHIVE

归档压缩 1:10数据压缩
适应于数据量大 查询少 比如 :日志数据记录
只支持insert和select操作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值