MySQL存储引擎

在创建表时可以指定表的类型,也就是表的存储引擎。表的存储引擎决定了数据如何存储及如何访问,还有事务如何存储。表的存储引擎在很大程度上影响着处理SQL语句所需的存储空间和速度。不同的存储引擎所具有的特点也有所不同,有些存储引擎在处理很多复杂的SELECT语句时非常适合,而另一些则在实现快速更新时比较适合。

MySQL运行为每个表定义存储引擎,如果默认,则会选择默认的存储引擎。在Windows平台下,默认存储引擎是InnoDB,在Linux平台下则是MyISAM.MySQL还支持其他很多种存储引擎可以使用show engines语句来查看,

这里写图片描述

主要存储引擎:MyISAM、InnoDB、MEMORY介绍:

MyISAM

它不支持事务,也不支持外键,访问速度快,对事务完整性没有要求或者以SElECT INSERT为主的应用基本都可以使用这个引擎来创建表。每个MyISAM在磁盘上存储成3个文件文件的名字都以表的名字开始,扩展名指出文件类型。

  • .frm(存储表定义)
  • .MYD(MYData,数据文件)
  • .MYI(MYIndex,索引文件)

可以把数据文件和索引文件放在不同目录。

InnoDB

InnoDB存储引擎提供了具有提交,回滚和崩溃恢复能力的事务安全。但是对比MyISAM的存储引擎InnoDB写的处理效率差一些并且会占用更多的磁盘空间以保留数据和索引

MEMORY存储引擎

MEMORY存储引擎用存在内存中的内容来创建表。每个MEMORY表和一个磁盘文件关联起来。文件名由表的名字开始,并且由一个.frm的扩展名来指明它存储的表定义。

如名字所指明的,MEMORY表存储在内存中,且默认使用哈希索引。这使得它们非常快,并且对创建临时表非常有用。可是,当服务器关闭之时,所有存储在MEMORY表里的数据丢失。因为表的定义被存在磁盘上的.frm文件中,所以表自身继续存在,在服务器重启时它们是空的。所以在创建临时表时,推荐使用MEMORY存储引擎。

与MyISAM表一样,MEMORY表也不支持事务功能。

作者:itmyhome


本文转载:CSDN博客