MYSQL数据常用存储引擎简介

这里主要介绍mysql两个主要引擎:INNODB、MYISAM。MySQL默认存储引擎是MYISAM。 一、INNODB存储引擎 innodb引擎提供了对数据库ACID事务支持、行级锁和外键约束,处理大数据量的数据库系统。

这里主要介绍mysql两个主要引擎:INNODB、MYISAM。MySQL默认存储引擎是MYISAM。

一、INNODB存储引擎

innodb引擎提供了对数据库ACID事务支持、行级锁和外键约束,处理大数据量的数据库系统。Mysql运行时innodb会在内存中建立缓存池,用于缓存数据和索引。但是该索引不支持全文搜索。不会保存表的行数,例如:count(*)是全表扫描。由于锁的颗粒小写入操作时不会锁定全表。

  1. 适用场景

1)经常写入操作、并发更新请求。

2)支持事务回滚、数据恢复(通过bin-log日志)

3)支持外键约束

4)支持自增列auto_increment

二、MYISAM存储引擎

myisam引擎是mysql默认的存储引擎,它不支持事务、行级锁、外键约束,在执行写入操作时需要锁定全表,效率低。myisam可以保存行数,例如:count(*)不会扫描全表而是直接读取行数,效率高。读取数据大过写入操作myisam很适用。

  1. 适用场景
1)myisam不支持事务,如使用myisam存储数据可以在service层根据业务需求做控制。

2)经常对表进行枷锁的场景、不支持外键。

3)查询效率很高

4)不能自动表损坏恢复数据

三、INNODB与MYISAM使用索引数据结构

innodb和myisam都是使用B+Tree结构

MyIASM引擎,B+树的数据结构中存储的内容实际上是实际数据的地址值。

Innodb引擎的索引存储的是实际的数据。

四、INNODB与MYISAM的区别

  1. innodb主键索引

表数据文件本身就是索引文件,必须要有主键。

2.InnoDB的辅助索引(Secondary Index, 也就是非主键索引)

会包含主键列,比如名字建立索引,内部节点会包含名字,叶子节点会包含该名字对应的主键的值,如果主键定义的比较大,其他索引也将很大。

3. myisam主索引和辅助索引(Secondary key)

结构上和innodb没有任何区别,只是主索引要求key是唯一的,辅助索引可以重复,结构上没有任何区别,只是主索引要求key是唯一的,辅助索引可以重复。

五、修改存储 引擎的几种方式

1、修改配置文件my.ini

将mysql.ini另存为my.ini,在[mysqld]后面添加default-storage-engine=InnoDB,重启服务,数据库默认的引擎修改为InnoDB

2、建表指定

create table user(   
    id int primary key,   
    name varchar(50)   
)type=Innodb;

3、建表后更改

alter table user
 type = InnoDB;

查看修改是否成功:

show table status from user; 

mysql其他存储引擎

Memory, Blackhole, CSV, Performance_Schema,Archive, Federated , Mrg_Myisam