47 张图带你 MySQL 进阶!!!

我们在 MySQL 入门篇主要介绍了基本的 SQL 命令、数据类型和函数,在局部以上知识后,你就可以进行 MySQL 的开发工作了,但是如果要成为一个合格的开发人员,你还要具备一些更高级的技能,下面我们就来探讨一下 MySQL 都需要哪些高级的技能

MySQL 存储引擎 存储引擎概述

数据库最核心的一点就是用来存储数据,数据存储就避免不了和磁盘打交道。那么数据以哪种方式进行存储,如何存储是存储的关键所在。所以存储引擎就相当于是数据存储的发动机,来驱动数据在磁盘层面进行存储。

MySQL 的架构可以按照三层模式来理解

47 张图带你 MySQL 进阶!!!

存储引擎也是 MySQL 的组建,它是一种软件,它所能做的和支持的功能主要有

并发

支持事务

完整性约束

物理存储

支持索引

性能帮助

MySQL 默认支持多种存储引擎,来适用不同数据库应用,用户可以根据需要选择合适的存储引擎,下面是 MySQL 支持的存储引擎

MyISAM

InnoDB

BDB

MEMORY

MERGE

EXAMPLE

NDB Cluster

ARCHIVE

CSV

BLACKHOLE

FEDERATED

默认情况下,如果创建表不指定存储引擎,会使用默认的存储引擎,如果要修改默认的存储引擎,那么就可以在参数文件中设置 default-table-type,能够查看当前的存储引擎

show variables like 'table_type';

47 张图带你 MySQL 进阶!!!

奇怪,为什么没有了呢?网上求证一下,在 5.5.3 取消了这个参数

可以通过下面两种方法查询当前数据库支持的存储引擎

show engines \g

47 张图带你 MySQL 进阶!!!

在创建新表的时候,可以通过增加 ENGINE 关键字设置新建表的存储引擎。

create table cxuan002(id int(10),name varchar(20)) engine = MyISAM;

47 张图带你 MySQL 进阶!!!

上图我们指定了 MyISAM 的存储引擎。

如果你不知道表的存储引擎怎么办?你可以通过 show create table 来查看

47 张图带你 MySQL 进阶!!!

如果不指定存储引擎的话,从MySQL 5.1 版本之后,MySQL 的默认内置存储引擎已经是 InnoDB了。建一张表看一下

47 张图带你 MySQL 进阶!!!

如上图所示,我们没有指定默认的存储引擎,下面查看一下表

47 张图带你 MySQL 进阶!!!

可以看到,默认的存储引擎是 InnoDB。

如果你的存储引擎想要更换,可以使用

alter table cxuan003 engine = myisam;

来更换,更换完成后回显示 0 rows affected ,但其实已经操作成功

47 张图带你 MySQL 进阶!!!

我们使用 show create table 查看一下表的 sql 就知道

47 张图带你 MySQL 进阶!!!

存储引擎特性

下面会介绍几个常用的存储引擎以及它的基本特性,这些存储引擎是 **MyISAM、InnoDB、MEMORY 和 MERGE **

MyISAM

在 5.1 版本之前,MyISAM 是 MySQL 的默认存储引擎,MyISAM 并发性比较差,使用的场景比较少,主要特点是

不支持事务操作,ACID 的特性也就不存在了,这一设计是为了性能和效率考虑的。

不支持外键操作,如果强行增加外键,MySQL 不会报错,只不过外键不起作用。

MyISAM 默认的锁粒度是表级锁,所以并发性能比较差,加锁比较快,锁冲突比较少,不太容易发生死锁的情况。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wssjff.html