一、存储引擎
数据库存储引擎是数据库底层软件组织,数据库管理系统(DBMS)使用数据引擎进行创建、查询、更新和删除数据。不同的存储引擎提供不同的存储机制、索引技巧、锁定水平等功能,使用不同的存储引擎,还可以获得特定的功能。
存储引擎主要有: 1. InnoDB,2. MyIsam , 3. Memory, 4. Archive, 5. Federated, 6.CSV。
1、InnoDB
InnoDB是MySQL的默认事务型引擎,它被设计用来处理大量的短期(short-lived)事务。 从MySQL 5.5版本开始是默认的表存储引擎 。
适用场景:处理大量的短期(short-lived)事务。
特点:
1.支持事务:用来处理大量的短期事务
2.支持外键:保证数据的完整性
3.支持行锁:操作时只锁某一行,不对其它行有影响,适合高并发的操作
4.支持索引(聚簇索引)
2、 MyIsam
MyISAM提供了大量的特性,包括全文索引、压缩、空间函数(GIS)等,但MyISAM不支持事务和行级锁,有一个毫无疑问的缺陷就是崩溃后无法安全恢复。
适用场景:常应用于只读或者以读为主的数据场景。
特点:
1.不支持事务
2.不支持外键
3.支持表锁:操作一条记录也会锁住整个表,不适合高并发的操作
4.支持索引(非聚簇索引)
3、Memory
Memory(也叫 HEAP)堆内存:使用存在内存中的内容来创建表。每个 MEMORY 表只实际对应一个磁盘文件。 MEMORY 类型的表访问非常得快,因为它的数据是放在内存中的,并且默认使用HASH 索引。但是一旦服务关闭,表中的数据就会丢失掉。 Memory 同时支持散列索引和 B 树索引, B树索引可以使用部分查询和通配查询,也可以使用<,>和>=等操作符方便数据挖掘,散列索引相等的比较快但是对于范围的比较慢很多
适用场景:需要快速地访问数据,并且这些数据不会被修改,重启后丢失也没有关系。 Memory表至少比MyISAM表要快一个数量级。
4、 Archive
Archive档案存储引擎只支持INSERT和SELECT操作,在MySQL5.1之前不支持索引。
Archive引擎适合日志和数据采集类应用。
5、Federated
Federated引擎是访问其他MySQL服务器的一个代理,尽管该引擎看起来提供了一种很好的跨服务器的灵活性,但也经常带来问题,因此默认是禁用的。提供了从多个物理机上联接不同的 MySql 服务器来创建一个逻辑数据库的能力。
Federated引擎适用于分布式或者数据市场的场景。
6、CSV
CSV引擎可以将普通的CSV文件作为MySQL的表来处理,但不支持索引。
CSV引擎可以作为一种数据交换的机制,非常有用。
CSV存储的数据直接可以在操作系统里,用文本编辑器,或者excel读取。
二、存储引擎相关命令
1、查看命令
1. 查看当前MySQL版本,默认的存储引擎:
show variables like "%stroage_engine";
2. 查看当前MySQL版本,提供的存储引擎:
show engines;
2、建表时指定存储引擎
create table test(
id int;
name varchar(20);
)engine=InnoDB; --指定存储引擎
3、修改存储引擎
1. 使用alter table 语句修改一个已经存在的表的存储引擎:
alter table 表名 engine = 指定的存储引擎;
例如:alter table test engine = MyISAM;
2. 修改mysql配置文件,一般名称叫my.ini文件,修改完之后重启mysql服务。
在[mysqld]下面加上:
default-storage-engine=INNODB