存储引擎

存储引擎的概念

  • MySQL 中的数据用各种不同的技术存储在文件(或者内存)中。
  • 这些技术中的每一种技术都使用不同的存储机制、索引技巧、锁定水平并且最终提供广泛的不同的功能和能力。
  • 通过选择不同的技术,你能够获得额外的速度或者功能,从而改善你的应用的整体功能。
  • 这些不同的技术以及配套的相关功能在 MySQL 中被称作存储引擎。
  • 例如:如果你在研究大量的临时数据,你也许需要使用内存存储引擎。内存存储引擎能够在内存中存储所有的表格数据。也许需要一个支持事务处理的数据库(以确保事务处理不成功时数据的回退能力)选择支持事务的存储引擎。

查看存储引擎

show engines;

查看当前使用的存储引擎

show variables like '%storage_engine%';

MyISAM 和 InnoDB 的区别

主外键

  • MyISAM:不支持。
  • InnoDB:支持。

事务

  • MyISAM:不支持。
  • InnoDB:支持。

行表锁

  • MyISAM:表锁,操作一条记录也会锁住整个表,不适合高并发的操作。
  • InnoDB:行锁,操作时, 只锁某一行, 不对其它行有影响,适合高并发的操作。

缓存

  • MyISAM:只缓存索引, 不缓存数据。
  • InnoDB:不仅缓存索引, 还要缓存真实数据, 对内存的要求比较高, 而且内存的大小对性能有决定性的影响。

表空间

  • MyISAM:小。
  • InnoDB:小。

关注点

  • MyISAM:性能。
  • InnoDB:事务。

默认安装

  • MyISAM:是
  • InnoDB:是

文件结构

MyISAM

  • b.frm:描述表结构文件,字段长度等。
  • b.MYD(MYData):数据信息文件,存储数据信息(如果采用独立表存储模式)
  • b.MYI(MYIndex):索引信息文件。

InnoDB

  • b.frm:描述表结构文件,字段长度等。
  • b.ibd:存储数据信息和索引信息。
posted @ 2021-02-20 19:33  BNTang  阅读(90)  评论(0编辑  收藏  举报