数据库笔记

MySQL 支持的存储引擎

MySQL 的存储引擎主要分为两大类:事务型、非事务型,从上图中的“Transactions”一列可以看出来,只有 InnoDB 引擎支持事务。

在 MySQL 5.5 及之后的版本中,默认的存储引擎是 InnoDB,而在这之前是 MyISAM。

不同的存储引擎简介

  • InnoDB
  • MyISAM
  • Memory
  • CSV
  • Merge
  • Archive
  • Blackhole
  • Federated
  • Example

InnoDB 是最广泛使用的存储引擎。支持事务,满足 ACID 约束。支持行级锁,崩溃恢复和多版本并发控制(MVCC)。是唯一支持外键引用完整性约束的存储引擎。

MyISAM 是一个很快的存储引擎。不支持事务。只支持表级锁。常用在 Web 和数据仓库中。

Memory 将数据表创建在内存中,是最快的存储引擎。不支持事务,支持表级锁。Memory 存储引擎很适合于创建临时表或者快速查询的场景。当数据库重启时,内存中的数据会丢失。

CSV 将数据存储为 CSV 格式的文件。CSV 是一种通用的、相对简单的文件格式,可以很方便的被其他应用(如 Excel)读取。

Merge 在新版 MySQL 中称为 MRG_MyISAM,它将一组相似的 MyISAM 表组合起来,视作一个表。Merge 表本身没有数据,实际是在操作底层的 MyISAM 表。Merge 存储引擎能够更简单的管理大量数据,适用于数据仓库(如服务器日志)等场景。

Archive 存储引擎针对高速插入进行了优化。它会将插入的数据实时压缩。不支持事务。由于数据被压缩,因此仅支持插入和查询两种功能。适用于用作仓库,存储大量归档数据。

Blackhole(黑洞)存储引擎接受但不存储任何数据(类似于 Linux 中的 /dev/null),查询时永远返回空集。该存储引擎可用于执行性能测试。

Federated(联合)存储引擎可以将多台物理服务器创建为一个逻辑数据库,数据存储在远程服务器中,本地不存储数据。本地服务器上的查询将在远程(联合)表上自动执行。适用于分布式场景。

Example 可以创建表,但不能存储或获取数据,可以用来学习如何编写新的存储引擎。

InnoDB、MyISAM、Memory 详解

https://imageslr.com/2020/db-engine.html#innodbmyisammemory-%E8%AF%A6%E8%A7%A3

数据库为什么用 B+ 树做索引?

用 B+ 树是为了减少 I/O 次数:

  • 不可能把索引全部加载到内存中,只能逐一加载每个索引节点
  • B+ 树的单个节点中包含的值个数越多,那么节点总数就会越少,I/O 次数也越少
  • B+ 树高度一般为 2-4 层,查找记录时最多只需要 2-4 次 I/O
  • 相反,二叉搜索树的高度高,所以需要的 I/O 次数更多
    如果是内存数据库,不涉及磁盘 I/O,可以直接用二叉搜索树
全部评论

相关推荐

球球别再泡了:坏,我单9要了14
点赞 评论 收藏
分享
10-28 14:42
门头沟学院 Java
watermelon1124:因为嵌入式炸了
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务