我们在 MySQL 入门篇主要介绍了基本的 SQL 命令、数据类型和函数,在局部以上知识后,你就可以进行 MySQL 的开发工作了,但是如果要成为一个合格的开发人员,你还要具备一些更高级的技能,下面我们就来探讨一下 MySQL 都需要哪些高级的技能
MySQL 存储引擎存储引擎概述数据库最核心的一点就是用来存储数据,数据存储就避免不了和磁盘打交道 。那么数据以哪种方式进行存储,如何存储是存储的关键所在 。所以存储引擎就相当于是数据存储的发动机,来驱动数据在磁盘层面进行存储 。
MySQL 的架构可以按照三层模式来理解
文章插图
存储引擎也是 MySQL 的组建,它是一种软件,它所能做的和支持的功能主要有
- 并发
- 支持事务
- 完整性约束
- 物理存储
- 支持索引
- 性能帮助
- MyISAM
- InnoDB
- BDB
- MEMORY
- MERGE
- EXAMPLE
- NDB Cluster
- ARCHIVE
- CSV
- BLACKHOLE
- FEDERATED
show variables like 'table_type';
文章插图
奇怪,为什么没有了呢?网上求证一下,在 5.5.3 取消了这个参数
可以通过下面两种方法查询当前数据库支持的存储引擎
show engines g
文章插图
在创建新表的时候,可以通过增加 ENGINE 关键字设置新建表的存储引擎 。
create table cxuan002(id int(10),name varchar(20)) engine = MyISAM;
文章插图
上图我们指定了 MyISAM 的存储引擎 。
如果你不知道表的存储引擎怎么办?你可以通过 show create table 来查看
文章插图
如果不指定存储引擎的话,从MySQL 5.1 版本之后,MySQL 的默认内置存储引擎已经是 InnoDB了 。建一张表看一下
文章插图
如上图所示,我们没有指定默认的存储引擎,下面查看一下表
文章插图
可以看到,默认的存储引擎是 InnoDB 。
如果你的存储引擎想要更换,可以使用
alter table cxuan003 engine = myisam;
来更换,更换完成后回显示 0 rows affected ,但其实已经操作成功文章插图
我们使用 show create table 查看一下表的 sql 就知道
文章插图
存储引擎特性下面会介绍几个常用的存储引擎以及它的基本特性,这些存储引擎是 **MyISAM、InnoDB、MEMORY 和 MERGE **
MyISAM在 5.1 版本之前,MyISAM 是 MySQL 的默认存储引擎,MyISAM 并发性比较差,使用的场景比较少,主要特点是
- 不支持事务操作,ACID 的特性也就不存在了,这一设计是为了性能和效率考虑的 。
- 不支持外键操作,如果强行增加外键,MySQL 不会报错,只不过外键不起作用 。
- MyISAM 默认的锁粒度是表级锁,所以并发性能比较差,加锁比较快,锁冲突比较少,不太容易发生死锁的情况 。
- MyISAM 会在磁盘上存储三个文件,文件名和表名相同,扩展名分别是 .frm(存储表定义)、.MYD(MYData,存储数据)、MYI(MyIndex,存储索引) 。这里需要特别注意的是 MyISAM 只缓存索引文件,并不缓存数据文件 。
- MyISAM 支持的索引类型有 全局索引(Full-Text)、B-Tree 索引、R-Tree 索引Full-Text 索引:它的出现是为了解决针对文本的模糊查询效率较低的问题 。B-Tree 索引:所有的索引节点都按照平衡树的数据结构来存储,所有的索引数据节点都在叶节点R-Tree索引:它的存储方式和 B-Tree 索引有一些区别,主要设计用于存储空间和多维数据的字段做索引,目前的 MySQL 版本仅支持 geometry 类型的字段作索引,相对于 BTREE,RTREE 的优势在于范围查找 。
推荐阅读
- Nacos数据持久化到MySQL
- |看完这条,在职场中你会比其他人都走得远!
- 广州市|裁判,悠着点,您的红牌可能毁了一个中国球员的职业生涯
- 心理测试:2020年你的运势怎么样
- 心理测试:情人节表白你会成功吗
- 喝什么茶能养胃?转给胃不好的你
- 用茶叶做菜,你试过吗?香的直流口水!
- 茶是健康之饮 你不应该因失眠而拒绝茶
- 饵料|不是隔夜窝没用,而是你没打好!天气变热,这样打窝才有效!
- 喝酒礼仪你有注意到吗