【MySQL篇笔记】深入浅出MySQL之表类型(存储引擎)的选择

本文深入解析MySQL的各种存储引擎,如MyISAM、InnoDB、MEMORY、MERGE等,对比其特性、适用场景及优缺点,适合数据库管理和开发人员阅读。

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

本系列为《深入浅出MySQL》的笔记,有兴趣的朋友可以阅读该书籍获得更多更详细的知识,如有错误或者侵权请联系,感谢你的阅读和指正

随笔

  1. 插件式存储引擎是MySQL数据库最重要的特性之一
  2. 事务处理:由一个或多个SQL 语句序列结合在一起所形成的一个逻辑处理单元
  3. MySQL5.0支持的存储引擎包括MyISAM、InnoDB、BDB、MEMORY、MERGE、EXAMPLE、NDB Cluster、ARCHIVE、CSV、BLACKHOLE、FEDERATED等

各种存储引擎的特性

特点

MyISAM

InnoDB

MEMORY

MERGE

NDB

存储限制

64TB

没有

事务安全

 

支持

 

 

 

锁机制

表锁

行锁

表锁

表锁

行锁

B树索引

支持

支持

支持

支持

支持

哈希索引

 

 

支持

 

支持

全文索引

支持

 

 

 

 

集群索引

 

支持

 

 

 

数据缓存

 

支持

支持

 

支持

索引缓存

支持

支持

支持

支持

支持

数据可压缩

支持

 

 

 

 

空间使用

N/A

内存使用

中等

批量插入的速度

支持外键

 

支持

 

 

 

  1. 静态表、动态表和压缩表的特点

表名称

优点

缺点

静态表

(默认存储格式)

存储非常迅速
容易缓存
出现故障容易恢复

占用的空间通常比动态表多
存储时会按照宽度定义补足空格,但是在应用访问时不会得到这些空格

动态表

(包含变长字段)

占用的空间相对较少

频繁地更新和删除记录会产生碎片,需要定期执行OPTIMIZE TABLE语句或myisamchk-r命令来改善性能
出现故障时恢复相对比较困难

压缩表
(由myisampack工具创建)

占据非常小的磁盘空间
访问开支非常小

 

什么是索引?

用于加快查找数据速度的一种内部机制。

索引的好处和坏处:

  1. 好处:极大加快查找数据的速度
  2. 坏处:降低增删改的速度

索引的分类:

  1. 主键索引:primary key
  2. 唯一索引:unique key
  3. 全文索引:fulltext
  4. 外键索引:foreign key(字段名……)references 其他表名(对应其他表中的字段名)
  1. InnoDB
    InnoDB引擎的存储方式有共享表空间存储和多表空间存储,即便在多表空间的存储方式下,共享表空间仍然是必须的,InnoDB把内部数据词典和在线重做日志放在这个文件中
  2. MEMORY
    MEMORY存储引擎使用存在于内存中的内容来创建表,每个MEMORY表只实际对应一个磁盘文件,但是表中数据由于是存放于内存之中所以会出现服务关闭,表中数据丢失的情况
    MEMORY类型的存储引擎主要用于那些内容变化不频繁的代码表,或者作为统计操作的中间结果表,便于高效地对中间结果进行分析并得到最终的统计结果。
    使用MEMORY作为存储引擎的表进行更新操作要谨慎,因为数据并没有实际写入到磁盘中,所以一定要对下次重新启动服务后如何获得这些修改后的数据有所考虑
  3. MERGE
    MERGE存储引擎是一组MyISAM表的组合,这些MyISAM表必须结构完全相同,MERGE表本身并没有数据,对MERGR类型的表可以进行查询、更新、删除操作,这些操作实际上是对内部的MyISAM表进行的
  4. TokuDB
    高写性能高压缩的TokuDB是一个高性能、支持事物处理的MySQL和MariaDB的存储引擎,具有高扩展性、高压缩率、搞笑的写入性能,支持大多数在线的DDL操作

几种常用存储引擎的适用环境

存储引擎

适用环境

MyISAM

应用于以读和插入操作为主,只有很少的更新和删除操作,并且对事物的完整性、并发性要求不是很高
主要应用:Web、数据仓储和其他应用环境下

InnoDB

应用于事务的完整性有比较高的要求,在并发条件下要求数据的一致性,数据操作除了插入和查询以外,还包括很多的更新、删除操作,能有效降低由于删除和更新导致的锁定,还可以确保事务的完整提交和回滚
主要应用:计费系统、财务系统等对数据准确性要求比较高的系统

MEMORY

在需要快速定位记录和其他类似数据的环境下,可提供极快的访问,但是对表的大小有限制
主要应用:更新不太频繁的小表,用以快速得到访问结果

MERGE

将一系列等同的MyISAM表以逻辑方式组合在一起,并作为一个对象引用它们
主要应用:数据仓储等VLDB环境十分合适

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值