mysql存储引擎

编程 阿里云知识 1个月前 (04-21) 67次浏览 扫描二维码

MySQL存储引擎是数据库底层软件组织,用于创建、查询、更新和删除数据的数据库管理系统(DBMS)工具。不同的存储引擎提供不同的存储机制、索引技巧和锁定水平等功能,使用不同的存储引擎,可以获得特定的功能。MySQL是插件式存储引擎,提供了可插板式的存储引擎,可以根据需要使用相应引擎,或者编写存储引擎。

在MySQL中,不需要在整个服务器中使用同一种存储引擎,针对具体的要求,可以对每一个表使用不同的存储引擎。MySQL中的数据用各种不同的技术存储在文件(或内存)中。这些技术中的每一种技术都使用不同的存储机制、索引技巧、锁定水平,并且最终提供广泛的不同的功能和能力。通过选择不同的技术,可以获得额外的速度或者功能,从而改善应用的整体功能。

常见的MySQL存储引擎包括:

  • MyISAM:使用这个存储引擎,每个MyISAM在磁盘上存储成三个文件,frm文件存储表的定义数据,MYD文件存放表具体记录的数据,MYI文件存储索引。MYI文件用来存储索引,但仅保存记录所在页的指针,索引的结构是B+树结构。MyISAM不支持事务处理,但是它的速度非常快,适合于查询频繁的应用。
  • InnoDB:InnoDB是MySQL的默认存储引擎,支持事务处理和外键约束。它的数据存储在表空间中,支持行级锁定和MVCC多版本并发控制。InnoDB的B+树索引和MyISAM的B+树索引类似,但是它的索引和数据是分开存储的,可以避免数据碎片问题。
  • MEMORY:使用MySQL Memory存储引擎的出发点是速度,为得到最快的响应时间,采用的逻辑存储介质是系统内存。虽然在内存中存储表数据确实会提供很高的性能,但当mysqld守护进程崩溃时,所有的Memory数据都会丢失。它要求存储在Memory数据表里的数据使用的是长度不变的格式,这意味着不能使用BLOB和TEXT这样的长度可变的数据类型。VARCHAR是一种长度可变的类型,但因为它在MySQL内部当做长度固定不变的CHAR类型,所以可以使用。
  • BLACKHOLE:MySQL在5.x系列提供了Blackhole引擎–“黑洞”,其作用正如其名字一样:任何写入到此引擎的数据均会被丢弃掉,不做实际存储;Select语句的内容永远是空。那么,一个不能存储数据的引擎有什么用呢?Blackhole虽然不存储数据,但是MySQL还是会正常的记录下Binlog,而且这些Binlog还会被正常的同步到Slave上,可以在Slave上对数据进行后续的处理。这样对于在Master上只需要Binlog而不需要数据的场合下,balckhole就有用了。
  • Archive:Archive是归档的意思,在归档之后很多的高级功能就不再支持了,
喜欢 (0)
阿里云最新优惠活动,点击查看
腾讯云最新优惠活动,点击查看
腾讯云香港及海外免备案服务器优惠活动,点击查看
华为云服务器本周优惠活动,点击查看