当前位置: 首页 > news >正文

Mysql 中的 MyISAM 引擎

🧱 什么是 MyISAM?

MyISAM 是 MySQL 早期的默认存储引擎,特点是结构简单、读取速度快,但不支持事务和行级锁。

它适合那些 读多写少、对事务安全要求不高 的场景,比如旧版博客系统、数据仓库等。

📦 MyISAM 的核心特点(对比 InnoDB)

特性MyISAMInnoDB
✅ 事务支持❌ 不支持事务✅ 支持事务,ACID
✅ 锁粒度表级锁(锁整个表)行级锁
✅ 外键❌ 不支持✅ 支持
✅ 崩溃恢复❌ 容易数据损坏✅ 支持 crash-safe
✅ 读写效率高(读多写少场景)写性能稍弱但更稳定
✅ 存储格式每张表对应 .frm + .MYD + .MYI.ibd 文件或共享表空间
✅ 表大小支持大表(默认 256TB)也支持大表,但管理复杂一些

🧩 组成结构

假设有一个表 users,使用 MyISAM 引擎:
会有三个文件:

文件名类型用途
users.frm表结构定义存储表的字段结构等信息
users.MYDMyData存储真正的数据
users.MYIMyIndex存储索引信息

⚙️ 主要功能点

1️⃣ 表级锁

  • 每次读或写都会锁整个表
  • 写操作容易阻塞读操作,写并发性能差

2️⃣ 不支持事务

  • 没有 rollback、commit 的概念
  • 执行错误无法回滚数据

3️⃣ 支持全文索引(全文检索)

  • 在早期版本中,MyISAM 比 InnoDB 更早支持 FULLTEXT 索引(MySQL 5.6 之前)

4️⃣ 插入缓存

  • 有一个 key cache 缓存索引块,类似 InnoDB 的 buffer pool,但只缓存索引,不缓存数据页

5️⃣ 启动修复机制

  • 崩溃后,系统需要使用 myisamchk 工具修复表
  • 数据容易损坏,不适合对可靠性有要求的业务系统

💡 使用场景(现在基本用于只读数据)

  • 静态博客网站(只读内容)
  • 数据仓库 / 报表系统(大量 select,极少更新)
  • 需要快速全文搜索(旧版本)

不过在现代系统中,几乎 100% 会推荐用 InnoDB,除非你明确知道你要干啥。

🛠️ 如何创建 MyISAM 表?

CREATE TABLE users (
  id INT PRIMARY KEY,
  name VARCHAR(100)
) ENGINE=MyISAM;

🧠 总结

MyISAM 是 MySQL 早期的默认引擎,速度快但功能弱,适合读多写少、事务要求低的场景,现在更多用于历史兼容或只读表。

http://www.dtcms.com/a/111972.html

相关文章:

  • 第十五届蓝桥杯单片机省赛程序设计试题
  • CSS 3D变换,transform:translateZ()
  • 从小米汽车事故反思 LabVIEW 开发
  • 专业的情商测评工具:EQ-i在线测评系统
  • Fastjson 处理 JSON 生成与解析指南
  • 31--当认证协议开始“选秀“:RADIUS、LDAP、AD与本地认证的C位之争
  • react redux的学习,多个reducer
  • drawio导出流程图为白色背景png图片
  • 对OSPF协议的LSA分析
  • Linux系统进程
  • AI 浪潮下企业身份管理:特点凸显,安全挑战升级
  • CMake学习-- install 指令详细说明
  • 11.多线程-信号量-线程池
  • AWS 云运维管理指南
  • ekf-imu --- 四元数乘法符号 ⊗ 的含义
  • SQLite 触发器
  • 深入解析CPU主要参数:选购与性能评估指南
  • ngx_alloc
  • 【2022】【论文笔记】基于相变材料的光学激活的、用于THz光束操作的编码超表面——
  • leetcode-代码随想录-哈希表-有效的字母异位词
  • 2007-2019年各省地方财政交通运输支出数据
  • 动物多导生理信号采集分析系统技术简析
  • 分治算法的使用条件
  • 页面简单传参
  • 【Linux】条件变量封装类及环形队列的实现
  • mybatis慢sql无所遁形
  • 学透Spring Boot — 009. Spring Boot的四种 Http 客户端
  • 科技赋能安居梦:中建海龙以模块化革新重塑城市更新范式
  • 多输入多输出 | Matlab实现BO-GRU贝叶斯优化门控循环单元多输入多输出预测
  • 图解AUTOSAR_SWS_LINStateManager