MySQL ---- 存储引擎
一:存储引擎的概念
-
Mysql 中的数据用各种不同的技术存储在文件中,每一种技术都使用不同的存储机制、索引技巧、锁定水平并最终提供不同的功能,这些不同的技术以及配套的功能在Mysql 中 称为存储引擎。
-
存储引擎就是Mysq 将数据存储文件系统中的存储方式或存储格式
-
#### 目前MySQL 常用的两种存储引擎
-
MyISAM (轻量级)
-
InnoDB
二:存储引擎介绍
-
Mysql 存储引擎是Mysql 数据库服务器中的组件,负责为数据库执行实际的数据 I/O 操作
-
使用特殊存储引擎的主要优点之一在于,仅需提供特殊应用所需的特性,数据库中的系统开销较小,具有有效和更高的数据库性能
-
MySQL系统中,存储引擎处于文件系统之上,在数据保存到数据文件之前会传输到存储引擎,之后按照各个存储引擎的存储格式进行存储。
三:MyISAM 的介绍
1、概念
-
MyISAM 管理非事务表,是ISAM的扩展格式
-
提供ISAM里所没有的索引和字段管理的大量功能
-
MyISAM使用一种表格锁定的机制,以优化多个并发的读写操作
2、特点
- 不支持事务
- 表级锁定形式,数据在更新时锁定整个表
- 数据库在读写过程中相互阻塞
( 会在数据写入的过程阻塞用户数据的读取 ; 也会在数据读取的过程中阻塞用户的数据写入 )
- 通过key_buffer_size 来设置缓存索引,提高访问性能,减少磁盘IO的压力
(但缓存只会缓存索引文件,不会缓存数据)
-
MyISAM存储引擎不支持外键约束,只支持全文索引
-
MyISAM 在磁盘上存储的文件
.frm 文件存储表定义
数据文件的扩展名为 .MYD ( MYData )
索引文件的扩展名是 .MYI ( MYIndex )
四:InnoDB 的介绍
1、特点
- 支持4个事务隔离级别;
- 具有非常高效的缓存特性:能缓存索引,也能缓存数
- 支持分区、表空间,类似oracle数据库
- 表与主键以簇的方式存储
- 行级锁定,但是全表扫描仍然会是表级锁定读写阻塞与事务隔离级别相关
- 适用于对硬件资源要求还是比较高的场合
2、适用场景
- 业务需要事务的支持
- 业务数据更新较为频繁的场景 ,如:论坛,微博等
- 业务数据一致性要求较高 ,如:银行业务
- 行级锁定对高并发有很好的适应能力
- 件设备内存较大,利用Innodb较好的缓存能力来提高内存利用率,减少磁盘IO的压力
五:配置存储引擎
1、查看系统支持的存储引擎
show engines
2、查看表使用的存储引擎
(1)show table status from 库名 where name=' 表名 ';
(2)show create table 表名;
3、修改存储引擎
(1)alter table 修改;
alter table table_name engine=引擎;
示例:
(2)进入/etc/my.cnf , 指定存储引擎并重启服务
default-storage-engine=MyISAM
示例:
[root@localhost mysql]# vim /etc/my.cnf ‘指定存储引擎为 myisam’
[root@localhost mysql]# systemctl restart mysql '重启服务'
(3)create table 创建表时指定存储引擎
create table 表名 (字段) engine=引擎