创建表时如何指定存储引擎
1,MyISAM引擎
create table [if not exists] my_myisam(
id int,
name varchar(10)
) engine = MyISAM;
2,MEMORY引擎
create table my_memory(
id int,
name varchar(10)
) engine = MEMORY;
三种存储引擎的特点
InnoDB:高可靠性,高性能
InnoDB:1,事务;2,行级锁;3,外键约束
InnoDB的表都有对应的.idb文件(表空间文件)用来存储数据,索引,表结构
一个变量:innodb_file_per_table (8.0以上版本是开着的,意味着每张表对应一个表空间文件)
show variables like 'innodb_file_per_table';
InnoDB的逻辑存储结构是:表空间,段,区(大小固定为1M,包含64页),页(16k),行
在众多的引擎中只有InnoDB支持事务
MyISAM最初版本的mysql使用的存储引擎
特点:1,支持表级锁;2,存储速度快;3,不支持事务;4不支持外键
包含三个文件:1,.sdi(存储表结构);.MYD(存储数据);3,.MYI(存储索引)
需要较多的插入数据时,选用MyISAM
MEMORY存储引擎
存储于内存中,速度快;只有一个文件:.sdi(存储表结构);用于存储临时表;断电数据会丢失;支持哈希索引。
最大的特点就是速度快;由于存储在内存中,假若存储几个G的数据,代价很大
使用场景选择
绝大多数的使用场景都是用的InnoDB,需要使用MyISAM,MEMORY时,有其他的更好的选择(NoSQL)
在应用中如果对事务的完整性要求比较高,在并发的条件下要求数据的一致性,数据操作除了插入,查询,还包括更新删除,InnoDB比较合适。
应用中较多的是读和插入操作,很少使用更新删除,对事务的并发性,完整性要求不高则选MyISAM比较合适。
MEMORY:数据存储在内存中,由于速度比较快,多用于临时表缓存。缺点:对表的大小有限制,太大的表无法缓存在内存中;无法保证数据的安全性。