mysql--存储引擎

存储引擎:也叫表类型,指的是数据表的存储机制,索引方案等配套相关功能。不同的引擎,由于处理方式不同,会带来不同的功能或者相应优化,根据实际需求选择合理的引擎。

选择表的存储引擎的标准:
是否需要事务支持。
是否支持外键。
并发量的要求。
错误恢复的处理。
是否支持某些具体功能。


最常用的存储引擎:
MyISAM, Indexed Sequential Access Method (有索引的顺序访问方法)
InnoDB
区别:
数据和索引的保存的文件不同:MyISAM是分开保存,而innodb是保存到表空间

MyISAM支持索引压缩,而Innodb索引和数据是绑定保存不压缩,体积大。

Innodb很多时候是行级锁,而myisam是表级锁,innodb的并发高。

InnoDB不支持FULLTEXT类型的索引(新版本的InnoDB也支持)。

Innodb支持事务,外键,数据完整性约束要强。而MYISAM不支持。

InnoDB 中不保存表的具体行数,也就是说,执行select count(*) from table时,InnoDB要扫描一遍整个表来计算有多少行,但是MyISAM只要简单的读出保存好的行数即可。注意的是,当count(*)语句包含 where条件时,两种表的操作是一样的。

对于AUTO_INCREMENT类型的字段,InnoDB中必须包含只有该字段的索引,但是在MyISAM表中,可以和其他字段一起建立联合索引。


mysql的存储引擎默认是INNODB
在mysql的my.ini(路径:...MySQLmy.ini)配置文件中可以找到,如下图:

 

在创建表或者编辑表时可以指定表的存储引擎
利用表属性:engine 引擎类型
alter table tb_name engine 引擎类型

 

 

 

创建表时指定存储引擎:
 


innoDB与myisam区别:

保存的文件方式不同
myisam 一个表,三个文件
tb_name.frm 表结构文件
tb_name.MYD 数据文件(存储引擎)
tb_name.MYI 索引

INNODB 一个表一个文件
tb_name.frm

所有innoDB表,都使用相同的innoDB存储空间在保存数据和索引(...MySQLdataibdata1)
 

随着数据库的增大,在data目录下innodb的ibdata1文件可能会不只一个,但不会区分表

另:在安装mysql文件的时候,配置mysql过程中也会有一步提示表空间文件的安装路径

 

原文地址:https://www.cnblogs.com/zunpeng/p/3880173.html