Mysql:三种存储引擎优缺点分析

存储引擎:MYSQL默认的是INNODB存储引擎,主要了解INNODB,其次就是MYISAM、Memory

存储引擎各自特点:

1.INNODB:

  该存储引擎提供具有提交,回滚、崩溃恢复能力事务安全机制、支持外键、自动增长列等功能,

  索引采用的是聚集索引

  索引和数据存放在同一个文件中,所以INNODB存储引擎的数据存在磁盘上就两个文件。
 文件名和表名是相同的,扩展名分别为:
.frm(存储表的定义)
.ibd(存储的是数据和索引)

2.MYISAM:

该存储引擎不支持事务、也不支持外键;

索引采用非聚集索引
对数据完整性没有要求或者以select、insert为主的应用基本上采用MYISAM存储引擎
索引和数据分开存储,MYISAM在磁盘上存储的数据有三个文件,文件名和表名是相同的,扩展名分别为:
.frm(存储表的定义)
.MYD(MYData 存储数据)
.MYI(MYIndex 存储索引)

3.Memory:

该存储引擎使用内存来存储数据,每个memory表实际存在一个文件,格式.frm(存储表的定义)
memory类型存储引擎表的访问是很快的,因为数据都存放在内存中,默认的索引hash索引(不支持区间查找)
假如服务一旦关闭,表中的数据就不存在了

MYSQL不同的存储引擎的区别
----------------------------------------------------------------------------------------------------------------------------------------
 种类      |     锁机制 |    B_树索引    |哈希索引   |  外键      | 事务          |  索引缓存     |数据缓存
----------------------------------------------------------------------------------------------------------------------------------------
MYISAM|      表锁   |          支持       | 不支持     | 不支持    |不支持        | 支持             |  不支持 
-----------------------------------------------------------------------------------------------------------------------------------------
INNODB|     行锁    |        支持          | 不支持     | 支持       | 支持           | 支持             |  支持 
----------------------------------------------------------------------------------------------------------------------------------------
MEMORY|  表锁     |       支持          | 支持         | 不支持    |不支持         | 支持             |  支持
------------------------------------------------------------------------------------------------------------------------------------
锁机制:在事务并发操作时,并发操作粒度
B-树索引|hash索引:提高访问速度
外键:子表的字段依赖于父表的键,设置两张表的依赖关系
事务:多个SQL语句执行,要么全部成功,要么全部失败,不存在部分成功
索引缓存|数据缓存:在查询时,对源数据未做修改,重复查询是否可以减少磁盘IO


MYSQL设置存储引擎
查看MYSQL支持的存储引擎命令:
show engines;

创建表时设置存储引擎:
create table table_name() engine = innodb;

修改存储引擎:
alter table table_name engine = myisam;

修改配置文件来达到全部表的存储引擎修改
Windows 下my.ini文件 ,Linux下my.cnf文件

[mysqld]
default-storage-engine=INNODB

你可能感兴趣的:(mysql)