首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >MYSQL-数据引擎(MyISAM)

MYSQL-数据引擎(MyISAM)

作者头像
运维小路
发布2025-09-30 15:38:42
发布2025-09-30 15:38:42
10400
代码可运行
举报
文章被收录于专栏:运维小路运维小路
运行总次数:0
代码可运行

作者介绍:简历上没有一个精通的运维工程师,下面的思维导图也是预计更新的内容和当前进度(不定时更新)。

数据库是一个系统(应用)最重要的资产之一,所以我们的数据库将从以下几个数据库来进行介绍。

MySQL(本章节)

PostgreSQL

MongoDB

Redis

Etcd

1.什么是数据库引擎

数据库引擎(更准确的叫法是存储引擎)是 MySQL 的一个关键特性,它决定了数据如何被存储、索引以及支持哪些功能。

你可以将存储引擎理解为数据库的“大脑”或“心脏”,它负责:

  • 数据存储格式:数据如何写在磁盘上。
  • 索引技术:如何创建索引以加速查询(如 B-Tree, Hash, R-Tree)。
  • 锁的粒度:如何处理并发访问(如表锁、行锁)。
  • 事务支持:是否支持 ACID 事务。
  • 外键:是否支持外键约束。

MySQL 的强大之处在于它提供了多种存储引擎,你可以针对不同的表,根据其用途选择最合适的引擎。

2.MyISAM介绍

这是 MySQL 5.5 之前的默认引擎,现在已不推荐在新项目中使用,但在一些旧系统中仍能看到。

  • 核心特性
    • ❌ 不支持事务:无法回滚操作。
    • ❌ 不支持外键
    • 表级锁:任何写操作(INSERT, UPDATE, DELETE)都会锁定整个表。在读多写少的场景下很快,但在有大量写操作或混合读写时,并发性能极差。
    • 全文索引:在早期版本中,它是唯一支持全文索引(FULLTEXT)的引擎。
    • 高速读:如果表主要是用于读(如 SELECT COUNT(*)),且不要求事务,它的速度可能非常快。
  • 适用场景
    • 只读或读多写极少的数据。
    • 不需要事务的简单应用(如博客文章、新闻归档)。
    • 数据仓库中的只读维度表(但现在有更好的选择)。
  • 文件结构
    • .frm:存储表结构。
    • .MYD (MYData):存储数据。
    • .MYI (MYIndex):存储索引。
代码语言:javascript
代码运行次数:0
运行
复制
#这里就是后面创建的MyISAM表
-rw-r----- 1 mysql mysql   8672 Sep 16 21:35 myisam_table.frm
-rw-r----- 1 mysql mysql      0 Sep 16 21:35 myisam_table.MYD
-rw-r----- 1 mysql mysql   1024 Sep 16 21:35 myisam_table.MYI

3. Memory(内存引擎)

  • 核心特性
    • 所有数据存储在内存中:速度极快。
    • 表级锁:并发性能一般。
    • 不支持 TEXT/BLOB 类型:因为内存空间有限。
    • 数据非持久化:服务器重启或崩溃后,表中的所有数据都会丢失。表结构会保留。
  • 适用场景
    • 用于临时表缓存会话管理
    • 存放频繁访问的、非关键的、可以丢失的只读数据。
  • 注意:Redis、Memcached 等专业内存数据库通常是更好的选择。

4. Archive(归档引擎)

  • 核心特性
    • 专为高效存储大量很少被访问的归档或审计数据而设计。
    • 只支持 INSERT 和 SELECT不支持 DELETE, UPDATE 和索引(支持行插入的自动压缩,但不支持索引)。
    • 数据插入时会进行压缩,磁盘 I/O 非常少,存储空间很小。
  • 适用场景
    • 日志记录、审计数据、历史数据归档。

5. CSV(CSV引擎)

  • 核心特性
    • 数据以纯文本格式的 CSV 文件存储在服务器上。
    • 不支持索引。
    • 可以直接用文本编辑器打开查看。
  • 适用场景
    • 快速导出数据为 CSV 格式。
    • 与外部系统交换数据。

6.MyISAM表创建

必须单独指定引擎,否则他会采用默认的引擎,由于我们这里的版本5.7,所以默认是InnoDB。

代码语言:javascript
代码运行次数:0
运行
复制
-- 创建一个使用 MyISAM 存储引擎的表
CREATE TABLE myisam_table (
    id INT NOT NULL AUTO_INCREMENT,
    name VARCHAR(100) NOT NULL,
    description TEXT,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    PRIMARY KEY (id)
) ENGINE=MyISAM;

当然我们通过这个小节只是让你对数据引擎有一个基本的认识,以及历史数据库里面可能会存在的数据引擎有一个认识,新的环境里面基本不会在使用他。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-09-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 运维小路 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • MongoDB
    • 3. Memory(内存引擎)
    • 4. Archive(归档引擎)
    • 5. CSV(CSV引擎)
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档