写点什么

mysql 存储引擎

作者:周杰伦本人
  • 2022 年 9 月 07 日
    贵州
  • 本文字数:761 字

    阅读完需:约 2 分钟

mysql 存储引擎

Innodb 存储引擎

Innodb 的数据存储在表空间中,表空间由一系列的数据文件组成,Innodb 可以将每个表的数据和索引存放在单独的文件中。


Innodb 采用 MVCC 来支持高并发,实现了四个标准的隔离级别,默认是可重复读,并且通过间隙锁策略解决幻读的问题。间隙锁让 Innodb 不仅仅锁定查询涉及的行,还会对索引中的间隙进行锁定,防止幻行插入。


Innodb 基于聚簇索引建立,聚餐索引对主键查询有很高的性能。它的二级索引(非主键索引)必须包含主键列,主键如果很大的话,其他索引也会很大。

MYISAM 存储引擎

Myisam 将表存储在两个文件中:数据文件和索引文件,分别以.MYD 和.MYI 为扩展名。


MyIsam 不支持事务,不支持崩溃后的安全恢复。


MyIsam 对整张表加锁,而不是针对行。读取时会对需要读到的所有表加共享锁,写入时对表加排他锁。表在读取查询同时,也可以往表中插入新纪录。

Archive 存储引擎

Archive 存储引擎只支持 insert 和 select 操作,Archive 引擎会缓存所有的写并利用 zlib 对插入的行进行压缩,所以比 MyIsam 表的磁盘 io 更少。每次 select 查询都需要执行全表扫描。Archive 适合日志和数据采集类应用,这类应用做数据分析往往需要全表扫描

CSV 引擎

将普通的 CSV 文件作为 Mysql 的表来处理,但这种表不支持索引。CSV 引擎可以作为一种数据交换机制,非常有用。

Memory 引擎

Memory 比 MyIsam 快一个数量级,因为所有数据都保存在内存中,不需要磁盘 io。Memory 表结构在重启以后还会保留,但数据会丢失。


Memory 表支持 hash 索引,因此查找操作非常快,Memory 是表级锁,并发写入的性能较低。不支持 BLOB 或 TEXT 类型的列,并且每行的长度都是固定的,即使指定了 VARCHAR 列,实际存储时也会转换成 CHAR,导致部分内存浪费。


这就是 mysql 存储引擎的大体罗列了,Innodb 存储引擎,MYISAM 存储引擎,Archive 存储引擎,CSV 引擎,Memory 引擎等等还有很多存储引擎,选择合适的使用吧

发布于: 4 小时前阅读数: 26
用户头像

还未添加个人签名 2020.02.29 加入

公众号《盼盼小课堂》,多平台优质博主

评论

发布
暂无评论
mysql存储引擎_9月月更_周杰伦本人_InfoQ写作社区