MySQL03-存储引擎

  1. Mysql服务的组件:

47f26e71ad52575bf2ca3f324e9afb80.png

连接池     管理,缓冲用户的连接,线程处理等需要缓存的需求

管理服务和工具组件    系统管理和控制工具,例如备份恢复,mysql复制,集群等

sql接口   接受用户的sql命令,并返回用户查询的结果

查询解析器   sql命令传递到解析器的时候会被饥饿稀奇验证和解析(权限,语法结构)

查询优化器   sql语句在查询之前会使用查询优化其对查询进行优化

select id,name from user where age=10select查询先根据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语言放在begincommit之间,组成一个事务;

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=引擎名
posted @   立勋  阅读(7)  评论(0编辑  收藏  举报
编辑推荐:
· 从 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)
点击右上角即可分享
微信分享提示