MySQL 常用的两种存储引擎:MyISAM、InnoDB

myisam

MyISAM 存储引擎是 MySQL 关系数据库系统 5.5 版本之前默认的存储引擎,前身是 ISAM。

ISAM 的特点:ISAM 执行读取操作的速度很快,而且占用不大量的内存和存储资源,它不支持事务处理,不能够容错。

MyISAM 的特点: 

(1)不支持事务

(2)数据更新时锁定整个表

(3)数据库在读写过程中相互阻塞

(4)缓存只会缓存索引文件,不会缓存数据 

(5)因为功能弱 所以速度过程较快而且占用资源相对较少。

(6)不支持外键约束,只支持全文索引 

(7)每个 MyISAM 在磁盘上存储成三个文件,每一个文件的名字以表的名字开始,扩展名指出文件类型.frm 文件存储表定义.MYD 文件存储数据(MYData).MYI 文件存储索引文件(MYIndex)

MyISAM 使用的生成场景:

(1)业务不需要事务支持

(2)一般单方读取数据比较多的业务,或单方面写入数据比较多的业务,不适合读写都频繁的场合

(3)对数据业务一致性要求不是非常高的业务

(4)读写并发访问相对较低的业务 纯读纯写高并发的也可以

(5)数据修改相对较少的业务

(6)服务器硬件资源相对比较差

InnoDB

InnoDB 的特点 :

(1)支持 4 个事务隔离级别

(2)行级锁定,但是全表扫描仍然会是表级锁定

(3)读写阻塞与事务隔离级别相关

(4)具有非常高效的缓存特性:能缓存索引,也能缓存数据

(5)表与主键以簇的方式存储

(6)支持分区、表空间,类似 oracle 数据库

(7)支持外键约束

(8)对硬件资源要求比较高

InnoDB 使用的生成场景 :

(1)业务需要事务的支持

(2)行级锁定对高并发有很好的适应能力,但需要确保查询是通过索引来完成

(3)业务数据更新较为频繁的场景,如:论坛,微博

(4)业务数据一致性要求较高,如:银行业务

(5)硬件设备内存较大,利用 InnoDB 较好的缓存能力来提高内存利用率,减少磁盘 IO

的压力。

企业选择存储引擎的依据

1、考虑每个存储引擎提供了哪些不同的核心功能及应用场景

2、支持的字段和数据类型

3、锁定类型 表锁定:MyISAM、MEMORY  行锁定:InnoDB  页锁定:BDB

4、索引的支持

5、事务处理的支持

配置适合的存储引擎

查看数据库可配置的存储引擎 

mysql> show engines ;          #Support 为DEFAULT的表示当前mysql使用的默认引擎

查看表使用的存储引擎 

方法一

show table status from 库名 where name='表' \G;  #engine为使用的储存引擎   

方法二

show create table 表名\G;    

 配置存储引擎为所选择的类型 

方法一  修改表的默认引擎

alter table 表名 engine=引擎;

方法二   修主配文件的默认引擎

vim my.cnf

[mysqld]

#default-storage-engine = MYISAM  修改为  default-storage-engine = innoDB

重启mysql 重新登入

方法三     建表时指定引擎

create table 表名(表格式) engine=innodb;

 

posted on 2018-08-04 10:31  临渊慕鱼不如退而结网  阅读(167)  评论(0编辑  收藏  举报