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;