存储引擎MyISAM和InnoDB

发布于:2024-06-29 ⋅ 阅读:(17) ⋅ 点赞:(0)

目录

一、存储引擎概述

1.存储引擎概念

2.存储引擎分类

3.选择存储引擎的原则

二、InnoDB 存储引擎

三、MyISAM 存储引擎

四、实验操作


一、存储引擎概述

1.存储引擎概念

数据库存储引擎是数据库底层软件组件,数据库管理系统使用数据库引擎进行创建,查询,更新和删除数据。不同存储引擎提供不同存储机制,搜索技巧,锁定水平。MySQL核心是存储引擎。

MySQL中,可以利用show  engines 显示数据库引擎。可以在每一个表使用不同的存储引擎。

MySQL 5.7 支持的存储引擎有 InnoDB、MyISAM、Memory、Merge、Archive、Federated、CSV、BLACKHOLE。

2.存储引擎分类

innodb: 64T 、支持事务、B树索引、数据缓存、支持外键

myisam:256T、支持全文索引、B树索引、

memory:内存、B树索引、hash索引

功能

MylSAM

MEMORY

InnoDB

Archive

存储限制

256TB

RAM

64TB

None

支持事务

No

No

Yes

No

支持全文索引

Yes

No

No

No

支持树索引

Yes

Yes

Yes

No

支持哈希索引

No

Yes

No

No

支持数据缓存

No

N/A

Yes

No

支持外键

No

No

Yes

No

 备注:
Innodb:事务型数据库的首选引擎,支持事务安全表(ACID),支持锁定和外键,InnoDB是默认存储引擎。

MyISAM:基于ISAM存储引擎,进行扩展,在Web、数据仓储最常用的存储引擎。MyISAM拥有较高插入,查询速度,但是不支持事务。

MeMORY:将存储数据存储到内存中,进行快速查询和引用。

3.选择存储引擎的原则

提供提交、回滚和恢复的事务安全表能力,选择InnoDB。

用来插入和查询记录,MyISAM提供较高的处理效率。

存储临时数且数据量不大,不需要较高的安全性,选择MeMORY。

二、InnoDB 存储引擎

用 InnoDB 存储引擎是最理想的选择:

(1)更新密集的表:InnoDB 存储引擎特别适合处理多重并发的更新请求。

(2)事务:InnoDB 存储引擎是支持事务的标准 MySQL 存储引擎。

(3)自动灾难恢复:与其它存储引擎不同,InnoDB 表能够自动从灾难中恢复。

(4)外键约束:MySQL 支持外键的存储引擎只有 InnoDB。

(5)支持自动增加列 AUTO_INCREMENT 属性。
 

Innodb的数据文件:

ibd:数据表的数据文件

frm:数据表的元数据

opt:存储的是mysql的一些配置信息,如编码、排序的信息等

三、MyISAM 存储引擎

每个 MyISAM 表在磁盘上存储成 3 个文件,其中文件名和表名都相同,但是扩展名分别为:

(1)frm(存储表定义)

(2)MYD(MYData,存储数据)

(3)MYI(MYIndex,存储索引)
 

MyISAM 表还支持 3 种不同的存储格式:

(1)静态(固定长度)表

(2)动态表

(3)压缩表

四、实验操作

修改默认的存储引擎

(1)创建表,并查看默认用的存储引擎

mysql> create database auth;

mysql> use auth  

mysql> CREATE TABLE t1 (user_name CHAR(16), user_passwd CHAR(48));

mysql> show table status from auth where name='t1'\G

(2)通过 alter table 修改

mysql> alter table t1 engine=MyISAM;

mysql> show table status from auth where name='t1'\G

(3)通过配置文件修改

[root@localhost ~]# vim /etc/my.cnf

[mysqld]

#添加下面语句

default-storage-engine=MyISAM

[root@localhost ~]# systemctl restart mysqld

[root@localhost ~]# mysql -uroot -ppwd123

mysql> use auth

mysql> CREATE TABLE t2 (user_name CHAR(16), user_passwd CHAR(48));

mysql> show table status from auth where name='t2'\G

注意:

通过配置文件修改的方法,对以前的老表不会有影响,只会影响以后新创建的表,并且在创建表时没有指定存储引擎的情况。

(4)通过 create table 创建表时指定存储引擎

mysql> use auth

mysql> create table t3 (id int(10),name char(20)) engine=INNODB;

mysql> show table status from auth where name='t3'\G

(5)临时修改默认的存储引擎

SET default_storage_engine=< 存储引擎名 >


网站公告

今日签到

点亮在社区的每一天
去签到