MySQL03-存储引擎
- Mysql服务的组件:
连接池 管理,缓冲用户的连接,线程处理等需要缓存的需求
管理服务和工具组件 系统管理和控制工具,例如备份恢复,mysql复制,集群等
sql接口 接受用户的sql命令,并返回用户查询的结果
查询解析器 sql命令传递到解析器的时候会被饥饿稀奇验证和解析(权限,语法结构)
查询优化器 sql语句在查询之前会使用查询优化其对查询进行优化
select id,name from user where age=10;
select查询先根据where语句进行选取,而不是先将表全部查询出来以后再进行age过滤
select查询先根据id和name进行属性投影,而不是将属性全部取出后在进行过滤
这两个查询条件连接起来生成最终的查询结果
缓存 如果查询缓存中有命中的查询结果,查询语句就可以直接去查询缓存中取数据
存储引擎 管理操作数据(存储数据,如何更新,查询数据等)的一种方法
与存储引擎相关的概念
事务:从一次连接到数据库开始到结束就是一次事务
事务回滚:在事物执行过程中,任何一步操作没有正确完成,恢复之前的所有操作
事务日志文件:记录对innodb存储引擎的表执行的操作
事务特性
原子性:事物的整个操作是一个整体,不可分割,要么全部成功,要么全部失败。
一致性:事物操作的前后,表中的记录没有变化,真正的记录没有变化,只有提交之后才有变化
隔离性:事物操作是相互隔离不受影响的,两个终端隔离
持久性:事物一旦提交,不可改变,永久改变数据表
没有提交的事物可以回滚
show variables like 'autocommit'; # 查看提交状态
set autocommit=off; # 关闭自动提交
rollback; # 数据回滚
commit; # 提交数据
Mysql锁机制
表级锁:给整张表加锁,其他客户端不可以访问此表
行级锁:只给被访问的行加锁,只锁定某一行,其他行可以被其他客户端访问
页级锁:对整个页面(MySQL管理数据的基本存储单位)进行加锁
读锁(共享锁):支持并发读
写锁(互斥锁、排它锁):是独占锁,上锁期间其它线程不能读表或写表
mysql存储引擎
myisam与innodb的区别
https://blog.csdn.net/qq_35642036/article/details/82820178
1. InnoDB支持事务,MyISAM不支持
对于InnoDB每一条SQL语言都默认封装成事务,自动提交,这样会影响速度,所以最好把多条SQL语言放在begin和commit之间,组成一个事务;
2. InnoDB支持外键,而MyISAM不支持
对一个包含外键的InnoDB表转为MYISAM会失败;
3. InnoDB是聚集索引,MyISAM是非聚集索引
4. InnoDB不保存表的具体行数,执行select count(*) from table时需要全表扫描。而MyISAM用一个变量保存了整个表的行数,执行上述语句时只需要读出该变量即可,速度很快(注意不能加有任何WHERE条件);
5. InnoDB支持表、行(默认)级锁,而MyISAM支持表级锁
6. InnoDB表必须有唯一索引(如主键)(用户没有指定的话会自己找/生产一个隐藏列Row_id来充当默认主键),而Myisam可以没有
7.Innodb存储文件有frm、ibd,而Myisam是frm、MYD、MYI
Innodb:frm是表定义文件,ibd是数据文件
Myisam:frm是表定义文件,myd是数据文件,myi是索引文件
存储引擎 | 特点 | 事务,回滚,外键 | 适用场景 | 相关文件 |
---|---|---|---|---|
Myisam | 支持表级锁 | 不支持 | 查询多的场景 | 表名.MYI 索引信息 |
表名.MYD 表中的数据
表名.frm 表结构|
|INnodb |支持行级锁|支持 |写入多的场景|表名.ibd 索引信息及表里的数据
表名.frm 表结构 |
存储引擎的使用方法
(1)查询操作多的表使用myisam存储引擎,为了节省资源,因为myisam是表级锁
(2)写操作(insert update delete)多的表使用innodb存储引擎,并发访问量大,innodb是行级锁
MySQL关于存储引擎的配置
查看系统当前的存储引擎
show variables like '%engine';
临时修改默认存储引擎为MyISAM
set default_storage_engine=myisam;
列出可用的存储引擎类型
show engines
永久修改默认存储引擎
vim /etc/my.cnf
drfault-srorage-engine=引擎名
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)