mysql常用的两种引擎
引擎的介绍
形式:
create table tableName()engine=MyIsAM | InnoDB;
作用:
一种用来存储MySQL中对象(记录和索引)的一种特定的结构(文件结构)存储引擎,处于MySQL服务器的最底层,直接存储数据,规定数据存储的格式。导致上层的操作,依赖于存储引擎的选择.
图片.png
查看mysql数据库,支持的存储引擎有那些
show engines;
图片.png
InnoDB
介绍:
=5.5 默认的存储引擎,MySQL推荐使用的存储引擎。
提供事务,行级锁定,外键约束的存储引擎。
事务安全型存储引擎。更加注重数据的完整性和安全性。
可以很好的解决高并发的问题.
行级锁定:
数据库的数据都是一行一行的存在,如果有需要进行锁定的时候只是锁住一行数据.这样就不妨碍其他人的使用.
[存储格式]
非单独文件存放数据(数据库名 = 文件夹名)
数据库信息 -> db.opt
表结构frm -> 表名.frm
create database php16;
图片.png
b 观察创建成功之后php16数据库的文件结构
图片.png
c 在php16数据库中创建数据表
create table innodb_1(
id mediumint auto_increment primary key,
name varchar(10) not null
)engine=InnoDB;
d innodb_1数据表创建成功之后,观察文件的结构
图片.png
f 插入数据进行测试:ibdata1
insert into innodb_1 values(null,'段誉');
insert into innodb_1 values(null,'虚竹');
insert into innodb_1 values(null,'乔峰');
insert into innodb_1 values(null,'王语嫣');
insert into innodb_1 values(null,'天山童老');
insert into innodb_1 values(null,'慕容复');
图片.png 图片.png
问题:
innodb把所有的数据都放在一个文件中,一旦这个文件损坏,所有的数据都丢失了.
解决办法:可以进行配置,把数据文件单独存放.
配置数据文件的单独存放:
set global innodb_file_per_table=1;(不推荐这种配置)
图片.png
MyISAM
介绍
<= 5.5 MySQL默认的存储引擎。
如果应用是以读操作和插入操作为主,只有很少的更新和删除操作,并且对事务的完整性要求不是很高;其优势是访问的速度快,擅长与处理高速读与写。
ISAM:Indexed Sequential Access Method(索引顺序存取方法)的缩写,是一种文件系统。
数据文件的存储:
所有表的数据文件都是单独存放的,表中的索引和数据也是单独存放的.
数据库结构文件:db.opt
表中数据的存放文件: 表明.MYD
表中索引数据的存放文件:表名.MYI
表结构的定义文件:表名.frm.
因为myisam的所有文件都是独立存放的,所以我们在读取的时候,速度就会比较快.
测试
a 新建myisam引擎数据表
create table myisam_2(
id mediumint auto_increment,
name varchar(10) not null
)engine=MyISAM;
图片.png
b 查看数据表的结构文件
图片.png
数据的插入,观察取出顺序
a 插入数据
insert into myisam_2 values(1,'段誉');
insert into myisam_2 values(11,'虚竹');
insert into myisam_2 values(5,'乔峰');
insert into myisam_2 values(6,'王语嫣');
insert into myisam_2 values(9,'天山童老');
insert into myisam_2 values(8,'慕容复');
b 取出的数据,观察顺序
图片.png
两种引擎的对比
图示
图片.png
两中数据库引擎,如何选择呢?
1 如果是希望以最节约空间和时间的或响应速度更快的方式来管理表,MyISAM数据表是最好的选择.
2 如果新建的表需要用到事务,使用外键或者更高的安全性,以及需要很多用户同时修改(并发问题)某一个表中的数据,则InnoDB数据表更值得考虑.
其他引擎
Archive
存档型。
仅提供:插入和读取操作。没有更新和删除操作。
做:日志类,存档类 业务逻辑。
Memory
内存型。
在内存中存储数据和索引。
特点:快。缓存型引擎。