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(路径:...\MySQL\my.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存储空间在保存数据和索引(...\MySQL\data\ibdata1)
随着数据库的增大,在data目录下innodb的ibdata1文件可能会不只一个,但不会区分表
另:在安装mysql文件的时候,配置mysql过程中也会有一步提示表空间文件的安装路径