@IT·互联网

mysql常用的两种引擎

2020-03-06  本文已影响0人  无崖老师

引擎的介绍

形式:
 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;

图片.png

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
内存型。
在内存中存储数据和索引。
特点:快。缓存型引擎。

上一篇下一篇

猜你喜欢

热点阅读